DevOps definÄ«cija ir ļoti sarežģīta, tÄpÄc mums katru reizi jÄsÄk diskusija par to no jauna. Par Å”o tÄmu ir tÅ«kstoÅ” publikÄciju tikai par HabrÄ. Bet, ja lasÄt Å”o, jÅ«s droÅ”i vien zinÄt, kas ir DevOps. Jo es neesmu. Sveiki, mans vÄrds ir Aleksandrs Titovs (@osminog), un mÄs tikai runÄsim par DevOps, un es dalÄ«Å”os savÄ pieredzÄ.
Ilgi domÄju, kÄ padarÄ«t savu stÄstu noderÄ«gu, tÄpÄc Å”eit bÅ«s daudz jautÄjumu - gan to, ko uzdodu sev, gan to, ko uzdodu mÅ«su uzÅÄmuma klientiem. Atbildot uz Å”iem jautÄjumiem, izpratne kļūst labÄka. Es jums pastÄstÄ«Å”u, kÄpÄc DevOps ir vajadzÄ«gs no mana viedokļa, kas tas ir, atkal no mana viedokļa, un kÄ saprast, ka jÅ«s atkal virzÄties uz DevOps no mana viedokļa. PÄdÄjais punkts bÅ«s caur jautÄjumiem. Atbildot uz tiem pats, jÅ«s varat saprast, vai jÅ«su uzÅÄmums virzÄs uz DevOps, vai ir kaut kÄdÄ veidÄ problÄmas.
Savulaik es braucu uz apvienoÅ”anÄs un pÄrÅemÅ”anas viļÅiem. PirmkÄrt, es strÄdÄju nelielÄ startup ar nosaukumu Qik, pÄc tam to nopirka nedaudz lielÄks uzÅÄmums Skype, kuru pÄc tam nopirka nedaudz lielÄks uzÅÄmums ar nosaukumu Microsoft. TajÄ brÄ«dÄ« es sÄku redzÄt, kÄ DevOps ideja transformÄjas dažÄda lieluma uzÅÄmumos. PÄc tam man radÄs interese paskatÄ«ties uz DevOps no tirgus viedokļa, un mÄs ar kolÄÄ£iem nodibinÄjÄm uzÅÄmumu Express 42. Jau 6 gadus mÄs virzÄmies pa tirgus viļÅiem.
Cita starpÄ esmu viens no DevOps Maskavas kopienas organizatoriem un DevOps-Days 2017 organizators, bet 2018. gadu neorganizÄju. Express 42 strÄdÄ ar daudziem uzÅÄmumiem. MÄs tur audzÄjam DevOps, skatÄmies, kÄ tas notiek, izdarÄm secinÄjumus, analizÄjam, stÄstÄm visiem savus secinÄjumus un apmÄcÄm cilvÄkus DevOps praksÄ. KopumÄ mÄs darÄm visu iespÄjamo, lai palielinÄtu savu pieredzi un zinÄÅ”anas Å”ajÄ jomÄ.
KÄpÄc DevOps
Pirmais jautÄjums, kas vajÄ visus un vienmÄr ir ā kÄpÄc? Daudzi cilvÄki domÄ, ka DevOps ir tikai automatizÄcija vai lÄ«dzÄ«ga lieta, kas jau bija katram uzÅÄmumam.
ā Mums bija nepÄrtraukta integrÄcija ā tas nozÄ«mÄ, ka mums jau bija DevOps, un kÄpÄc tas viss ir vajadzÄ«gs? ViÅi izklaidÄjas ÄrzemÄs, bet mums traucÄ strÄdÄt!
9 kopienas un metodoloÄ£ijas attÄ«stÄ«bas laikÄ jau ir kļuvis skaidrs, ka tas joprojÄm nav mÄrketinga mirdzums, taÄu joprojÄm nav lÄ«dz galam skaidrs, kÄpÄc tas ir vajadzÄ«gs. TÄpat kÄ jebkuram rÄ«kam un procesam, arÄ« DevOps ir konkrÄti mÄrÄ·i, kurus tas galu galÄ sasniedz.
Tas viss ir saistÄ«ts ar to, ka pasaule mainÄs. ViÅÅ” attÄlinÄs no uzÅÄmuma pieejas, kad uzÅÄmumi virzÄs taisnÄ ceÄ¼Ä uz sapni, kÄ dziedÄja mÅ«su SanktpÄterburgas klasika, no punkta A uz punktu B pÄc noteiktas stratÄÄ£ijas, ar noteiktu Å”im nolÅ«kam uzbÅ«vÄtu struktÅ«ru.
PrincipÄ viss IT ir jÄbÅ«vÄ pÄc Ŕīs pieejas. Å eit IT tiek izmantota tikai procesu automatizÄÅ”anai.
AutomatizÄcija nemainÄs bieži, jo, kad uzÅÄmums iet pa labi iestaigÄtu slieksni, ko tur mainÄ«t? Tas darbojas - nepieskarieties tam. Tagad pieejas pasaulÄ mainÄs, un tas, ko sauc par Agile, liecina, ka gala punkts B nav uzreiz redzams.
Kad uzÅÄmums iet cauri tirgum, strÄdÄ ar klientu, tas pastÄvÄ«gi pÄta tirgu un maina beigu punktu B. TurklÄt, jo biežÄk uzÅÄmums maina savu virzienu, jo veiksmÄ«gÄks tas galu galÄ ir, jo tas izvÄlas vairÄk tirgus. niÅ”as.
StratÄÄ£iju demonstrÄ interesants uzÅÄmums, par kuru es nesen uzzinÄju. One Box Shave ir abonÄts skuvekļu un skÅ«Å”anÄs piederumu piegÄdes pakalpojums kastÄ. ViÅi zina, kÄ pielÄgot savu ākastÄ«tiā dažÄdiem klientiem. To veic noteikta programmatÅ«ra, kas pÄc tam nosÅ«ta pasÅ«tÄ«jumu uz Korejas rÅ«pnÄ«cu, kas ražo preces.
Å o produktu Unilever iegÄdÄjÄs par 1 miljardu dolÄru. Tagad tas konkurÄ ar Gillette un ir atÅÄmis ievÄrojamu daļu patÄrÄtÄju Amerikas tirgÅ«. One Box Shave saka:
ā 4 asmeÅi? Tu nopietni? KÄpÄc jums tas ir vajadzÄ«gs - tas neuzlabo skÅ«Å”anÄs kvalitÄti. ÄŖpaÅ”i izvÄlÄts krÄms, aromÄts un augstas kvalitÄtes skuveklis ar diviem asmeÅiem atrisina daudz vairÄk problÄmu nekÄ tie stulbie 4 Gillette asmeÅi! Vai drÄ«z tiksim lÄ«dz 10?
TÄ pasaule mainÄs. Unilever apgalvo, ka viÅiem ir forÅ”a IT sistÄma, kas ļauj to izdarÄ«t. Galu galÄ tas izskatÄs pÄc koncepcijas Laiks tirgoties, par ko neviens jau nav runÄjis.
Noteikuma Time-to-market nozÄ«me nav tÄ, cik bieži mÄs to izvietojam. JÅ«s bieži varat izvietot, taÄu izlaiÅ”anas cikli bÅ«s garÅ”. Ja trÄ«s mÄneÅ”u izlaiÅ”anas cikli tiek uzlikti viens otram, pÄrbÄ«dot tos par nedÄļu, izrÄdÄs, ka uzÅÄmums, Ŕķiet, izvieto reizi nedÄļÄ. Un no idejas lÄ«dz galÄ«gai realizÄcijai paiet 3 mÄneÅ”i.
Laiks lÄ«dz tirgum ir laika samazinÄÅ”ana no idejas lÄ«dz galÄ«gajai Ä«stenoÅ”anai.
Å ajÄ gadÄ«jumÄ programmatÅ«ra mijiedarbojas ar tirgu. TÄdÄ veidÄ One Box Shave vietne mijiedarbojas ar klientu. ViÅiem nav pÄrdevÄju ā tikai vietne, kurÄ apmeklÄtÄji noklikŔķina un atstÄj vÄlmes. AttiecÄ«gi kaut kas jauns ir pastÄvÄ«gi jÄpublicÄ vietnÄ un jÄatjaunina atbilstoÅ”i vÄlmÄm. PiemÄram, DienvidkorejÄ viÅi skÅ«st savÄdÄk nekÄ KrievijÄ, un viÅiem patÄ«k nevis priedes, bet, piemÄram, burkÄnu un vaniļas smarža.
TÄ kÄ ir nepiecieÅ”ams Ätri mainÄ«t vietnes saturu, programmatÅ«ras izstrÄde ievÄrojami mainÄs. Izmantojot programmatÅ«ru, mums ir jÄnoskaidro, ko klients vÄlas. IepriekÅ” mÄs to uzzinÄjÄm, izmantojot dažus apļveida ceļus, piemÄram, izmantojot biznesa vadÄ«bu. Tad mÄs to izstrÄdÄjÄm, ielikÄm prasÄ«bas IT sistÄmÄ, un viss bija forÅ”i. Tagad ir savÄdÄk ā programmatÅ«ru izstrÄdÄ visi procesÄ iesaistÄ«tie, arÄ« inženieri, jo, izmantojot tehniskÄs specifikÄcijas, viÅi uzzina, kÄ darbojas tirgus, un arÄ« dalÄs savÄs atziÅÄs ar uzÅÄmumu.
PiemÄram, Qik mÄs pÄkÅ”Åi uzzinÄjÄm, ka cilvÄkiem ļoti patÄ«k augÅ”upielÄdÄt kontaktpersonu sarakstus serverÄ«, un viÅi mums piegÄdÄja lietojumprogrammu. SÄkumÄ mÄs par to nedomÄjÄm. KlasiskÄ uzÅÄmumÄ visi bÅ«tu nosprieduÅ”i, ka tÄ ir kļūda, jo specifikÄcijÄ nebija teikts, ka tai vajadzÄtu darboties lieliski, un parasti tÄ tika ieviesta uz ceļa, viÅi bÅ«tu izslÄguÅ”i Å”o funkciju un sacÄ«juÅ”i: āNevienam tas nav vajadzÄ«gs, pats galvenais, lai darbojas galvenÄ funkcionalitÄte.ā . Un tehnoloÄ£iju uzÅÄmums to uztver kÄ iespÄju un sÄk mainÄ«t programmatÅ«ru atbilstoÅ”i tai.
OrganizÄciju, kas izveido sistÄmu, ierobežo dizains, kas atkÄrto Ŕīs organizÄcijas komunikÄcijas struktÅ«ru.
SÄ«kÄk, lai ražotu cita veida sistÄmas, jums ir jÄbÅ«t arÄ« komunikÄcijas struktÅ«rai cita veida uzÅÄmumÄ. Ja jÅ«su komunikÄcijas struktÅ«ra ir augstÄkÄ hierarhiskÄ, tad tas neļaus jums izveidot sistÄmas, kas var nodroÅ”inÄt ļoti augstu Time-to-Market indikatoru.
lasÄ«t par Konveja likumu viens var caur saitÄm. Tas ir svarÄ«gi, lai izprastu DevOps kultÅ«ru vai filozofiju, jo vienÄ«gais, kas bÅ«tiski mainÄs DevOps, ir komunikÄcijas struktÅ«ra starp komandÄm.
No procesa viedokļa pirms DevOps visi posmi: analÄ«ze, izstrÄde, testÄÅ”ana, darbÄ«ba bija lineÄri.
DevOps gadÄ«jumÄ visi Å”ie procesi notiek vienlaicÄ«gi.
Laiks lÄ«dz tirgum ir vienÄ«gais veids, kÄ to var izdarÄ«t. CilvÄkiem, kuri strÄdÄja vecajÄ procesÄ, tas izskatÄs nedaudz kosmiski, un kopumÄ tas tÄ ir.
TÄtad, kÄpÄc jums ir nepiecieÅ”ams DevOps?
DigitÄlo produktu izstrÄdei. Ja jÅ«su uzÅÄmumam nav digitÄlÄ produkta, DevOps nav vajadzÄ«gs - tas ir ļoti svarÄ«gi.
DevOps pÄrvar secÄ«gas programmatÅ«ras ražoÅ”anas Ätruma ierobežojumus. TajÄ visi procesi notiek vienlaicÄ«gi.
GrÅ«tÄ«bas palielinÄs. Kad DevOps evaÅÄ£Älisti jums saka, ka tas atvieglos programmatÅ«ras izlaiÅ”anu, tas ir muļķības.
Izmantojot DevOps, lietas kļūs tikai sarežģītÄkas.
KonferencÄ pie Avito stenda varÄja redzÄt, kÄ bija izvietot Docker konteineru ā nereÄls uzdevums. GrÅ«tÄ«bas kļūst pÄrmÄrÄ«gas; jums ir jÄžonglÄ ar daudzÄm bumbiÅÄm vienlaikus.
DevOps pilnÄ«bÄ maina procesu un organizÄciju uzÅÄmumÄ ā precÄ«zÄk, mainÄs nevis DevOps, bet gan digitÄlais produkts. Lai piekļūtu DevOps, jums joprojÄm ir pilnÄ«bÄ jÄmaina Å”is process.
JautÄjumi speciÄlistam
Kas tev ir? JautÄjumi, kurus varat uzdot sev, strÄdÄjot uzÅÄmumÄ un attÄ«stoties kÄ speciÄlistam.
Vai jums ir stratÄÄ£ija digitÄlÄ produkta izveidei? Ja ir, tas jau ir labi. Tas nozÄ«mÄ, ka jÅ«su uzÅÄmums virzÄs uz DevOps.
Vai jÅ«su uzÅÄmums jau rada digitÄlu produktu? Tas nozÄ«mÄ, ka varat pacelties vÄl vienu lÄ«meni augstÄk un darÄ«t lietas interesantÄk ā atkal no DevOps viedokļa. Es runÄju tikai no Ŕī viedokļa.
Vai jÅ«su uzÅÄmums ir viens no tirgus lÄ«deriem digitÄlo produktu niÅ”Ä? Spotify, Yandex, Uber ir uzÅÄmumi, kas Å”obrÄ«d atrodas tehnoloÄ£iskÄ progresa virsotnÄ.
Uzdodiet sev Å”os jautÄjumus, un, ja visas atbildes ir nÄ, varbÅ«t jums nevajadzÄtu veikt DevOps Å”ajÄ uzÅÄmumÄ. Ja DevOps tÄma jums patieÅ”Äm ir interesanta, varbÅ«t... jums vajadzÄtu pÄriet uz citu uzÅÄmumu? Ja jÅ«su uzÅÄmums vÄlas iedziļinÄties DevOps, bet jÅ«s uz visiem jautÄjumiem atbildÄjÄt āNÄā, tad tas ir kÄ tas skaistais degunradzis, kas nekad nemainÄ«sies.
OrganizÄÅ”ana
KÄ jau teicu, saskaÅÄ ar Konveja likumu mainÄs uzÅÄmuma organizÄcija. SÄkÅ”u ar to, kas neļauj DevOps iekļūt uzÅÄmumÄ no organizatoriskÄ viedokļa.
"Aku" problÄma
Angļu vÄrds "Silo" Å”eit tiek tulkots krievu valodÄ kÄ "labi". Å Ä«s problÄmas bÅ«tÄ«ba ir tÄda starp komandÄm nenotiek informÄcijas apmaiÅa. Katra komanda dziļi iedziļinÄs savÄ zinÄÅ”anÄ, neveidojot kopÄ«gu navigÄcijas karti.
SavÄ ziÅÄ tas man atgÄdina cilvÄku, kurÅ” tikko ieradies MaskavÄ un vÄl nezina, kÄ orientÄties metro kartÄ. MaskavieÅ”i parasti ļoti labi zina savu rajonu, un visÄ MaskavÄ viÅi var pÄrvietoties, izmantojot metro karti. Pirmo reizi ierodoties MaskavÄ, jums nav Ŕīs prasmes, un jÅ«s vienkÄrÅ”i esat dezorientÄts.
DevOps iesaka pÄrvarÄt Å”o dezorientÄcijas brÄ«di un visiem departamentiem strÄdÄt kopÄ, lai izveidotu kopÄ«gu mijiedarbÄ«bas karti.
To kavÄ divi faktori.
UzÅÄmuma vadÄ«bas sistÄmas sekas. Tas ir iebÅ«vÄts atseviŔķÄs hierarhiskÄs "akÄs". PiemÄram, uzÅÄmumos, kas atbalsta Å”o sistÄmu, ir noteikti KPI. No otras puses, traucÄ cilvÄka smadzenes, kurÄm ir grÅ«ti iziet Ärpus savas kompetences robežÄm un orientÄties visÄ sistÄmÄ. Tas ir vienkÄrÅ”i neÄrti. IedomÄjieties, ka atrodaties Bangkokas lidostÄ ā jÅ«s Ätri neatradÄ«sit orientÄÅ”anos. DevOps ir arÄ« grÅ«ti orientÄties, un tÄpÄc cilvÄki saka, ka ir jÄatrod ceļvedis, lai tur nokļūtu.
Bet pats svarÄ«gÄkais ir tas, ka āakuā problÄma inženierim, kurÅ” ir piesÄtinÄts ar DevOps garu, ir izlasÄ«jis Fauleru un vÄl virkni citu grÄmatu, izpaužas faktÄ, ka "akas" neļauj darÄ«t "acÄ«mredzamas" lietas. MÄs bieži sanÄkam kopÄ pÄc DevOps Moscow, runÄjam viens ar otru, un cilvÄki sÅ«dzas:
ā MÄs tikai gribÄjÄm uzsÄkt CI, bet izrÄdÄ«jÄs, ka vadÄ«bai tas nav vajadzÄ«gs.
Tas notiek tieÅ”i tÄpÄc CI Šø NepÄrtraukts piegÄdes process atrodas uz daudzu izmeklÄjumu robežas. VienkÄrÅ”i nepÄrvarot āakuā problÄmu organizÄcijas lÄ«menÄ«, tu nevarÄsi virzÄ«ties uz priekÅ”u, lai ko tu darÄ«tu un lai cik skumji tas bÅ«tu.
Katrs procesa dalÄ«bnieks uzÅÄmumÄ: backend un frontend izstrÄdÄtÄji, testÄÅ”ana, DBA, darbÄ«ba, tÄ«kls, rok savÄ virzienÄ, un nevienam nav kopÄ«gas kartes, izÅemot vadÄ«tÄju, kurÅ” viÅus kaut kÄ uzrauga un pÄrvalda, izmantojot āsadalÄ«t un iekarotā metodi.
CilvÄki cÄ«nÄs par kaut kÄdÄm zvaigznÄm vai karogiem, katrs rok savas zinÄÅ”anas.
RezultÄtÄ, kad rodas uzdevums to visu savienot kopÄ un bÅ«vÄt kopÄ«gu cauruļvadu, un vairs nav jÄcÄ«nÄs par zvaigznÄm un karogiem, rodas jautÄjums - ko tad tomÄr darÄ«t? Mums kaut kÄ jÄpanÄk vienoÅ”anÄs, bet skolÄ mums neviens nemÄcÄ«ja, kÄ to darÄ«t. Mums jau kopÅ” skolas laikiem mÄca: astotÄ klase - wow! - salÄ«dzinot ar septÄ«to klasi! Å eit ir tas pats.
Vai jÅ«su uzÅÄmumÄ tas ir tÄpat?
Lai to pÄrbaudÄ«tu, varat uzdot sev Å”Ädus jautÄjumus.
Vai komandas izmanto kopÄ«gus rÄ«kus un veicina izmaiÅas Å”ajos kopÄ«gajos rÄ«kos?
Cik bieži komandas tiek reorganizÄtas ā daži speciÄlisti no vienas komandas pÄriet uz citu komandu? DevOps vidÄ tas kļūst normÄli, jo dažreiz cilvÄks vienkÄrÅ”i nevar saprast, ko dara cita kompetences joma. ViÅÅ” pÄriet uz citu nodaļu, strÄdÄ tur divas nedÄļas, lai izveidotu sev orientÄÅ”anÄs un mijiedarbÄ«bas karti ar Å”o nodaļu.
Vai ir iespÄjams izveidot pÄrmaiÅu komisiju un mainÄ«t lietas? Vai arÄ« tam nepiecieÅ”ama augstÄkÄs vadÄ«bas un virziena stingra roka? Nesen feisbukÄ rakstÄ«ju, kÄ viena mazpazÄ«stama banka ievieÅ” rÄ«kus caur pasÅ«tÄ«jumiem: uzrakstam pasÅ«tÄ«jumu, Ä«stenojam gadu, un skatÄmies, kas sanÄks. Tas, protams, ir ilgi un skumji.
Cik svarÄ«gi vadÄ«tÄjiem ir saÅemt personÄ«gos sasniegumus, neÅemot vÄrÄ uzÅÄmuma sasniegumus?
Ja atbildÄsiet uz Å”iem jautÄjumiem sev, kļūs skaidrÄks, vai jÅ«su uzÅÄmumÄ nav Å”Äda problÄma.
InfrastruktÅ«ra kÄ kods
PÄc tam, kad Ŕī problÄma ir atrisinÄta, ir pirmÄ svarÄ«gÄ prakse, bez kuras ir grÅ«ti virzÄ«ties tÄlÄk DevOps infrastruktÅ«ra kÄ kods.
VisbiežÄk infrastruktÅ«ra kÄ kods tiek uztverta Å”Ädi:
ā AutomatizÄsim visu bashÄ, piesegsim ar skriptiem, lai adminiem mazÄk roku darba!
Bet tÄ nav taisnÄ«ba.
InfrastruktÅ«ra kÄ kods nozÄ«mÄ, ka jÅ«s aprakstÄt IT sistÄmu, ar kuru strÄdÄjat, koda veidÄ, lai pastÄvÄ«gi izprastu tÄs stÄvokli.
KopÄ ar citÄm komandÄm jÅ«s izveidojat karti koda veidÄ, ko ikviens var saprast un var orientÄties un orientÄties. Nav svarÄ«gi, ar ko tas tiek darÄ«ts ā ar Å”efpavÄru, Ansible, Salt vai izmantojot YAML failus programmÄ Kubernetes ā nav nekÄdas atŔķirÄ«bas.
KonferencÄ kolÄÄ£is no 2GIS pastÄstÄ«ja, kÄ viÅi Kubernetes izveidoja savu iekÅ”Äjo lietu, kas apraksta atseviŔķu sistÄmu struktÅ«ru. Lai aprakstÄ«tu 500 sistÄmas, tÄm bija nepiecieÅ”ams atseviŔķs rÄ«ks, kas Ä£enerÄ Å”o aprakstu. Kad ir Å”is apraksts, katrs var pÄrbaudÄ«t savÄ starpÄ, sekot lÄ«dzi izmaiÅÄm, kÄ to mainÄ«t un uzlabot, kas pietrÅ«kst.
PiekrÄ«tu, atseviŔķi bash skripti parasti nenodroÅ”ina Å”o izpratni. VienÄ no uzÅÄmumiem, kurÄ strÄdÄju, bija pat nosaukums ātikai rakstÄ«tā skriptam - kad skripts ir uzrakstÄ«ts, bet to vairs nav iespÄjams izlasÄ«t. Es domÄju, ka tas ir pazÄ«stams arÄ« jums.
InfrastruktÅ«ra kÄ kods ir kods, kas apraksta paÅ”reizÄjo infrastruktÅ«ras stÄvokli. Daudzas produktu, infrastruktÅ«ras un pakalpojumu komandas strÄdÄ kopÄ ar Å”o kodu, un, pats galvenais, tÄm visÄm ir jÄsaprot, kÄ Å”is kods patiesÄ«bÄ darbojas.
Kods tiek uzturÄts saskaÅÄ ar labÄko kodu praksi: kopÄ«ga izstrÄde, koda pÄrskatÄ«Å”ana, XP programmÄÅ”ana, testÄÅ”ana, izvilkÅ”anas pieprasÄ«jumi, CI kodu infrastruktÅ«rÄm - tas viss ir piemÄrots un var tikt izmantots.
Kods kļūst par kopīgu valodu visiem inženieriem.
InfrastruktÅ«ras maiÅa kodÄ neaizÅem daudz laika. JÄ, infrastruktÅ«ras kodam var bÅ«t arÄ« tehniskais parÄds. Parasti komandas ar to saskaras pusotru gadu pÄc tam, kad ir sÄkuÅ”as ieviest āinfrastruktÅ«ru kÄ koduā skriptu kopas vai pat Ansible veidÄ, ko tÄs raksta kÄ spageti kodu, kÄ arÄ« iemet maisÄ«jumÄ bash skriptus!
Tas ir svarÄ«gi: Ja vÄl neesat izmÄÄ£inÄjis Ŕīs lietas, atcerieties to Ansible nav bash! UzmanÄ«gi izlasiet dokumentÄciju, izpÄtiet, ko viÅi par to raksta.
InfrastruktÅ«ra kÄ kods ir infrastruktÅ«ras koda sadalÄ«Å”ana atseviŔķos slÄÅos.
MÅ«su uzÅÄmumÄ mÄs izŔķiram 3 pamata slÄÅus, kas ir ļoti skaidri un vienkÄrÅ”i, bet to var bÅ«t vairÄk. Varat apskatÄ«t savas infrastruktÅ«ras kodu un noteikt, vai jums ir Å”is nosacÄ«jums. Ja neviens slÄnis nav izcelts, jums jÄpavada laiks un nedaudz jÄreaÄ£Ä.
bÄzes slÄnis - Å”Ädi tiek konfigurÄta OS, dublÄjumkopijas un citas zema lÄ«meÅa lietas, piemÄram, kÄ Kubernetes tiek izvietots pamata lÄ«menÄ«.
Servisa lÄ«menis - Å”ie ir pakalpojumi, ko sniedzat izstrÄdÄtÄjam: reÄ£istrÄÅ”ana kÄ pakalpojums, uzraudzÄ«ba kÄ pakalpojums, datu bÄze kÄ pakalpojums, balansÄtÄjs kÄ pakalpojums, rinda kÄ pakalpojums, NepÄrtraukta piegÄde kÄ pakalpojums - pakalpojumu kopums, ko nodroÅ”ina atseviŔķas komandas. var nodroÅ”inÄt attÄ«stÄ«bu. Tas viss ir jÄapraksta atseviŔķos moduļos jÅ«su konfigurÄcijas pÄrvaldÄ«bas sistÄmÄ.
SlÄnis, kurÄ tiek veiktas aplikÄcijas un aprakstÄ«ts, kÄ tie izvÄrsÄ«sies virs diviem iepriekÅ”Äjiem slÄÅiem.
Kontroles jautÄjumi
Vai jÅ«su uzÅÄmumam ir kopÄ«gs infrastruktÅ«ras repozitorijs? Vai savÄ infrastruktÅ«rÄ pÄrvaldÄt tehniskos parÄdus? Vai infrastruktÅ«ras repozitorijÄ izmantojat attÄ«stÄ«bas praksi? Vai jÅ«su infrastruktÅ«ra ir sadalÄ«ta slÄÅos? Varat pÄrbaudÄ«t Base-service-APP diagrammu. Cik grÅ«ti ir veikt izmaiÅas?
Ja esat pieredzÄjis, ka izmaiÅu veikÅ”anai bija nepiecieÅ”ama pusotra diena, tas nozÄ«mÄ, ka jums ir tehnisks parÄds un ar to ir jÄstrÄdÄ. JÅ«s tikko uzdÅ«rÄt tehnisko parÄdu grÄbekli savÄ infrastruktÅ«ras kodÄ. Atceros daudzus tÄdus stÄstus, kad, lai nomainÄ«tu kÄdu CCTL, vajag pÄrrakstÄ«t pusi no infrastruktÅ«ras koda, jo radoÅ”ums un vÄlme visu automatizÄt noveda pie tÄ, ka visur viss sarÅ«sÄjis, visi rokturi izÅemti, un ir nepiecieÅ”ams refaktorÄt.
NepÄrtraukta piegÄde
SalÄ«dzinÄsim debetu ar kredÄ«tu. Vispirms ir jÄapraksta infrastruktÅ«ra, kas var bÅ«t diezgan vienkÄrÅ”a. Jums nav viss sÄ«ki jÄapraksta, taÄu ir nepiecieÅ”ams kÄds pamata apraksts, lai jÅ«s varÄtu ar to strÄdÄt. PretÄjÄ gadÄ«jumÄ nav skaidrs, ko tÄlÄk darÄ«t ar nepÄrtrauktu piegÄdi. Visas Ŕīs prakses tiek atklÄtas vienlaikus, kad nonÄkat pakalpojumÄ DevOps, taÄu tas sÄkas ar izpratni par to, kas jums ir un kÄ to pÄrvaldÄ«t. TieÅ”i tÄda ir infrastruktÅ«ras kÄ koda prakse.
Kad kļūst skaidrs, ka jums tas ir un kÄ to pÄrvaldÄ«t, jÅ«s sÄkat izdomÄt, kÄ pÄc iespÄjas ÄtrÄk nosÅ«tÄ«t izstrÄdÄtÄja kodu uz ražoÅ”anu. Es domÄju kopÄ ar izstrÄdÄtÄju - mÄs atceramies par āakuā problÄmu, tas ir, to izdomÄ nevis atseviŔķi cilvÄki, bet gan komanda.
Kad esam ar VaÅa EvtukhoviÄa ieraudzÄ«ju pirmo grÄmatu Jez Humble un autoru grupas "NepÄrtraukta piegÄde", kas tika izdots 2009. gadÄ, mÄs ilgi domÄjÄm, kÄ pÄrtulkot tÄ nosaukumu krievu valodÄ. ViÅi gribÄja to tulkot kÄ āPastÄvÄ«gi piegÄdÄtā, bet diemžÄl tas tika tulkots kÄ āNepÄrtraukta piegÄdeā. Man Ŕķiet, ka mÅ«su vÄrdÄ ir kaut kas krievisks, ar spiedienu.
PastÄvÄ«gi piegÄdÄ lÄ«dzekļus
Kodu, kas atrodas produktu krÄtuvÄ, vienmÄr var lejupielÄdÄt ražoÅ”anÄ. ViÅÅ” var nebÅ«t deflÄts, bet viÅÅ” vienmÄr ir tam gatavs. AttiecÄ«gi jÅ«s vienmÄr rakstÄt kodu ar grÅ«ti izskaidrojamu trauksmes sajÅ«tu zem astes kaula. Tas bieži parÄdÄs, kad izlaižat infrastruktÅ«ras kodu. Å ai zinÄmas trauksmes sajÅ«tai vajadzÄtu bÅ«t klÄt ā tÄ iedarbina smadzeÅu procesus, kas ļauj rakstÄ«t kodu mazliet savÄdÄk. Tas ir jÄieraksta izstrÄdes noteikumos.
Lai nodroÅ”inÄtu konsekventu piegÄdi, ir nepiecieÅ”ams artefakta formÄts, kas darbojas visÄ infrastruktÅ«ras platformÄ. Ja pÄri infrastruktÅ«ras platformai izmet dažÄdu formÄtu ādzÄ«vÄ«bas atkritumusā, tad tÄ kļūst vienota, to ir grÅ«ti uzturÄt, un rodas tehniskÄ parÄda problÄma. Artefakta formÄts ir jÄsaskaÅo ā tas ir arÄ« kolektÄ«vs uzdevums: mums visiem jÄsanÄk kopÄ, jÄpagriežas smadzenÄs un jÄizdomÄ Å”is formÄts.
Artefakts tiek nepÄrtraukti uzlabots un mainÄs, lai tas atbilstu ražoÅ”anas videi, kad tas pÄrvietojas pa piegÄdes cauruļvadu. Kad artefakts pÄrvietojas pa cauruļvadu, tas pastÄvÄ«gi saskaras ar dažÄm tam neÄrtÄm lietÄm, kas ir lÄ«dzÄ«gas tam, ko saskaras artefakts, kuru ievietojat ražoÅ”anÄ. Ja klasiskajÄ izstrÄdÄ to dara sistÄmas administrators, kurÅ” veic izlaiÅ”anu, tad DevOps procesÄ tas notiek visu laiku: te viÅi to pÄrbaudÄ«ja ar dažiem testiem, te viÅi to iemeta Kubernetes klasterÄ«, kas ir vairÄk vai mazÄk lÄ«dzÄ«gs. uz ražoÅ”anu, tad pÄkÅ”Åi viÅi sÄka slodzes testÄÅ”anu.
Tas nedaudz atgÄdina Pac-Man spÄli - artefakts iet cauri sava veida stÄstam. TajÄ paÅ”Ä laikÄ ir svarÄ«gi kontrolÄt, vai kods patieÅ”Äm iziet cauri stÄstam un vai tas ir kaut kÄ saistÄ«ts ar jÅ«su produkciju. StÄstus no ražoÅ”anas var ievilkt nepÄrtrauktÄs piegÄdes procesÄ: tas bija Å”Ädi, kad kaut kas nokrita, tagad ieprogrammÄsim Å”o scenÄriju sistÄmÄ. Katru reizi kods tiks izpildÄ«ts arÄ« Å”ajÄ scenÄrijÄ, un nÄkamreiz ar Å”o problÄmu jÅ«s nesastapsities. JÅ«s par to uzzinÄsiet daudz agrÄk, nekÄ tas sasniedz jÅ«su klientu.
DažÄdas izvietoÅ”anas stratÄÄ£ijas. PiemÄram, jÅ«s izmantojat AB testÄÅ”anu vai kanÄriju izvietoÅ”anu, lai dažÄdi pÄrbaudÄ«tu kodu dažÄdos klientiem, iegÅ«tu informÄciju par to, kÄ kods darbojas, un daudz agrÄk nekÄ tad, kad tas tiek izlaists 100 miljoniem lietotÄju.
āKonsekventi piegÄdÄtā izskatÄs Å”Ädi.
PiegÄdes process Dev, CI, Test, PreProd, Prod nav atseviŔķa vide, tie ir posmi vai stacijas ar ugunsdroÅ”Äm summÄm, caur kurÄm iziet jÅ«su artefakts.
Ja jums ir infrastruktÅ«ras kods, kas aprakstÄ«ts kÄ Base Service APP, tas palÄ«dz neaizmirstiet visus skriptusun pierakstiet tos kÄ Å”Ä« artefakta kodu, veicinÄt artefaktu un mainiet to, kad dodaties.
PaÅ”pÄrbaudes jautÄjumi
Laiks no funkcijas apraksta lÄ«dz izlaiÅ”anai ražoÅ”anÄ 95% gadÄ«jumu ir mazÄks par nedÄļu? Vai artefakta kvalitÄte uzlabojas katrÄ cauruļvada posmÄ? Vai ir kÄds stÄsts, kam tas iet cauri? Vai jÅ«s izmantojat dažÄdas izvietoÅ”anas stratÄÄ£ijas?
Ja visas atbildes ir jÄ, tad jÅ«s esat neticami forÅ”s! Rakstiet savas atbildes komentÄros - es priecÄÅ”os).
Sazinies ar mums
Å Ä« ir visgrÅ«tÄkÄ prakse. DevOpsConf konferencÄ kolÄÄ£is no Infobip, par to runÄjot, savos vÄrdos bija nedaudz neizpratnÄ, jo tÄ tieÅ”Äm ir ļoti sarežģīta prakse par to, ka vajag visu uzraudzÄ«t!
PiemÄram, ļoti sen, kad strÄdÄju Qik un sapratÄm, ka mums viss jÄuzrauga. MÄs to izdarÄ«jÄm, un tagad mums Zabbix ir 150 000 vienumu, kas tiek pastÄvÄ«gi uzraudzÄ«ti. Tas bija biedÄjoÅ”i, tehniskais direktors pagrieza pirkstu pie deniÅa:
- PuiÅ”i, kÄpÄc jÅ«s izvarojat serveri ar kaut ko neskaidru?
Bet tad notika incidents, kas parÄdÄ«ja, ka Ŕī patieÅ”Äm ir ļoti forÅ”a stratÄÄ£ija.
Viens no pakalpojumiem sÄka pastÄvÄ«gi avarÄt. SÄkotnÄji tas neavarÄja, kas ir interesanti, kods tur netika pievienots, jo tas bija pamata brokeris, kuram praktiski nebija nekÄdas biznesa funkcionalitÄtes - tas vienkÄrÅ”i sÅ«tÄ«ja ziÅas starp atseviŔķiem servisiem. Pakalpojums nemainÄ«jÄs 4 mÄneÅ”us, un pÄkÅ”Åi tas sÄka avarÄt ar kļūdu āSegmentÄcijas kļūdaā.
MÄs bijÄm satriekti, atvÄrÄm savas diagrammas Zabbix, un izrÄdÄ«jÄs, ka pirms pusotras nedÄļas Ŕī brokera izmantotÄ API pakalpojuma pieprasÄ«jumu uzvedÄ«ba ļoti mainÄ«jÄs. TÄlÄk mÄs redzÄjÄm, ka ir mainÄ«jies noteikta veida ziÅojumu sÅ«tÄ«Å”anas biežums. VÄlÄk mÄs uzzinÄjÄm, ka tie bija Android klienti. MÄs jautÄjÄm:
ā PuiÅ”i, kas ar jums notika pirms pusotras nedÄļas?
Atbildot uz to, mÄs dzirdÄjÄm interesantu stÄstu par to, kÄ viÅi bija pÄrveidojuÅ”i lietotÄja interfeisu. Maz ticams, ka kÄds uzreiz pateiks, ka ir mainÄ«jis HTTP bibliotÄku. Android klientiem tas ir kÄ ziepju maiÅa vannas istabÄ ā viÅi vienkÄrÅ”i neatceras. RezultÄtÄ pÄc 40 minÅ«Å”u ilgas sarunas mÄs noskaidrojÄm, ka viÅi ir mainÄ«juÅ”i HTTP bibliotÄku un ir mainÄ«juÅ”ies tÄs noklusÄjuma laiki. Tas izraisÄ«ja API servera trafika uzvedÄ«bas izmaiÅas, kas izraisÄ«ja situÄciju, kas izraisÄ«ja sacensÄ«bas starpnieka iekÅ”ienÄ, un tas sÄka avÄriju.
Bez dziļas uzraudzÄ«bas to parasti nav iespÄjams atvÄrt. Ja organizÄcijai joprojÄm ir āakuā problÄma, kad visi met naudu viens otram, tas var dzÄ«vot gadiem ilgi. JÅ«s vienkÄrÅ”i restartÄjiet serveri, jo problÄmu nav iespÄjams atrisinÄt. Kad jÅ«s uzraugÄt, izsekojiet, izsekojiet visus notikumus, kas jums ir, un izmantojat monitoringu kÄ testÄÅ”anu - rakstiet kodu un nekavÄjoties norÄdiet, kÄ to uzraudzÄ«t, arÄ« koda veidÄ (mums jau ir infrastruktÅ«ra kÄ kods), viss kļūst skaidrs, kÄ uz delnas. Pat Å”Ädas sarežģītas problÄmas ir viegli izsekot.
Apkopojiet visu informÄciju par to, kas notiek ar artefaktu katrÄ piegÄdes procesa posmÄ, nevis ražoÅ”anÄ.
AugÅ”upielÄdÄjiet monitoringu CI, un tur jau bÅ«s redzamas dažas pamata lietas. VÄlÄk tos redzÄsit sadaÄ¼Ä Test, PredProd un slodzes testÄÅ”ana. Apkopojiet informÄciju visos posmos, ne tikai metriku, statistiku, bet arÄ« žurnÄlus: kÄ lietojumprogramma tika izlaista, anomÄlijas - apkopojiet visu.
CitÄdi bÅ«s grÅ«ti to izdomÄt. Es jau teicu, ka DevOps ir sarežģītÄks. Lai tiktu galÄ ar Å”o sarežģītÄ«bu, jums ir nepiecieÅ”ama normÄla analÄ«ze.
JautÄjumi paÅ”kontrolei
Vai jÅ«su uzraudzÄ«ba un reÄ£istrÄÅ”ana ir izstrÄdes rÄ«ks jums? Vai, rakstot kodu, jÅ«su izstrÄdÄtÄji, tostarp jÅ«s, domÄjat par to, kÄ to uzraudzÄ«t?
Vai dzirdat par problÄmÄm no klientiem? Vai jÅ«s labÄk saprotat klientu no uzraudzÄ«bas un reÄ£istrÄÅ”anas?Vai jÅ«s labÄk saprotat sistÄmu no uzraudzÄ«bas un reÄ£istrÄÅ”anas? Vai jÅ«s mainÄt sistÄmu tikai tÄpÄc, ka redzÄjÄt, ka sistÄmÄ tendence pieaug, un jÅ«s saprotat, ka vÄl pÄc 3 nedÄļÄm viss mirs?
Kad esat ieguvis Ŕīs trÄ«s sastÄvdaļas, varat padomÄt par to, kÄda veida infrastruktÅ«ras platforma jums ir jÅ«su uzÅÄmumÄ.
Infrastruktūras platforma
Lieta nav tÄda, ka tas ir atŔķirÄ«gu rÄ«ku kopums, kas ir katram uzÅÄmumam.
InfrastruktÅ«ras platformas bÅ«tÄ«ba ir tÄda, ka visas komandas izmanto Å”os rÄ«kus un izstrÄdÄ tos kopÄ.
Ir skaidrs, ka ir atseviŔķas komandas, kas ir atbildÄ«gas par atseviŔķu infrastruktÅ«ras platformas gabalu izstrÄdi. TaÄu tajÄ paÅ”Ä laikÄ katrs inženieris ir atbildÄ«gs par infrastruktÅ«ras platformas izstrÄdi, veiktspÄju un popularizÄÅ”anu. IekÅ”ÄjÄ lÄ«menÄ« tas kļūst par kopÄ«gu instrumentu.
Visas komandas izstrÄdÄ infrastruktÅ«ras platformu un rÅ«pÄ«gi izturas pret to kÄ pret savu IDE. SavÄ IDE instalÄjat dažÄdus spraudÅus, lai viss bÅ«tu jauki un Ätri, kÄ arÄ« konfigurÄtu karstos taustiÅus. Atverot Sublime, Atom vai Visual Studio Code, plÅ«st koda kļūdas, un jÅ«s saprotat, ka strÄdÄt nav iespÄjams, uzreiz kļūst skumji un skrienat labot savu IDE.
Izturieties pret savu infrastruktÅ«ras platformu tÄpat. Ja saprotat, ka ar to kaut kas nav kÄrtÄ«bÄ, atstÄjiet pieprasÄ«jumu, ja nevarat to salabot pats. Ja ir kas vienkÄrÅ”s, rediÄ£Äjiet pats, nosÅ«tiet pull pieprasÄ«jumu, puiÅ”i to izskatÄ«s un pievienos. Å Ä« ir nedaudz atŔķirÄ«ga pieeja inženiertehniskajiem rÄ«kiem izstrÄdÄtÄja galvÄ.
InfrastruktÅ«ras platforma nodroÅ”ina artefakta nodoÅ”anu no izstrÄdes klientam, nepÄrtraukti uzlabojot kvalitÄti. IP ir ieprogrammÄts ar stÄstu kopu, kas notiek ar kodu ražoÅ”anÄ. Gadu gaitÄ Å”o stÄstu ir daudz, daži no tiem ir unikÄli un attiecas tikai uz jums - tos nevar atrast Google.
Å ajÄ brÄ«dÄ« infrastruktÅ«ras platforma kļūst par jÅ«su konkurences priekÅ”rocÄ«bu, jo tajÄ ir kaut kas iebÅ«vÄts, kas nav konkurenta rÄ«kÄ. Jo dziļÄks ir jÅ«su IP, jo lielÄkas ir jÅ«su konkurences priekÅ”rocÄ«bas attiecÄ«bÄ uz laiku lÄ«dz tirgum. ParÄdÄs Å”eit pÄrdevÄja bloÄ·ÄÅ”anas problÄma: Tu vari paÅemt kÄda cita platformu, bet izmantojot kÄda cita pieredzi, tu nesapratÄ«si, cik tÄ ir aktuÄla tev. JÄ, ne katrs uzÅÄmums var izveidot tÄdu platformu kÄ Amazon. Å Ä« ir sarežģīta lÄ«nija, kurÄ uzÅÄmuma pieredze ir saistÄ«ta ar tÄ stÄvokli tirgÅ«, un tur nevar izmantot pÄrdevÄja slÄdzeni. Par to arÄ« ir svarÄ«gi padomÄt.
ShÄma
Å Ä« ir infrastruktÅ«ras platformas pamata diagramma, kas palÄ«dzÄs iestatÄ«t visas darbÄ«bas un procesus DevOps uzÅÄmumÄ.
ApskatÄ«sim, no kÄ tas sastÄv.
Resursu orÄ·estrÄÅ”anas sistÄma, kas nodroÅ”ina CPU, atmiÅu, disku lietojumprogrammÄm un citiem pakalpojumiem. Papildus tam - zema lÄ«meÅa pakalpojumi: uzraudzÄ«ba, reÄ£istrÄÅ”ana, CI/CD dzinÄjs, artefaktu glabÄÅ”ana, infrastruktÅ«ra kÄ sistÄmas kods.
AugstÄka lÄ«meÅa pakalpojumi: datu bÄze kÄ pakalpojums, rindas kÄ pakalpojums, Load Balance kÄ pakalpojums, attÄlu izmÄru maiÅa kÄ pakalpojums, Big Data rÅ«pnÄ«ca kÄ pakalpojums. Papildus tam - konveijera, kas nodroÅ”ina pastÄvÄ«gi modificÄtu kodu jÅ«su klientam.
JÅ«s saÅemat informÄciju par to, kÄ jÅ«su programmatÅ«ra darbojas klientam, mainÄt to, ievadÄt Å”o kodu vÄlreiz, saÅemat informÄciju - un tÄdÄjÄdi jÅ«s pastÄvÄ«gi attÄ«stÄt gan infrastruktÅ«ras platformu, gan savu programmatÅ«ru.
DiagrammÄ piegÄdes cauruļvads sastÄv no daudziem posmiem. Bet Ŕī ir shematiska diagramma, kas ir dota kÄ piemÄrs - nav nepiecieÅ”ams to atkÄrtot pa vienam. Posmi mijiedarbojas ar pakalpojumiem tÄ, it kÄ tie bÅ«tu pakalpojumi ā katrs platformas Ä·ieÄ£elis satur savu stÄstu: kÄ tiek pieŔķirti resursi, kÄ tiek palaists lietojumprogramma, darbojas ar resursiem, tiek uzraudzÄ«ta un mainÄs.
Ir svarÄ«gi saprast, ka katra platformas daļa nes stÄstu, un pajautÄjiet sev, kÄdu stÄstu nes Å”is Ä·ieÄ£elis, varbÅ«t to vajadzÄtu izmest un aizstÄt ar treÅ”Äs puses pakalpojumu. PiemÄram, vai Ä·ieÄ£eļa vietÄ ir iespÄjams uzstÄdÄ«t Okmeter? IespÄjams, puiÅ”i jau ir attÄ«stÄ«juÅ”i Ŕīs zinÄÅ”anas daudz vairÄk nekÄ mÄs. Bet varbÅ«t nÄ ā iespÄjams, mums ir unikÄla pieredze, mums ir jÄinstalÄ Prometheus un jÄattÄ«sta tas tÄlÄk.
Platformas izveide
Tas ir sarežģīts komunikÄcijas process. Kad jums ir pamata prakse, jÅ«s sÄkat saziÅu starp dažÄdiem inženieriem un speciÄlistiem, kuri izstrÄdÄ prasÄ«bas un standartus, un pastÄvÄ«gi maina tos uz dažÄdiem rÄ«kiem un pieejÄm. Å eit svarÄ«ga ir DevOps kultÅ«ra.
Ar kultÅ«ru viss ir ļoti vienkÄrÅ”i - tas ir par sadarbÄ«bu un komunikÄciju, tas ir, vÄlme strÄdÄt kopÄ«gÄ jomÄ vienam ar otru, vÄlme kopÄ vadÄ«t vienu instrumentu. Å eit nav raÄ·eÅ”u zinÄtnes - viss ir ļoti vienkÄrÅ”i, banÄli. PiemÄram, mÄs visi dzÄ«vojam ieejÄ un uzturam to tÄ«ru ā tÄds kultÅ«ras lÄ«menis.
Kas tev ir?
Atkal jautÄjumi, kurus varat uzdot sev.
Vai infrastruktÅ«ras platforma ir paredzÄta? Kas ir atbildÄ«gs par tÄ attÄ«stÄ«bu? Vai saprotat savas infrastruktÅ«ras platformas konkurences priekÅ”rocÄ«bas?
Jums pastÄvÄ«gi jÄuzdod sev Å”ie jautÄjumi. Ja kaut ko var pÄrsÅ«tÄ«t uz treÅ”o puÅ”u pakalpojumiem, tas ir jÄpÄrsÅ«ta; ja treÅ”Äs puses pakalpojums sÄk bloÄ·Ät jÅ«su kustÄ«bu, tad jums ir jÄveido sistÄma sevÄ«.
TÄtad, DevOps...
... Ŕī ir sarežģīta sistÄma, tai jÄbÅ«t:
DigitÄlais produkts.
Biznesa moduļi, kas izstrÄdÄ Å”o digitÄlo produktu.
Varat izmantot Å”o diagrammu, izceļot tajÄ to, kas jums kaut kÄdÄ veidÄ jau ir jÅ«su uzÅÄmumÄ: vai tas ir izstrÄdÄts vai vÄl ir jÄattÄ«sta.
Tas beigsies pÄc pÄris nedÄļÄm DevOpsConf 2019. kÄ daļa no RIT++. NÄciet uz konferenci, kur atradÄ«siet daudz lielisku ziÅojumu par nepÄrtrauktu piegÄdi, infrastruktÅ«ru kÄ kodu un DevOps transformÄciju. RezervÄjiet biļetes, pÄdÄjais cenu termiÅÅ” ir 20. maijs