Sveiks, Habr! Es piedÄvÄju jÅ«su uzmanÄ«bu raksta autora tulkojums
LaikÄ, kad IT pasaule pamazÄm virzÄs uz tÄdiem mikropakalpojumiem un rÄ«kiem kÄ Kubernetes, arvien pamanÄmÄka kļūst tikai viena problÄma. Å Ä« problÄma -
Ja, izlasot Å”o tekstu, joprojÄm nesaprotat problÄmu, ļaujiet man paskaidrot. PieÅemsim, ka jÅ«su produkts sastÄv no 10 mikropakalpojumiem. Tagad pieÅemsim, ka katram no Å”iem mikropakalpojumiem ir izlaista 1 jauna versija. Tikai 1 versija - ceru, ka mÄs visi varam piekrist, ka tas ir ļoti triviÄls un nenozÄ«mÄ«gs fakts. TomÄr tagad vÄlreiz aplÅ«kosim mÅ«su produktu. Izmantojot tikai vienu jaunu katra komponenta versiju, mums tagad ir 2^10 jeb 1024 permutÄcijas, kÄ var izveidot mÅ«su produktu.
Ja joprojÄm ir kÄds pÄrpratums, ļaujiet man sadalÄ«t matemÄtiku. TÄtad mums ir 10 mikropakalpojumi, no kuriem katrs saÅem vienu atjauninÄjumu. Tas ir, mÄs iegÅ«stam 2 iespÄjamÄs versijas katram mikropakalpojumam (vai nu vecam, vai jaunam). Tagad katrai produkta sastÄvdaļai mÄs varam izmantot vienu no Ŕīm divÄm versijÄm. MatemÄtiski tas ir tÄpat kÄ tad, ja mums bÅ«tu 10 ciparu binÄrs skaitlis. PiemÄram, pieÅemsim, ka 1 ir jaunÄ versija, bet 0 ir vecÄ versija - tad vienu iespÄjamo permutÄciju var apzÄ«mÄt kÄ 1001000000 - kur 1. un 4. komponents tiek atjauninÄts, bet visi pÄrÄjie nav. No matemÄtikas mÄs zinÄm, ka 10 ciparu binÄram skaitlim var bÅ«t 2^10 vai 1024 vÄrtÄ«bas. Tas ir, mÄs esam apstiprinÄjuÅ”i skaitļa mÄrogu, ar kuru mums ir darÄ«Å”ana.
TurpinÄsim savu spriedumu tÄlÄk ā kas notiks, ja mums bÅ«s 100 mikropakalpojumi un katram bÅ«s 10 iespÄjamÄs versijas? Visa situÄcija kļūst diezgan nepatÄ«kama - tagad mums ir 10^100 permutÄcijas - tas ir milzÄ«gs skaits. TomÄr man labÄk patÄ«k Å”o situÄciju apzÄ«mÄt Å”Ädi, jo tagad mÄs vairs neslÄpjamies aiz tÄdiem vÄrdiem kÄ ākubernetesā, bet gan skatÄmies uz problÄmu tÄdu, kÄda tÄ ir.
KÄpÄc mani tik ļoti aizrauj Ŕī problÄma? DaļÄji tÄpÄc, ka, iepriekÅ” strÄdÄjot NLP un AI pasaulÄ, mÄs apmÄram pirms 5-6 gadiem daudz apspriedÄm kombinatoriskÄs sprÄdziena problÄmu. Tikai versiju vietÄ mums bija atseviŔķi vÄrdi, bet produktu vietÄ teikumi un rindkopas. Un, lai gan NLP un AI problÄmas lielÄkoties joprojÄm nav atrisinÄtas, jÄatzÄ«st, ka pÄdÄjos gados ir panÄkts ievÄrojams progress. (manuprÄt, progress varÄtu bÅ«tŠ¾BÅ«tu labÄk, ja nozares cilvÄki nedaudz mazÄk uzmanÄ«bas pievÄrstu maŔīnmÄcÄ«bai un nedaudz vairÄk citiem paÅÄmieniem ā bet tas jau ir Ärpus tÄmas).
AtgriezÄ«simies DevOps un mikropakalpojumu pasaulÄ. MÄs saskaramies ar milzÄ«gu problÄmu, maskÄjoties par ziloni KunstkamerÄ, jo bieži dzirdu: "VienkÄrÅ”i paÅemiet kubernetes un stÅ«ri, un viss bÅ«s kÄrtÄ«bÄ!" Bet nÄ, viss nebÅ«s labi, ja viss paliks kÄ ir. TurklÄt Ŕīs problÄmas analÄ«tisks risinÄjums neŔķiet pieÅemams tÄs sarežģītÄ«bas dÄļ. TÄpat kÄ NLP, mums vispirms vajadzÄtu pievÄrsties Å”ai problÄmai, saÅ”aurinot meklÄÅ”anas jomu, Å”ajÄ gadÄ«jumÄ novÄrÅ”ot novecojuÅ”as permutÄcijas.
Viena no lietÄm, kas varÄtu palÄ«dzÄt, ir tas, ko es uzrakstÄ«ju pagÄjuÅ”ajÄ gadÄ
Mums ir nepiecieÅ”ama eksperimentu sistÄma integrÄcijas posmÄ, kurÄ mÄs varam noteikt riska faktoru katram komponentam, kÄ arÄ« ir automatizÄts process dažÄdu komponentu atjauninÄÅ”anai un testÄÅ”anai bez operatora iejaukÅ”anÄs - lai redzÄtu, kas darbojas un kas ne.
Å Äda eksperimentu sistÄma varÄtu izskatÄ«ties Å”Ädi:
- IzstrÄdÄtÄji raksta testus (tas ir kritisks posms ā jo pretÄjÄ gadÄ«jumÄ mums nav vÄrtÄÅ”anas kritÄrija ā tas ir kÄ datu marÄ·ÄÅ”ana maŔīnmÄcÄ«bÄ).
- Katrs komponents (projekts) saÅem savu CI sistÄmu - Å”is process tagad ir labi attÄ«stÄ«ts, un lielÄ mÄrÄ ir atrisinÄts jautÄjums par CI sistÄmas izveidi vienam komponentam.
- āViedÄ integrÄcijas sistÄmaā apkopo dažÄdu CI sistÄmu rezultÄtus un komplektÄ komponentu projektus galaproduktÄ, veic testÄÅ”anu un visbeidzot aprÄÄ·ina Ä«sÄko ceļu lÄ«dz vÄlamÄs produkta funkcionalitÄtes iegÅ«Å”anai, pamatojoties uz esoÅ”ajiem komponentiem un riska faktoriem. Ja atjauninÄjums nav iespÄjams, Ŕī sistÄma informÄ izstrÄdÄtÄjus par esoÅ”ajiem komponentiem un to, kurÅ” no tiem izraisa kļūdu. PÄrbaužu sistÄmai Å”eit atkal ir izŔķiroÅ”a nozÄ«me - jo integrÄcijas sistÄma izmanto testus kÄ vÄrtÄÅ”anas kritÄriju.
- CD sistÄma, kas pÄc tam saÅem datus no viedÄs integrÄcijas sistÄmas un tieÅ”i veic atjauninÄÅ”anu. Å is posms beidz ciklu.
RezumÄjot, man Å”obrÄ«d viena no lielÄkajÄm problÄmÄm ir tÄdas āViedÄs integrÄcijas sistÄmasā trÅ«kums, kas saistÄ«tu dažÄdas sastÄvdaļas produktÄ un tÄdÄjÄdi ļautu izsekot, kÄ produkts kopumÄ tiek salikts. Mani interesÄs kopienas domas par Å”o (spoileris - paÅ”laik strÄdÄju pie projekta
PÄdÄjais, ko es vÄlos pieminÄt, ir tas, ka, manuprÄt, monolÄ«ts nav pieÅemams nevienam pat vidÄja izmÄra projektam. ManÄ skatÄ«jumÄ lielu skepsi izraisa mÄÄ£inÄjumi paÄtrinÄt ievieÅ”anas laiku un izstrÄdes kvalitÄti, atgriežoties pie monolÄ«ta. PirmkÄrt, monolÄ«tam ir lÄ«dzÄ«ga komponentu pÄrvaldÄ«bas problÄma - starp dažÄdÄm bibliotÄkÄm, no kurÄm tas sastÄv, tomÄr tas viss nav tik pamanÄms un galvenokÄrt izpaužas izstrÄdÄtÄju pavadÄ«tajÄ laikÄ. MonolÄ«ta problÄmas sekas ir virtuÄla neiespÄjamÄ«ba veikt izmaiÅas kodÄ un ÄrkÄrtÄ«gi lÄns izstrÄdes Ätrums.
Mikropakalpojumi situÄciju uzlabo, bet tad mikropakalpojumu arhitektÅ«ra integrÄcijas stadijÄ saskaras ar kombinatoriskÄs eksplozijas problÄmu. JÄ, kopumÄ mÄs to paÅ”u problÄmu esam pÄrcÄluÅ”i no izstrÄdes stadijas uz integrÄcijas posmu. TaÄu, manuprÄt, mikropakalpojumu pieeja tomÄr noved pie labÄkiem rezultÄtiem, un komandas ÄtrÄk sasniedz rezultÄtus (iespÄjams, galvenokÄrt tÄpÄc, ka samazinÄs izstrÄdes vienÄ«bas apjoms - vai partijas lielums). TaÄu pÄreja no monolÄ«ta uz mikropakalpojumiem vÄl nav pietiekami uzlabojusi procesu ā mikropakalpojumu versiju kombinatoriskais sprÄdziens ir milzÄ«ga problÄma, un mums ir liels potenciÄls situÄciju uzlabot, to risinot.
Avots: www.habr.com