Microservices - usa ka combinatorial nga pagbuto sa mga bersyon

Hello, Habr! Gipresentar ko sa imong pagtagad hubad sa tagsulat sa artikulo Mga Microservice - Kombinatoryal nga Pagsabog sa mga Bersyon.
Microservices - usa ka combinatorial nga pagbuto sa mga bersyon
Sa panahon nga ang kalibutan sa IT anam-anam nga naglihok padulong sa mga microservice ug mga himan sama sa Kubernetes, usa ra ka problema ang nahimong labi ug labi ka mamatikdan. Kini nga problema- kombinatoryal nga pagbuto mga bersyon sa microservice. Bisan pa, ang komunidad sa IT nagtuo nga ang karon nga kahimtang labi ka maayo kaysa "Dependensya impyerno" miaging henerasyon sa mga teknolohiya. Bisan pa, ang pag-bersyon sa mga microservice usa ka komplikado nga problema. Ang usa ka pamatuod niini mahimong mga artikulo sama "Iuli nako akong monolith".

Kung dili pa nimo masabtan ang problema pinaagi sa pagbasa niini nga teksto, tugoti ako nga ipasabut. Ingnon ta nga ang imong produkto naglangkob sa 10 ka microservices. Karon isipon nato nga 1 ka bag-ong bersyon ang gipagawas alang sa matag usa niining mga microservice. 1 lang nga bersyon - Nanghinaut ko nga kitang tanan magkauyon nga kini usa ka gamay kaayo ug dili hinungdanon nga kamatuoran. Karon, bisan pa, atong tan-awon pag-usab ang among produkto. Uban sa usa lang ka bag-ong bersyon sa matag component, aduna na kitay 2^10 - o 1024 nga mga permutasyon kon unsaon paghimo ang atong produkto.

Kung aduna pa'y dili pagsinabtanay, tugoti ako sa pagbungkag sa matematika. Busa kami adunay 10 ka microservice, ang matag usa nakadawat og usa ka update. Sa ato pa, nakakuha kami 2 nga posible nga mga bersyon alang sa matag microservice (bisan karaan o bag-o). Karon, alang sa matag usa sa mga sangkap sa produkto, mahimo namong gamiton ang bisan hain niining duha ka bersyon. Sa matematika, parehas kini nga kung kita adunay usa ka binary nga numero nga 10 ka numero. Pananglitan, ingnon ta nga ang 1 mao ang bag-ong bersyon, ug ang 0 mao ang daan nga bersyon - unya ang usa ka posible nga permutation mahimong itudlo nga 1001000000 - diin ang 1st ug 4th nga mga sangkap gi-update, ug ang tanan nga uban wala. Gikan sa matematika nahibal-an nato nga ang usa ka 10-digit nga binary nga numero mahimong adunay 2^10 o 1024 nga mga kantidad. Sa ato pa, gikumpirma namon ang sukod sa gidaghanon nga among giatubang.

Atong ipadayon ang atong pangatarungan - unsa ang mahitabo kung kita adunay 100 ka microservices ug ang matag usa adunay 10 ka posibleng bersyon? Ang tibuok nga sitwasyon nahimong dili maayo - kita karon adunay 10^100 nga mga permutasyon - nga usa ka dako nga gidaghanon. Apan, mas gusto nako nga markahan kini nga sitwasyon sa ingon niini nga paagi, tungod kay karon wala na kita nagtago sa luyo sa mga pulong sama sa "kubernetes", apan nag-atubang na sa problema kung unsa kini.

Nganong nalingaw kaayo ko niini nga problema? Sa usa ka bahin tungod kay, nga nagtrabaho kaniadto sa kalibutan sa NLP ug AI, among gihisgutan ang problema sa combinatorial explosion mga 5-6 ka tuig na ang milabay. Imbes nga mga bersyon lamang kami adunay indibidwal nga mga pulong, ug imbes mga produkto kami adunay mga tudling-pulong ug mga parapo. Ug bisan kung ang mga problema sa NLP ug AI nagpabilin nga wala masulbad, kinahanglan nga dawaton nga ang hinungdanon nga pag-uswag nahimo sa miaging pipila ka tuig. (sa akong opinyon, ang pag-uswag mahimong mahimoΠΎMas maayo kung ang mga tawo sa industriya dili kaayo magtagad sa pagkat-on sa makina ug labi pa sa ubang mga teknik - apan wala na kini sa hilisgutan).

Mobalik ta sa kalibutan sa DevOps ug microservices. Nag-atubang kami sa usa ka dako nga problema, nga nagpakaaron-ingnon nga usa ka elepante sa Kunstkamera - tungod kay ang kanunay nakong madungog mao ang "kuhaa lang ang mga kubernetes ug timon, ug mamaayo ra ang tanan!" Apan dili, ang tanan dili maayo kung ang tanan magpabilin nga ingon. Dugang pa, ang usa ka analitikal nga solusyon sa kini nga problema ingon og dili madawat tungod sa pagkakomplikado niini. Sama sa NLP, kinahanglan una naton nga duolon kini nga problema pinaagi sa pagkunhod sa sakup sa pagpangita - sa kini nga kaso, pinaagi sa pagwagtang sa mga wala na sa panahon nga mga permutasyon.

Usa sa mga butang nga makatabang mao ang usa ka butang nga akong gisulat sa miaging tuig mahitungod sa panginahanglan sa pagpadayon sa usa ka minimum nga kalainan tali sa mga bersyon nga gibutang alang sa mga kliyente. Mahinungdanon usab nga timan-an nga ang usa ka maayong pagkadisenyo nga proseso sa CI/CD makatabang kaayo sa pagkunhod sa pagkalainlain. Bisan pa, ang karon nga kahimtang sa mga kalihokan sa CI / CD dili igo aron masulbad ang problema sa mga permutasyon nga wala’y dugang nga mga himan alang sa accounting ug pagsubay sa mga sangkap.

Ang atong gikinahanglan mao ang usa ka sistema sa pag-eksperimento sa yugto sa panagsama, diin atong mahibal-an ang risgo nga hinungdan sa matag component, ug usab adunay usa ka automated nga proseso alang sa pag-update sa nagkalain-laing mga component ug pagsulay nga walay operator nga interbensyon - aron makita kung unsa ang molihok ug unsa ang dili.

Ang ingon nga sistema sa mga eksperimento mahimong ingon niini:

  1. Ang mga developer nagsulat og mga pagsulay (kini usa ka kritikal nga yugto - tungod kay kung dili kami wala’y sukdanan sa pagtimbang-timbang - kini sama sa pag-label sa datos sa pagkat-on sa makina).
  2. Ang matag sangkap (proyekto) nakadawat sa kaugalingon nga sistema sa CI - kini nga proseso maayo na karon nga naugmad, ug ang isyu sa paghimo sa usa ka sistema sa CI alang sa usa ka sangkap nasulbad na.
  3. Ang "smart integration system" nagkolekta sa mga resulta sa nagkalain-laing mga CI system ug nag-assemble sa mga component projects ngadto sa kataposang produkto, nagpadagan sa testing ug sa kataposan nagkuwenta sa pinakamubo nga dalan aron makuha ang gitinguha nga product functionality base sa kasamtangan nga mga component ug risk factors. Kung dili mahimo ang usa ka pag-update, kini nga sistema nagpahibalo sa mga developer bahin sa naglungtad nga mga sangkap ug kung kinsa kanila ang hinungdan sa sayup. Sa makausa pa, ang sistema sa pagsulay hinungdanon kaayo dinhi - tungod kay ang sistema sa panagsama naggamit mga pagsulay ingon usa ka kriterya sa pagtimbang.
  4. CD system, nga makadawat dayon og datos gikan sa Smart Integration System ug direkta nga mopahigayon sa update. Kini nga yugto nagtapos sa siklo.

Sa pag-summarize, alang kanako usa sa labing dako nga problema karon mao ang kakulang sa ingon nga "Smart Integration System" nga mag-link sa lainlaing mga sangkap sa usa ka produkto ug sa ingon gitugotan ka nga masubay kung giunsa ang produkto sa kinatibuk-an gihiusa. Interesado ako sa mga hunahuna sa komunidad bahin niini (spoiler - Nagtrabaho ako karon sa usa ka proyekto Reliza, nga mahimong usa ka maalamon nga sistema sa panagsama).

Usa ka katapusan nga butang nga gusto nakong hisgutan mao nga, alang kanako, ang usa ka monolith dili madawat alang sa bisan unsang proyekto bisan sa usa ka medium nga gidak-on. Alang kanako, ang mga pagsulay sa pagpadali sa oras sa pagpatuman ug kalidad sa pag-uswag pinaagi sa pagbalik sa usa ka monolith hinungdan sa daghang pagduhaduha. Una, ang usa ka monolith adunay parehas nga problema sa pagdumala sa mga sangkap - taliwala sa lainlaing mga librarya nga gilangkuban niini, bisan pa, kining tanan dili kaayo mamatikdan ug nagpadayag sa iyang kaugalingon labi na sa oras nga gigugol sa mga developer. Ang sangputanan sa problema sa monolith mao ang virtual nga imposible sa paghimo sa mga pagbag-o sa code - ug labi ka hinay nga katulin sa pag-uswag.

Gipauswag sa mga microservice ang sitwasyon, apan ang arkitektura sa microservice nag-atubang sa problema sa combinatorial explosion sa yugto sa panagsama. Oo, sa kinatibuk-an, among gibalhin ang parehas nga problema gikan sa yugto sa pag-uswag hangtod sa yugto sa panagsama. Bisan pa, sa akong opinyon, ang pamaagi sa microservice nagdala gihapon sa mas maayo nga mga sangputanan, ug ang mga koponan nakakuha mga resulta nga mas paspas (tingali nag-una tungod sa pagkunhod sa gidak-on sa yunit sa pag-uswag - o gidak-on sa batch). Bisan pa, ang pagbalhin gikan sa monolith ngadto sa microservices wala pa makapauswag sa proseso - ang kombinasyon nga pagbuto sa mga bersyon sa microservice usa ka dako nga problema, ug kami adunay daghang potensyal nga mapaayo ang sitwasyon samtang among gisulbad kini.

Source: www.habr.com

Idugang sa usa ka comment