Microservices - teqînek hevbeş a guhertoyan

Silav Habr! Ez pêşkêşî we dikim wergera gotarê ya nivîskar Microservices - Teqîna Hevbeş a Guhertoyan.
Microservices - teqînek hevbeş a guhertoyan
Di demekê de ku cîhana IT hêdî hêdî ber bi mîkroxizmet û amûrên mîna Kubernetes ve diçe, tenê pirsgirêkek her ku diçe bêtir xuya dibe. Ev pirsgirêk - teqîna kombînatorî guhertoyên microservice. Dîsa jî, civaka IT-ê di wê baweriyê de ye ku rewşa heyî ji wê çêtir e "Dojehê girêdayîbûnê" nifşê berê yê teknolojiyê. Lêbelê, guhertoya mîkroxizmet pirsgirêkek pir tevlihev e. Yek delîlên vê yekê dikare gotarên mîna "Min yekdestiya min vegerîne".

Ger hûn dîsa jî pirsgirêkê bi xwendina vê nivîsê fêm nakin, bila ez şirove bikim. Em bibêjin ku hilbera we ji 10 mîkroxizmetan pêk tê. Naha em bihesibînin ku 1 guhertoyek nû ji bo her yek ji van mîkroservisan tê berdan. Tenê 1 guhertoya - Ez hêvî dikim ku em hemî dikarin bipejirînin ku ev rastiyek pir piçûk û ne girîng e. Naha, lêbelê, bila em li hilbera xwe dinêrin. Bi tenê guhertoyek nû ya her pêkhateyê, me naha 2^10 - an 1024 veguheztinên ku hilbera me dikare çawa pêk were hene.

Ger hîn jî xeletiyek hebe, bila ez matematîkê bişkînim. Ji ber vê yekê 10 mîkroxizmetên me hene, her yek nûvekirinek distîne. Ango, em ji bo her mîkroxizmetê 2 guhertoyên mimkun (yan kevn an nû) digirin. Naha, ji bo her yek ji pêkhateyên hilberê, em dikarin van her du guhertoyan bikar bînin. Ji hêla matematîkî ve, ew heman e ku heke me jimareyek binar ya 10 reqeman hebe. Mînakî, em bibêjin ku 1 guhertoya nû ye, û 0 guhertoya kevn e - wê hingê yek veguheztina gengaz dikare wekî 1001000000 were destnîşan kirin - ku pêkhateyên 1-emîn û 4-an têne nûve kirin, û yên din ne. Ji matematîkê em dizanin ku jimareyek binar ya 10-reqemî dikare 2^10 an jî 1024 nirxan hebe. Ango me pîvana hejmara ku em pê re mijûl dibin piştrast kir.

Ka em ramana xwe hîn bêtir bidomînin - heke 100 mîkroxizmetên me hebin û her yekê 10 guhertoyên gengaz hebin dê çi bibe? Tevahiya rewş pir ne xweş dibe - naha 10^100 guheztinên me hene - ku hejmareke pir mezin e. Lêbelê, ez tercîh dikim ku vê rewşê bi vî rengî bi nav bikim, ji ber ku êdî em ne li pişt peyvên mîna "kubernetes" vedişêrin, belkî em bi pirsgirêkê re rû bi rû ne.

Çima ez ewqas bi vê pirsgirêkê re meraq dikim? Beşek ji ber ku, ku berê di cîhana NLP û AI-ê de xebitîbû, me 5-6 sal berê pir li ser pirsgirêka teqîna hevberdanê nîqaş kir. Tenê li şûna versiyonan peyvên me yên takekesî hebûn, li şûna berheman jî hevok û paragraf hebûn. Û her çend pirsgirêkên NLP û AI-ê bi piranî bêçare dimînin, divê were pejirandin ku di van çend salên borî de pêşkeftinek girîng çêbûye. (bi dîtina min, dibe ku pêşkeftin çêbibeоDê çêtir be ku mirovên di pîşesaziyê de piçek hindiktir bala xwe bidin fêrbûna makîneyê û hinekî zêdetir bidin teknîkên din - lê ev jixwe ji mijarê dernakeve).

Werin em vegerin cîhana DevOps û mîkroservisan. Em bi pirsgirêkek mezin re rû bi rû ne, ku di Kunstkamera de wek fîlan rûdinin - ji ber ku tiştê ku ez pir caran dibihîzim ev e "tenê kubernetes û helmê bistînin, û her tişt dê baş be!" Lê na, heke her tişt wekî xwe were hiştin dê her tişt ne baş be. Wekî din, çareseriyek analîtîk ji bo vê pirsgirêkê ji ber tevliheviya wê nayê pejirandin. Wekî ku di NLP-ê de, divê em pêşî li vê pirsgirêkê bi tengkirina qada lêgerînê-di vê rewşê de, bi rakirina guheztinên kevnar ve nêz bibin.

Yek ji tiştên ku dibe alîkar tiştek e ku min sala borî nivîsî li ser hewcedariya ku di navbera guhertoyên ku ji bo xerîdaran hatine şandin de cûdahiyek hindiktirîn biparêzin. Di heman demê de girîng e ku meriv bala xwe bide ku pêvajoyek CI/CD-ya baş-sêwirandî di kêmkirina guhertoyan de pir dibe alîkar. Lêbelê, rewşa heyî ya bi CI/CD-ê re ne bes e ku pirsgirêka veguheztinê bêyî amûrên zêde ji bo hesabkirin û şopandina pêkhateyan çareser bike.

Tiştê ku em hewce ne pergalek ceribandinê ye di qonaxa entegrasyonê de, ku em dikarin faktora xetereyê ji bo her pêkhateyê destnîşan bikin, û di heman demê de pêvajoyek otomatîkî ji bo nûvekirina pêkhateyên cihêreng û ceribandina bêyî destwerdana operatorê heye - da ku bibînin ka çi dixebite û çi na.

Pergalek ceribandinên weha dikare bi vî rengî xuya bike:

  1. Pêşdebir ceribandinan dinivîsin (ev qonaxek krîtîk e - ji ber ku wekî din pîvanek me ya nirxandinê tune - ew mîna nîşankirina daneyan di fêrbûna makîneyê de ye).
  2. Her pêkhateyek (projeyek) pergala xweya CI-yê distîne - ev pêvajo naha baş pêşkeftî ye, û pirsgirêka afirandina pergalek CI-yê ji bo yek pêkhateyek bi piranî çareser bûye.
  3. "Pergala entegrasyona biaqil" encamên pergalên cihêreng CI berhev dike û projeyên pêkhateyê di hilbera paşîn de berhev dike, ceribandinê dimeşîne û di dawiyê de rêça herî kurt ji bo bidestxistina fonksiyona hilbera xwestî li ser bingeha hêmanên heyî û faktorên xetereyê hesab dike. Ger nûvekirin ne mumkin be, ev pergal pêşdebiran li ser pêkhateyên heyî û kîjan ji wan dibe sedema xeletiyê agahdar dike. Carek din, pergala testê li vir girîngiyek krîtîk e - ji ber ku pergala entegrasyonê ceribandinan wekî pîvanek nirxandinê bikar tîne.
  4. Pergala CD, ya ku dûv re daneyan ji Pergala Integrasyona Smart distîne û rasterast nûvekirinê pêk tîne. Ev qonax dewrê diqede.

Bi kurtasî, ji bo min yek ji pirsgirêkên herî mezin naha nebûna "Pergala Yekbûna Hişmend" e ku dê pêkhateyên cihêreng bi hilberek ve girêbide û bi vî rengî rê bide we ku hûn bişopînin ka hilber bi tevahî çawa li hev tê danîn. Ez ê bi ramanên civakê yên li ser vê yekê re eleqedar bibim (spoiler - Ez niha li ser projeyekê dixebitim Reliza, ku dikare bibe pergalek entegrasyonê ya wusa jîr).

Tiştek paşîn ku ez dixwazim behs bikim ev e ku, bi min, monolîtek ji bo her projeyek mezinahiya navîn jî nayê pejirandin. Ji bo min, hewildanên bilezkirina dema pêkanînê û kalîteya pêşkeftinê bi vegerandina yekparêziyê dibe sedema gumanek mezin. Ya yekem, monolîtek di rêvebirina hêmanan de pirsgirêkek wusa heye - di nav pirtûkxaneyên cihêreng ên ku ew ji wan pêk tê, di heman demê de, ev hemî ne ewqas berçav e û di serî de di dema ku ji hêla pêşdebiran ve hatî derbas kirin de xwe diyar dike. Encama pirsgirêka monolît nebûna virtual ya guherandina kodê ye - û leza pêşkeftinê ya zehf hêdî ye.

Mîkroxizmet rewşê baştir dike, lê dûv re mîmariya mîkroxizmetê di qonaxa entegrasyonê de bi pirsgirêka teqîna kombînatorî re rû bi rû dimîne. Belê, bi giştî me heman pirsgirêk ji qonaxa pêşketinê derbasî qonaxa entegrasyonê kir. Lêbelê, bi dîtina min, nêzîkatiya mîkroxizmet hîn jî dibe sedema encamên çêtir, û tîm zûtir encaman bi dest dixin (dibe ku bi giranî ji ber kêmbûna mezinahiya yekîneya pêşkeftinê - an mezinahiya hevîrê). Lêbelê, çûna ji monolîtê ber bi mîkroservisan ve hîna başbûnek têr ji pêvajoyê re neaniye - teqîna hevbeş a guhertoyên mîkroservis pirsgirêkek mezin e, û dema ku em wê çareser dikin potansiyela me heye ku em rewşê baştir bikin.

Source: www.habr.com

Add a comment