DevOps LEGO: kā mēs izkārtojām cauruļvadu kubiņos

Mēs savulaik klientam vienā objektā piegādājām elektronisko dokumentu pārvaldÄ«bas sistēmu. Un tad uz citu objektu. Un vēl vienu. Un ceturtajā, un piektajā. Mēs tā aizrāvāmies, ka tikām lÄ«dz 10 izdalÄ«tiem objektiem. Tas izrādÄ«jās spēcÄ«gi... it Ä«paÅ”i, kad nonācām pie izmaiņu ievieÅ”anas. Kā daļu no piegādes uz ražoÅ”anas ķēdi 5 testÄ“Å”anas sistēmas scenārijiem galu galā bija vajadzÄ«gas 10 stundas un 6ā€“7 darbinieki. Šādas izmaksas lika mums veikt piegādes pēc iespējas retāk. Pēc trÄ«s darbÄ«bas gadiem mēs to neizturējām un nolēmām papildināt projektu ar Ŕķipsniņu DevOps.

DevOps LEGO: kā mēs izkārtojām cauruļvadu kubiņos

Tagad visa testÄ“Å”ana notiek 3 stundu laikā, un tajā piedalās 3 cilvēki: inženieris un divi testētāji. Uzlabojumi ir skaidri izteikti skaitļos un noved pie tik iemīļotā TTM samazināŔanās. MÅ«su pieredze liecina, ka ir daudz vairāk klientu, kuri var gÅ«t labumu no DevOps, nekā tie, kas par to pat zina. Tāpēc, lai DevOps tuvinātu cilvēkiem, esam izstrādājuÅ”i vienkārÅ”u konstruktoru, par kuru sÄ«kāk pastāstÄ«sim Å”ajā ierakstā.

Tagad pastāstÄ«sim jums sÄ«kāk. Viens enerģētikas uzņēmums 10 lielos objektos ievieÅ” tehnisko dokumentu pārvaldÄ«bas sistēmu. Nav viegli orientēties Ŕāda mēroga projektos bez DevOps, jo liela daļa roku darba ievērojami aizkavē darbu un arÄ« samazina kvalitāti - viss roku darbs ir pilns ar kļūdām. No otras puses, ir projekti, kur ir tikai viena instalācija, bet visam jādarbojas automātiski, pastāvÄ«gi un bez kļūmēm - piemēram, vienas un tās paÅ”as dokumentu plÅ«smas sistēmas lielās monolÄ«tās organizācijās. Pretējā gadÄ«jumā kāds veiks iestatÄ«jumus manuāli, aizmirsÄ«s par izvietoÅ”anas instrukcijām - un rezultātā ražoÅ”anā iestatÄ«jumi tiks zaudēti un viss sabruks.

Parasti mēs strādājam ar klientu, pamatojoties uz lÄ«gumu, un Å”ajā gadÄ«jumā mÅ«su intereses nedaudz atŔķiras. PasÅ«tÄ«tājs projektu aplÅ«ko stingri budžeta un tehnisko specifikāciju ietvaros. Viņam var bÅ«t grÅ«ti izskaidrot dažādu DevOps prakÅ”u priekÅ”rocÄ«bas, kas nav iekļautas tehniskajās specifikācijās. Ko darÄ«t, ja viņu interesē ātrie izlaidumi ar pievienoto biznesa vērtÄ«bu vai automatizācijas cauruļvada izveide?

Diemžēl, strādājot ar iepriekÅ” apstiprinātām izmaksām, Ŕī interese ne vienmēr tiek atrasta. MÅ«su praksē bija gadÄ«jums, kad nācās uzņemties negodprātÄ«ga un neuzmanÄ«ga bÅ«vuzņēmēja izstrādi. Tas bija briesmÄ«gi: nebija atjauninātu pirmkodu, vienas un tās paÅ”as sistēmas kodu bāze dažādās instalācijās bija atŔķirÄ«ga, dokumentācijas daļēji trÅ«ka un daļēji drausmÄ«gas kvalitātes. Protams, klientam nebija kontroles pār pirmkodu, montāžu, izlaidumiem utt.

Pagaidām ne visi zina par DevOps, taču, tiklÄ«dz mēs runājam par tā priekÅ”rocÄ«bām, par reālu resursu ietaupÄ«jumu, visiem klientiem iemirdzas acis. Tādējādi pieprasÄ«jumu skaits, kas ietver DevOps, laika gaitā palielinās. Å eit, lai viegli runātu vienā valodā ar klientiem, mums ātri jāsavieno biznesa problēmas un DevOps prakse, kas palÄ«dzēs izveidot piemērotu izstrādes cauruļvadu.

Tātad, no vienas puses, mums ir problēmu kopums, no otras puses, mums ir DevOps zināŔanas, prakse un rÄ«ki. Kāpēc gan nepadalÄ«ties pieredzē ar visiem?

DevOps konstruktora izveide

Agilei ir savs manifests. ITIL ir sava metodoloÄ£ija. DevOps ir mazāk paveicies - tas vēl nav ieguvis veidnes un standartus. Lai gan daži cenÅ”as noteikt uzņēmumu briedumu, pamatojoties uz to attÄ«stÄ«bas un darbÄ«bas prakses novērtējumu.

Par laimi, labi pazīstamā kompānija Gartner 2014.g savākti un analizēja galvenās DevOps prakses un attiecības starp tām. Pamatojoties uz to, es izlaidu infografiku:

DevOps LEGO: kā mēs izkārtojām cauruļvadu kubiņos

Mēs to ņēmām par pamatu mÅ«su konstruktors. Katrai no četrām jomām ir noteikts rÄ«ku komplekts - mēs tos apkopojām datu bāzē, noteicām populārākos, identificējām integrācijas punktus un piemērotus optimizācijas mehānismus. Kopumā izrādÄ«jās 36 prakses un 115 rÄ«ki, no kuriem ceturtā daļa ir atvērtā pirmkoda vai bezmaksas programmatÅ«ra. Tālāk runāsim par to, ko esam sasnieguÅ”i katrā jomā un, piemēram, par to, kā tas tika Ä«stenots tehnisko dokumentu pārvaldÄ«bas izveides projektā, ar kuru sākām ierakstu.

Procesi

DevOps LEGO: kā mēs izkārtojām cauruļvadu kubiņos

BēdÄ«gi slavenajā EDMS projektā tehniskās dokumentācijas pārvaldÄ«bas sistēma tika izvietota pēc vienas shēmas katrā no 10 objektiem. Instalācija ietver 4 serverus: datu bāzes serveri, lietojumprogrammu serveri, pilna teksta indeksÄ“Å”anu un satura pārvaldÄ«bu. Instalācijā tie darbojas vienā mezglā un atrodas iekārtu datu centrā. Visi objekti infrastruktÅ«rā nedaudz atŔķiras, taču tas netraucē globālai mijiedarbÄ«bai.

Pirmkārt, saskaņā ar DevOps praksi mēs automatizējām infrastruktÅ«ru lokāli, pēc tam nogādājām piegādi testa ķēdē un pēc tam klienta produktam. Katrs process tika izstrādāts soli pa solim. Vides iestatÄ«jumi tiek fiksēti pirmkoda sistēmā, ņemot vērā to, ka izplatÄ«Å”anas komplekts tiek sastādÄ«ts automātiskai atjaunināŔanai. Konfigurācijas izmaiņu gadÄ«jumā inženieriem vienkārÅ”i ir jāveic atbilstoÅ”as ā€‹ā€‹izmaiņas versiju kontroles sistēmā ā€“ un tad automātiskā atjaunināŔana notiks bez problēmām.

Pateicoties Å”ai pieejai, testÄ“Å”anas process ir ievērojami vienkārÅ”ots. IepriekÅ” projektā bija testētāji, kuri nedarÄ«ja neko citu kā tikai manuāli atjaunināja stendus. Tagad viņi vienkārÅ”i atnāk, redz, ka viss darbojas, un dara vairāk noderÄ«gas lietas. Katrs atjauninājums tiek pārbaudÄ«ts automātiski ā€“ no virsmas lÄ«meņa lÄ«dz biznesa scenāriju automatizācijai. Rezultāti tiek publicēti kā atseviŔķi ziņojumi pakalpojumā TestRail.

Kultūra

DevOps LEGO: kā mēs izkārtojām cauruļvadu kubiņos

Nepārtrauktu eksperimentÄ“Å”anu vislabāk var izskaidrot ar testa dizaina piemēru. Vēl neeksistējoÅ”as sistēmas testÄ“Å”ana ir radoÅ”s darbs. Rakstot pārbaudes plānu, ir jāsaprot, kā pareizi testēt un kuras filiāles ievērot. Un arÄ« atrodiet lÄ«dzsvaru starp laiku un budžetu, lai noteiktu optimālo pārbaužu skaitu. Ir svarÄ«gi izvēlēties tieÅ”i nepiecieÅ”amos testus, pārdomāt, kā lietotājs mijiedarbosies ar sistēmu, ņemt vērā vidi un iespējamos ārējos faktorus. Bez nepārtrauktiem eksperimentiem nav iespējams iztikt.

Tagad par mijiedarbÄ«bas kultÅ«ru. IepriekÅ” bija divas pretējās puses ā€“ inženieri un izstrādātāji. Izstrādātāji teica: "Mums ir vienalga, kā tas tiks palaists. JÅ«s esat inženieri, jÅ«s esat gudri, pārliecinieties, ka tas darbojas bez kļūmēm". Inženieri atbildēja: "JÅ«s, izstrādātāji, esat pārāk neuzmanÄ«gi. BÅ«sim uzmanÄ«gāki, un jÅ«su laidienus atskaņosim retāk. Jo katru reizi, kad jÅ«s sniedzat mums noplÅ«duÅ”o kodu, mums nav skaidrs, kā mijiedarboties.. Å Ä« ir kultÅ«ras mijiedarbÄ«bas problēma, kas ir strukturēta atŔķirÄ«gi no DevOps perspektÄ«vas. Å eit gan inženieri, gan izstrādātāji ir daļa no vienas komandas, kas ir vērsta uz pastāvÄ«gi mainÄ«gu, bet tajā paŔā laikā uzticamu programmatÅ«ru.

Vienas komandas ietvaros speciālisti ir apņēmÄ«bas pilni palÄ«dzēt viens otram. Kā tas bija agrāk? Piemēram, tika sagatavotas kādas biezas izvietoÅ”anas instrukcijas, apmēram 50 lappuÅ”u garumā.Inženieris izlasÄ«ja, kaut ko nesaprata, lamājās un trijos naktÄ« lÅ«dza izstrādātāju komentēt. Izstrādātājs komentēja un arÄ« nolamāja - galu galā neviens nebija laimÄ«gs. Turklāt, protams, bija dažas kļūdas, jo jÅ«s nevarat atcerēties visu instrukcijās. Un tagad inženieris kopā ar izstrādātāju raksta skriptu lietojumprogrammatÅ«ras infrastruktÅ«ras automatizētai izvietoÅ”anai. Un viņi runā viens ar otru praktiski vienā valodā.

Cilvēki

DevOps LEGO: kā mēs izkārtojām cauruļvadu kubiņos

Komandas lielumu nosaka atjauninājuma apjoms. Komanda tiek komplektēta piegādes veidoÅ”anas laikā, tajā ietilpst interesenti no vispārējās projekta komandas. Pēc tam tiek uzrakstÄ«ts atjaunināŔanas plāns ar atbildÄ«gajiem par katru posmu, un komanda ziņo par tā gaitu. Visi komandas locekļi ir savstarpēji aizvietojami. Kā daļai no komandas mums ir arÄ« rezerves izstrādātājs, taču viņam gandrÄ«z nekad nav jāpieslēdzas.

Tehnoloģija

DevOps LEGO: kā mēs izkārtojām cauruļvadu kubiņos

Tehnoloģiju diagrammā daži punkti ir izcelti, bet zem tiem ir tehnoloģiju kaudze - jūs varētu izdot veselu grāmatu ar to aprakstiem. Tāpēc mēs izcelsim interesantāko.

Infrastruktūra kā kods

Tagad, iespējams, Ŕī koncepcija nevienu nepārsteigs, taču iepriekÅ” infrastruktÅ«ru apraksti atstāja daudz vēlamo. Inženieri Å”ausmās skatÄ«jās uz instrukcijām, testa vides bija unikālas, tās tika lolotas un lolotas, no tām tika izpÅ«stas putekļu daļiņas.

MÅ«sdienās neviens nebaidās eksperimentēt. Ir virtuālo maŔīnu pamata attēli, ir gatavi vides izvietoÅ”anas scenāriji. Visas veidnes un skripti tiek glabāti versiju kontroles sistēmā un tiek nekavējoties atjaunināti. IepriekÅ”, kad bija nepiecieÅ”ams nogādāt paku uz stendu, parādÄ«jās konfigurācijas sprauga. Tagad jums vienkārÅ”i jāpievieno avota kodam rinda.

Papildus infrastruktūras skriptiem un konveijeriem dokumentācijai tiek izmantota arī dokumentācijas kā koda pieeja. Pateicoties tam, ir viegli pieslēgt projektam jaunus cilvēkus, iepazīstināt viņus ar sistēmu, pamatojoties uz funkcijām, kas aprakstītas, piemēram, testa plānā, kā arī atkārtoti izmantot testa gadījumus.

Nepārtraukta piegāde un uzraudzība

Pēdējā rakstā par DevOps mēs runājām par to, kā mēs atlasÄ«jām rÄ«kus nepārtrauktas piegādes un uzraudzÄ«bas ievieÅ”anai. Bieži vien nekas nav jāpārraksta - pietiek ar iepriekÅ” rakstÄ«tu skriptu izmantoÅ”anu, pareizi izveidot integrāciju starp komponentiem un izveidot kopēju pārvaldÄ«bas konsoli. Un visus procesus var palaist, izmantojot vienu pogu vai grafiku.

Angļu valodā ir dažādi jēdzieni Continuous Delivery un Continuous Deployment. Abus var tulkot kā ā€œnepārtraukta piegādeā€, taču patiesÄ«bā starp tiem ir neliela atŔķirÄ«ba. MÅ«su projektā izplatÄ«tā energokompānijas tehnisko dokumentu plÅ«smai drÄ«zāk tiek izmantota Piegāde - kad uzstādÄ«Å”ana ražoÅ”anai notiek pēc komandas. IzvietoÅ”anā instalÄ“Å”ana notiek automātiski. Nepārtraukta piegāde Å”ajā projektā kopumā ir kļuvusi DevOps centrālā daļa.

Kopumā, apkopojot noteiktus parametrus, jÅ«s varat skaidri saprast, kāpēc DevOps prakse ir noderÄ«ga. Un nodod to vadÄ«bai, kurai ļoti patÄ«k skaitļi. Kopējais palaiÅ”anas reižu skaits, skripta posmu izpildes laiks, veiksmÄ«go palaiÅ”anas gadÄ«jumu Ä«patsvars ā€” tas viss tieÅ”i ietekmē ikviena iecienÄ«tāko laiku, lai nonāktu tirgÅ«, tas ir, laiku no apņemÅ”anās izmantot versiju kontroles sistēmu lÄ«dz versijas izlaiÅ”anai ražoÅ”anas vide. IevieÅ”ot nepiecieÅ”amos rÄ«kus, inženieri pa pastu saņem vērtÄ«gus rādÄ«tājus, un projekta vadÄ«tājs tos redz informācijas panelÄ«. Tādā veidā jÅ«s varat nekavējoties novērtēt jauno rÄ«ku priekÅ”rocÄ«bas. Un jÅ«s varat tos izmēģināt savā infrastruktÅ«rā, izmantojot DevOps dizaineru.

Kam būs vajadzīgi mūsu DevOps dizainers?

Neizliksimies: sākumā viņŔ mums kļuva noderÄ«gs. Kā jau teicām, ar klientu jārunā vienā valodā, un ar DevOps dizainera palÄ«dzÄ«bu varam ātri ieskicēt Ŕādas sarunas pamatu. UzņēmējdarbÄ«bas speciālisti varēs paÅ”i novērtēt, kas viņiem nepiecieÅ”ams, un tādējādi ātrāk attÄ«stÄ«ties. Mēs centāmies dizaineru padarÄ«t pēc iespējas detalizētāku, pievienojot virkni aprakstu, lai jebkurÅ” lietotājs saprastu, ko viņŔ izvēlas.

Projektētāja formāts ļauj ņemt vērā uzņēmuma esoŔās norises bÅ«vniecÄ«bas procesos un automatizācijā. Nav nepiecieÅ”ams visu nojaukt un atjaunot, ja varat izvēlēties tikai tādus risinājumus, kas labi integrējas esoÅ”ajos procesos, kas var vienkārÅ”i aizpildÄ«t nepilnÄ«bas.

Iespējams, jÅ«su attÄ«stÄ«ba jau ir pārgājusi uz augstāku lÄ«meni, un mÅ«su rÄ«ks ŔķitÄ«s pārāk "kapteiņa". Bet mēs to uzskatām par noderÄ«gu sev un ceram, ka noderēs kādam no lasÄ«tājiem. Mēs jums atgādinām saite projektētājam - ja kas, tad diagrammu saņem uzreiz pēc sākotnējo datu ievadÄ«Å”anas. BÅ«sim pateicÄ«gi par jÅ«su atsauksmēm un papildinājumiem.

Avots: www.habr.com

Pievieno komentāru