Kas ir DevOps

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ē.

Kas ir DevOps

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.

Kas ir DevOps

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.

Kas ir DevOps

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.

Kas ir DevOps

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.

Kas ir DevOps

1968. gadā vizionārs Melvins Konvejs formulēja Ŕādu ideju.

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.Kas ir DevOps
DevOps gadījumā visi Ŕie procesi notiek vienlaicīgi.

Kas ir DevOps

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.

Kas ir DevOps

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.

Kas ir DevOps

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ģē.
Kas ir DevOps

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.

Kas ir DevOps

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!

Kas ir DevOps

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.

Kas ir DevOps

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ā.

Kas ir DevOps

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.

Kas ir DevOps
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.
  • Produktu komandas, kas raksta kodu.
  • Nepārtrauktas piegādes prakse.
  • Platformas kā pakalpojums.
  • InfrastruktÅ«ra kā pakalpojums.
  • InfrastruktÅ«ra kā kods.
  • DevOps iebÅ«vēta atseviŔķa prakse uzticamÄ«bas uzturÄ“Å”anai.
  • Atsauksmju prakse, kas to visu apraksta.

Kas ir DevOps

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

Avots: www.habr.com

Pievieno komentāru