Tere, Habr! Esitleme teile autori tÔlgitud artiklit .

Aegadel, mil IT maailm ĂŒha enam mikroteenustele ja sellistele tööriistadele nagu Kubernetes ĂŒle lĂ€heb, muutub ĂŒha silmatorkavamaks ĂŒks probleem. See probleem on mikroteenuste versioonides. Siiski usub IT kogukond, et tĂ€nane olukord on oluliselt parem kui eelmistest tehnoloogiate pĂ”lvkondadest. Siiski on mikroteenuste versioonide haldamine keeruline probleem. Ăhe tĂ”endina selle kohta vĂ”ivad teenida artiklid, nagu .
Kui te lugedes seda teksti ei mĂ”ista probleemi, lubage mul seda selgitada. Oletame, et teie toode koosneb 10 mikroteenusest. NĂŒĂŒd oletame, et igaĂŒhele neist mikroteenustest tuleb vĂ€lja 1 uus versioon. Ainult 1 versioon â loodan, et me kĂ”ik saame kokku leppida, et see on vĂ€gagi triviaalne ja ebaoluline fakt. NĂŒĂŒd vaatame aga uuesti meie toodet. Ăheainsa uue versiooniga iga komponendi jaoks oleme nĂŒĂŒd omandanud 2^10 â ehk 1024 permutatsiooni, kuidas meie toodet kokku panna.
Kui teie arusaam pole ikka veel selge, lubage mul matemaatika lahti harutada. Nii et meil on 10 mikroteenust, igaĂŒks saab ĂŒhe uuenduse. See tĂ€hendab, et iga mikroteenuse kohta on meil 2 vĂ”imalikku versiooni (kas vana vĂ”i uus). NĂŒĂŒd, iga komponendi puhul saame kasutada kas ĂŒhte neist kahest versioonist. Matemaatiliselt on see sama, kui meil oleks 10-kohaline binaarnumber. NĂ€iteks oletame, et 1 on uus versioon ja 0 on vana versioon â siis vĂ”ib ĂŒhte permutatsiooni tĂ€histada kui 1001000000 â kus 1. ja 4. komponent on uuendatud, ja kĂ”ik teised mitte. Matemaatikast teame, et 10-kohaline binaarnumber vĂ”ib omada 2^10 ehk 1024 erinevat vÀÀrtust. See tĂ€hendab, et oleme kinnitanud, millega tegeleda.
JĂ€tkame arutlemist edasi â mis juhtub, kui meil on 100 mikroteenust ja igal neist 10 vĂ”imalikku versiooni? Kogu olukord muutub vĂ€ga ebameeldivaks â nĂŒĂŒd on meil 10^100 permutatsiooni â ja see on tohutu number. Siiski eelistan ma selle olukorra nii nimetada, sest nĂŒĂŒd me ei peida end selliste sĂ”nade nagu «kubernetes» taha, vaid kohtume probleemiga otse.
Miks see probleem mind nii paelub? Osaliselt seetĂ”ttu, et töötades varem NLP ja AI maailmas, arutasime me palju kombinatoorse plahvatuse probleemi umbes 5â6 aastat tagasi. Ainult et versioonide asemel olid meil eraldi sĂ”nad ja toodete asemel lĂ”igud ja paragrahvid. Ja kuigi NLP ja AI probleemid jÀÀvad suures osas lahendamata, tuleb tunnistada, et viimase paari aasta jooksul on saavutatud mĂ€rkimisvÀÀrne edusamm (minu arvates oleks edusamm vĂ”inud olla suurem, kui valdkonna inimesed oleksid natuke vĂ€hem tĂ€helepanu pööranud masinĂ”ppele ja natuke rohkem teistele tehnikatele â aga see on juba off-topic).oTagasi DevOps ja mikroteenuste maailma. Meie ees seisab tohutu probleem, mis varjab end nagu elevant Kunstkambris â sest sageli kuuleme: «vĂ”ta lihtsalt kubernetes ja helm, ja kĂ”ik lĂ€heb hĂ€sti!» Aga ei, kĂ”ik ei lĂ€he hĂ€sti, kui me kĂ”ik jĂ€tame endise olukorra. Veelgi enam, selle probleemi analĂŒĂŒtiline lahendus ei tundu olevat aktsepteeritav keerukuse tĂ”ttu. Nii nagu NLP-s, peaksime ka me enne selle probleemi lahendamist lĂ€henema otsinguala kitsendamisega â sel korral ajalooliste permutatsioonide vĂ€listamise kaudu.
Ăks asi, mis vĂ”ib aidata â kirjutasin mullu
vaja hoida minimaalset kĂ”ikumist klientide jaoks avaldatud versioonide vahel Mida me vajame â on katsetuste sĂŒsteem integreerimise etapis, kus saaksime mÀÀrata riskifaktori iga komponendi kohta, samuti omada automatiseeritud erinevate komponentide uuendamise ja testimise protsessi ilma operaatori sekkumiseta â et nĂ€ha, mis töötab ja mis mitte.
Selline katsetuste sĂŒsteem vĂ”iks vĂ€lja nĂ€ha nii:
Arendajad kirjutavad teste (see on kriitiline etapp â sest vastasel korral pole meil hindamisnĂ€itajat â see on just nagu andmete mĂ€rgistus masinĂ”ppes).
- Igal komponendil (projekt) on oma CI sĂŒsteem â see protsess on tĂ€napĂ€eval hĂ€sti arenenud ja kĂŒsimus CI sĂŒsteemi loomise kohta ĂŒheainsa komponendi jaoks on suures osas lahendatud.
- Iga komponent (projekt) saab oma isikliku CI-sĂŒsteemi - see protsess on tĂ€na hĂ€sti vĂ€lja töötatud ja kĂŒsimus CI-sĂŒsteemi loomise kohta ĂŒheainsa komponendi jaoks on suures osas lahendatud.
- «TarkussĂŒsteem» kogub kokku erinevate CI-sĂŒsteemide tulemused ja koostab komponentprojektid lĂ”plikuks tooteks, kĂ€ivitab testimise ja arvutab lĂ”puks vĂ€lja lĂŒhima tee vajaliku toote funktsionaalsuse saavutamiseks, lĂ€htudes olemasolevatest komponentidest ja riskiteguritest. Kui uuendust ei saa teostada, teavitab see sĂŒsteem arendajaid olemasolevatest komponentidest ja milles tekib viga. Kordan veel kord, et testide sĂŒsteem on siin kriitilise tĂ€htsusega â kuna integreerimissĂŒsteem kasutab teste hindamiskriteeriumina.
- CD-sĂŒsteem, mis seejĂ€rel saab andmeid «TarkussĂŒsteemist» ja teostab otse uuenduse. See etapp lĂ”petab tsĂŒkli.
KokkuvĂ”tteks, ĂŒks suurimaid probleeme minu jaoks praegu on sellise «TarkussĂŒsteemi» puudumine, mis ĂŒhendaks erinevad komponendid tooteks ja seega vĂ”imaldaks jĂ€lgida, kuidas toode ĂŒldiselt kokku on pandud. Mind huvitavad kogukonna mĂ”tted selle kohta (spooiler â praegu töötan projekti , mis vĂ”ib saada selliseks tarkussĂŒsteemiks).
Viimane asi, mida tahan mainida, on see, et minu jaoks ei ole monoliit mis tahes keskmise suurusega projekti jaoks vastuvĂ”etav. Olen suur skeptik katsetes kiirendada tegevusaega ja arenduse kvaliteeti, naastes monoliidi juurde. Esiteks, monoliidil on sarnane probleem komponentide haldamise osas â erinevate raamatukogude seas, millest see koosneb, kuid kĂ”ik see ei ole nii mĂ€rgatav ja avaldub eelkĂ”ige ajas, mille arendajad kulutavad. Monoliidi probleemide tagajĂ€rg on tegelik koodimuudatuste vĂ”imatus â ja ÀÀrmiselt aeglane arenduskiirus.
Mikroteenuseid ĂŒhendavad probleemid, kuid seejĂ€rel seisab mikroteenuste arhitektuur silmitsi kombinatoorse plahvatuse probleemiga integreerimise etapis. Jah, oleme pĂ”himĂ”tteliselt viinud sama probleemi arenduselt integreerimise etapile. Kuid minu arvates toob mikroteenuste lĂ€henemine siiski paremaid tulemusi ning meeskonnad saavutavad tulemusi kiiremini (tĂ”enĂ€oliselt peamiselt seetĂ”ttu, et arenduse yksuse suurus on vĂ€henenud â vĂ”i batch size). Siiski ei ole ĂŒleminek monoliidilt mikroteenustele veel tooteprotsessi piisavalt parandanud â mikroteenuste versioonide kombinatoorne plahvatus on tohutu probleem ning meil on suur potentsiaal olukorra parendamiseks selle lahendamisel.
Allikas: habr.com
