DevOpsi mÀÀratlemine on vĂ€ga keeruline, mistĂ”ttu tuleb iga kord arutelu uuesti alustada. AinuĂŒksi Habras on sellel teemal tuhat avaldust. Aga kui te seda loete, siis teate kindlasti, mis on DevOps. Sest mina ei tea. Tere, mina olen Aleksandr Titov (@), ja me rÀÀgime lihtsalt DevOpsist ning ma jagan oma kogemust.

MĂ”tlesin kaua, kuidas teha minu jutustus kasulikuks, seetĂ”ttu tuleb siia palju kĂŒsimusi â need, mida ma endalt kĂŒsida, ja need, mida ma meie ettevĂ”tte klientidelt kĂŒsin. Neile kĂŒsimustele vastates muutub arusaamine paremaks. RÀÀgin, miks DevOps on vajalik minu vaatenurgast, mis see on, taas minu positsiooni pĂ”hjal, ja kuidas mĂ”ista, kas liigute DevOpsi suunas, samuti minu vaatenurgast. Viimane punkt tuleb kĂŒsimuste kaudu. Neile vastates suudate mĂ”ista, kas teie ettevĂ”te liigub DevOpsi suunas vĂ”i on midagi valesti.

Ăhel hetkel jalutasin ma ĂŒhinemiste ja omandamiste lainetel. Alguses töötasin ma vĂ€ikeses idufirmas Qik, mille hiljem ostis pisut suurem ettevĂ”te Skype, mille omakorda ostis veelgi suurem ettevĂ”te Microsoft. Sel hetkel sain ma aru, kuidas DevOpsi mĂ”isted erinevates suurustes ettevĂ”tetes transformeeruvad. PĂ€rast seda hakkas mind huvitama DevOpsâi vaatamine turuperspektiivist ning koos kolleegidega asutasime ettevĂ”tte Express 42. Juba 6 aastat oleme me selles ettevĂ”ttes turule suunatud tegevust arendamas.
Lisaks olen ma ĂŒks DevOps Moscow kogukonna korraldajatest ja 2017. aasta DevOps Daysâi korraldaja, kuid 2018. aastal ei korraldanud ma ĂŒritust. Express 42 töötab paljude ettevĂ”tetega. Me arendame seal DevOpsâi, jĂ€lgime, kuidas see toimub, teeme jĂ€reldusi, analĂŒĂŒsime, jagame oma jĂ€reldusi kĂ”igiga, Ă”petame inimesi DevOpsâi praktikates. ĂhesĂ”naga, kasvatame igas mĂ”ttes kogemusi ja ekspertiisi.
Miks DevOps?
Esimene kĂŒsimus, mis kummitab kĂ”iki ja alati â miks? Paljud arvavad, et DevOps on lihtsalt automatiseerimine vĂ”i sarnane asi, mis on juba igas ettevĂ”ttes olemas.
â Meil oli pidev integreerimine â see tĂ€hendab, et DevOps oli juba olemas ja miks on kogu see jama vajalik? Seal vĂ€lismaal lĂ”bustavad ennast, aga meil segavad töötamist!
9 aasta jooksul, mil kogukond ja metoodika on arenenud, on juba selgeks saanud, et need ei ole pelgalt turunduslikud sÀdelused, aga ikkagi ei ole veel selge, miks see vajalik on. Nagu igal toolil ja protsessil, on DevOps-il konkreetsed eesmÀrgid, mida ta lÔpuks lahendab.
See kĂ”ik on seotud sellega, et maailm muutub. See liigub eemale ettevĂ”tte lĂ€henemisviisist, kus firmad liiguvad otse unistuste poole, nagu ĂŒtles meie Peterburi klassik, punktist A punkti B kindla strateegia kaudu, milline struktuur on selle jaoks ehitatud.

PĂ”himĂ”tteliselt peaks IT kĂ”ik olema ĂŒles ehitatud selle lĂ€henemisviisi ĂŒmber. Siin kasutatakse IT-d eelkĂ”ige protsesside automatiseerimiseks.
Automatiseerimine ei muutu sageli, sest kui ettevĂ”te sĂ”idab juba vĂ€lja töötatud rajal â mis seal muuta? Töötab â Ă€ra puutu. Praegu maailmas lĂ€henemised muutuvad, ja see, mida nimetatakse Agile'iks, ĂŒtleb, et lĂ”pp-punkt B ei ole kohe nĂ€ha.

Kui ettevÔte turul tegutseb ja klientidega töötab, uurib ta pidevalt turgu ja muudab oma lÔpp-punkti B. Mida sagedamini ettevÔte oma suunda muudab, seda edukam on ta lÔppkokkuvÔttes, sest ta valib rohkem turuniƥƥe.
Strateegiat demonstreerib huvitav ettevÔte, millest ma hiljuti kuulsin. One Box Shave on tellimusteenus, mis pakub raseerimisvahendite ja -tarvikute kojutoomist kastis. Neil on oskus kohandada oma "kasti" erinevate klientide jaoks. Sellega tegeleb kindel tarkvara, mis saadab tellimuse seejÀrel Koreasse tehasesse, mis toodab kaupa.
Selle toote ostis ettevĂ”te Unilever 1 miljardi dollari eest. Praegu konkureerib see Gillette'iga ja on kaotanud sellelt mĂ€rkimisvÀÀrse osa tarbijatest Ameerika turul. One Box Shave ĂŒtleb:
â 4 teraga? Kas sa tĂ”siselt? Miks teil seda vaja on â see ei paranda kuidagi raseerimise kvaliteeti. Eriline kreem, lĂ”hnav ained ja kvaliteetne raseerija kahe teraga lahendavad palju rohkem kĂŒsimusi kui need rumalad 4 teraga Gillette'id! Peagi jĂ”uame 10 ni?
Nii maailm muutub. Unilever teatab, et neil on uus IT-sĂŒsteem, mis seda vĂ”imaldab. LĂ”ppkokkuvĂ”ttes nĂ€eb see vĂ€lja nagu kontseptsioon. Turuletoomise aeg, millest on rÀÀkinud juba mitmed.

Turuletoomise mĂ”te ei ole selles, kui tihti me deploy'ime. Sageli vĂ”ib deploy'ida, kuid see tĂ€hendab, et vĂ€ljaandmise tsĂŒklid on pikad. Kui kolme kuu vĂ€ljaandmise tsĂŒklid ĂŒksteise peale panna, nihutades neid nĂ€dalaks, tundub, et ettevĂ”te nagu deploy'b kord nĂ€dalas. Ent ideest lĂ”pliku teostuseni kulub 3 kuud.
Turuletoomine tÀhendab ideest lÔpliku teostuseni kulumise aja minimeerimist.
Sellisel juhul suhtleb turuga tarkvara. NĂ€iteks One Box Shave'il suhtleb kliendiga nende veebisait. Neil pole mĂŒĂŒgiinimesi - lihtsalt sait, kus kĂŒlastaja klĂ”psab ja jĂ€tab soovid. Seega tuleb saidil pidevalt midagi uut avaldada, et seda vastavalt soovidele vĂ€rskendada. NĂ€iteks LĂ”una-Koreas peetakse habet teistmoodi kui Venemaal, ja neile meeldib, et aroomiks pole mĂ€nni lĂ”hn, vaid nĂ€iteks porgandi vanilje.
Kuna on vajalik kiiresti muuta veebisaidi sisu, tarkvara arendus on muutunud. Tarkvara kaudu peame mĂ”istma, mida klient soovib. Varem saime seda teada kaude, nĂ€iteks Ă€ri juhtimise kaudu. Siis kavandasime, seadsime nĂ”uded IT-sĂŒsteemi ja kĂ”ik oli suurepĂ€rane. Praegu on olukord teine - tarkvara kavandavad kĂ”ik, kes on protsessis kaasatud, sealhulgas insenerid, kuna nad saavad tehniliste spetsifikatsioonide kaudu aru, kuidas turg töötab, ja jagavad oma teadmisi Ă€ri poolega.
NĂ€iteks ettevĂ”ttes Qik saime ootamatult teada, et inimestele meeldib vĂ€ga laadida kontaktloendeid serverisse, ja nad andsid meile rakenduse. Alguses me sellele ei mĂ”elnud. Klassikalises ettevĂ”ttes oleks kĂ”ik arvanud, et see on viga, kuna spetsifikatsioonis ei olnud öeldud, et see peaks hĂ€sti töötama, ja seda oli ĂŒldse poolikult teostatud, oleks funktsiooni vĂ€lja lĂŒlitatud ja öeldud: "See ei ole kellelegi vajalik, peamine on see, et pĂ”hifunktsionaalsus töötab". Kuid tehnoloogiaettevĂ”te nĂ€eb selles vĂ”imalust ja hakkab tarkvara vastavalt muutma.

1968. aastal kujundas ettevaatlik noormees Melvin Conway jÀrgmise idee.
Organisatsioon, mis loob sĂŒsteemi, on piiratud disainiga, mis kopeerib selle organisatsiooni suhtluse struktuuri.
Kuna sĂŒsteemide tootmiseks, mis on erinevat tĂŒĂŒpi, peab ettevĂ”ttel olema ka erinevat tĂŒĂŒpi suhtlusstruktuur. Kui teie suhtlusstruktuur on pealtnĂ€ha hierarhiline, siis see ei vĂ”imalda teil luua sĂŒsteeme, mis suudavad tagada vĂ€ga kĂ”rge Time-to-market taseme.
Lugege saab . See on oluline DevOpsi kultuuri vÔi filosoofia mÔistmiseks, kuna ainus, mis DevOpsis pÔhjalikult muutub, on just suhtlus struktuur meeskondade vahel..
Protsessi vaatenurgast toimusid enne DevOps'i kĂ”ik etapid: analĂŒĂŒs, arendamine, testimine, kasutusele vĂ”tmine, jĂ€rjestikku.
DevOps'i juhul toimuvad kÔik need protsessid paralleelselt.

Time-to-market vĂ”ib toimuda ainult nii. Inimestele, kes on töötanud vana protsessi juures, nĂ€ib see mĂ”nevĂ”rra ulmeline ja ĂŒldiselt mitte just eriti meeldiv.
Miks on DevOps vajalik?
Digitaalsete toodete arendamiseks. Kui teie ettevÔttes pole digitaalset toodet, pole DevOps vajalik - see on vÀga oluline.
DevOps ĂŒletab traditsioonilise tarkvaraarenduse piirangud.. KĂ”ik protsessid toimuvad selles samas ajas.
Soolise keerukus suureneb. Kui DevOps'i evangelistid rÀÀgivad, et see teeb tarkvarade loomise lihtsamaks, on see vale.
DevOps teeb kÔik vaid keerulisemaks.
Konverentsil Avalduskeskkonnas sai vaadata, kuidas Docker-konteinerit kĂ€ivitada â see on peaaegu vĂ”imatu ĂŒlesanne. Keerukus muutub ÀÀrmuslikuks, peate samal ajal mitme palliga jongleerima.
DevOps muudab tĂ€ielikult protsessi ja organisatsiooni ettevĂ”ttes â tĂ€psemalt, ei muuda DevOps, vaid digitaalne toode. Et jĂ”uda DevOps'i, tuleb selle protsessi tĂ€ielikult muuta.
KĂŒsimused spetsialistile
Aga kuidas teil? KĂŒsimused, mida saate endalt kĂŒsida, töötades ettevĂ”ttes ja arenedes spetsialistina.
Kas teie ettevÔttel on digitaalsete toodete loomise strateegia? Kui on - juba hÀsti. See tÀhendab, et teie ettevÔte liigub DevOps'i suunas.
Kas teie ettevĂ”te juba loob digitaalset toodet? See tĂ€hendab, et saate astuda veel ĂŒhe sammu kĂ”rgemale, tegeleda huvitavate asjadega â DevOpsi vaates jĂ€lle. Just sellest vaatenurgast ma rÀÀgin.
Kas teie ettevĂ”te on ĂŒks digitaalsete toodete turuliidreid? Spotify, Yandex, Uber â ettevĂ”tted, mis hetkel asuvad tehnoloogia tipptaseme kĂ”rval.
Esitage endale need kĂŒsimused ja kui kĂ”ik vastused on negatiivsed, siis vĂ”ib-olla ei tasu teil DevOpsiga selles ettevĂ”ttes tegeleda. Kui aga DevOps teema tĂ”eliselt huvitab, vĂ”ib-olla... tuleks teil minna teise ettevĂ”ttesse? Kui teie ettevĂ”te soovib liikuda DevOpsi suunas, kuid te vastasite kĂ”ikidele kĂŒsimustele "Ei", siis meenutab see kaunist ninasarvikut, kes kunagi ei muutu.

Organiseerimine
Kuna ma olen juba öelnud, et Conway seaduse jÀrgi muutub ettevÔttes organisatsioon. Alustan sellest, mis takistab DevOpsi sisemist juurdumist ettevÔttes just organisatsiooni vaatenurgast.
Probleem âkolledĆŸidestâ
Inglise sĂ”na âSiloâ on siin tĂ”lgitud vene keelde kui âkolledĆŸâ. Selle probleemi mĂ”te seisneb selles, et tiimide vahel pole teabevahetust.. Iga meeskond sĂŒveneb oma ekspertiisi, samas luues ĂŒhist kaarti, mille jĂ€rgi orienteeruda.
See meenutab inimest, kes just saabus Moskvasse ja ei oska veel metroo kaartil orienteeruda. Moskvalased tunnevad oma piirkonda tavaliselt vÀga hÀsti, kuid Moskvasse orienteeruvad nad metroo kaardi jÀrgi. Kui sa jÔuad Moskvasse esmakordselt, pole seda oskust ja oled tÀiesti desorienteeritud.
DevOps pakub vĂ”imalust seda desorientatsiooni hetke ĂŒletada ning kĂ”igil osakondadel koos luua ĂŒhine suhtlemiskaart.
Sellele takistavad kaks tegurit.
Tulemuseks on ettevĂ”tte juhtimissĂŒsteem. See on ĂŒles ehitatud eraldi hierarhiliste 'kaevudena'. NĂ€iteks on teatud KPI-d ettevĂ”tetes, mis toetavad seda sĂŒsteemi. Teiselt poolt takistavad seda inimeste mĂ”tlemine, kellel on raske oma ekspertiisi piire ĂŒletada ja sĂŒsteemi ĂŒldiselt orienteeruda. See on lihtsalt ebamugav. Kujutage ette, et olete Bangkokis lennujaamas â seal ei orienteeru kiiresti. DevOpsis on samuti keeruline orienteeruda, seetĂ”ttu ĂŒtlevad inimesed, et on vaja leida juht, et sinna jĂ”uda.
Kuid kÔige olulisem on see, et «kaevude» probleem insenerile, kes on DevOps'i vaimu sisse elanud, lugenud Fowlerit ja palju teisi raamatuid, vÀljendub selles, et «kaevud» ei vÔimalda teha «ilmselgeid» asju.Me koguneme sageli pÀrast DevOps Moscow't, rÀÀgime omavahel ja inimesed kurdavad:
â Me tahtsime lihtsalt CI kĂ€ivitada, aga selgus, et juhtkonnale see ei sobi.
See toimub just seetĂ”ttu, et CI ja Continuous Delivery process asuvad paljude teadmiste piiril. Lihtsalt kaevude probleemi ĂŒletamata organisatsioonilisel tasandil ei saa edasi liikuda, ĂŒkskĂ”ik mida te ka ei teeks ja kui kurb see ka ei oleks.

Iga protsessis osaleja ettevĂ”ttes: tagasisuunajate ja esitusnĂ”ustajate arendajad, testimine, DBA, haldamine, vĂ”rk, kaevandab oma suunas, kuid ĂŒldist kaarti ei oma keegi peale juhtkonna, kes neid kuidagi vaatab ja juhib meetodiga «jaga ja valitse».
Inimesed vĂ”itlevad mingite tĂ€histe vĂ”i lippude nimel, igaĂŒks kaevandab oma ekspertteadmisi.
KokkuvĂ”ttes, kui ĂŒlesanne on kĂ”ik see koos siduda ja luua ĂŒhine töövoog, ning tĂ€hed ja lipud enam ei hĂ€iri, tekib kĂŒsimus â mida siis ĂŒldse teha? Peame kuidagi kokku leppima, aga kuidas seda teha, meid koolis ei Ă”petatud. Oleme juba koolist harjunud: kaheksas klass - ohhoo! - vĂ”rreldes seitsmenda klassiga! Siin on sama moodi.
Kas teie ettevÔttes on samuti?
Selle kontrollimiseks vĂ”ib endalt esitada jĂ€rgmised kĂŒsimused.
Kas meeskonnad kasutavad ĂŒhiseid tööriistu, kas nad panustavad nende ĂŒhiste tööriistade muutmisse?
Kui tihti meeskonnad ĂŒmber moodustatakse â kas spetsialistid ĂŒhest meeskonnast liiguvad teise meeskonda? Just DevOps keskkonnas saab sellest norm, sest mĂ”nikord ei saa inimene lihtsalt aru, millega tegeleb teine teadmisvaldkond. Ta liigub teise osakonda, töötab seal paar nĂ€dalat, et luua endale orienteerumiskaart ja suhtlemine selle osakonnaga.
Kas on vĂ”imalik luua muudatuskomitee ja midagi muuta? VĂ”i on selleks vajalik kĂ”rgeima juhtkonna tugev kĂ€si ja korraldus? Hiljuti kirjutasin Facebookis, kuidas ĂŒks vĂ€he tuntud pank korralduste kaudu tööriistu rakendab: kirjutatakse korraldus, aasta rakendatakse, vaadatakse, mis juhtub. See on muidugi pikk ja kurb protsess.
Kui oluline on juhtide jaoks saada isiklikke saavutusi, arvestamata ettevÔtte saavutusi?
Kui vastate endale nendele kĂŒsimustele, siis on selgem, kas teil on ettevĂ”ttes selline probleem.
Infrastruktuur kui kood
PĂ€rast seda, kui see probleem on lahendatud, on esimene oluline praktika, milleta DevOps'is edasi liikumine on keeruline â see on infrastruktuur kui kood.
KÔige sagedamini mÔistetakse infrastruktuuri kui koodi nii:
â Automatiseerime kĂ”ik bash'is, mÀÀritame end skriptidega, et adminni töö oleks vĂ€hem kĂ€sitsi!
Aga see pole nii.
Infrastruktuur kui kood tĂ€hendab, et IT-sĂŒsteemi, millega töötate, kirjeldatakse koodina, et pidevalt mĂ”ista selle seisundit.
Koostöös teiste meeskondadega loote kaardi koodivormingus, mis on kĂ”igile arusaadav ja mille jĂ€rgi saab orienteeruda ja navigeerida. Pole oluline, millest see on tehtud â Chef, Ansible, Salt, vĂ”i kasutatakse YAML-faile Kubernetes'is â ei ole vahet.
Konverentsil rÀÀkis kolleeg 2GIS-ist, kuidas nad lĂ”id oma sisemise lahenduse Kubernetes'i jaoks, mis kirjeldab ĂŒksikute sĂŒsteemide ĂŒlesehitust. 500 sĂŒsteemi kirjeldamiseks vajasid nad eraldi tööriista, mis selle kirjelduse genereerib. Kui see kirjeldus on olemas, saavad kĂ”ik ĂŒksteisega vĂ”rrelda, jĂ€lgida muudatusi ning mĂ”ista, kuidas seda muuta ja tĂ€iustada, mida puudu on.
Kokkuleppel, eraldi bash-skriptid ei anna tavaliselt seda arusaamist. Ăhes ettevĂ”ttes, kus ma töötasin, oli isegi nimeks "write only"-skript â kui skript on kirjutatud, siis ei ole seda enam vĂ”imalik lugeda. Arvan, et see on teilegi tuttav.
Infrastruktuur koodina â see on kood, mis kirjeldab infrastruktuuri tegelikku seisundit. Selle koodiga töötab ĂŒhiselt mitmeid toote-, infrastruktuuri- ja teenindusmeeskondi ning mis kĂ”ige tĂ€htsam, kĂ”ik nad peavad aru saama, kuidas see kood ĂŒldse töötab.
Kood jĂ€rgib parimaid praktikaid koodiga töötamisel.: koostööarendamine, koodikontroll, XP-programmeerimine, testimine, pull-requestid, CI koodiinfrastruktuuride jaoks â see kĂ”ik on kasulik ja kasutatav.
Kood muutub kĂ”igi inseneride ĂŒhise keelena.
Infrastruktuuri muutmine koodis ei vĂ”ta palju aega.. Jah, ka infrastruktuurikoodis vĂ”ib olla tehnilist vĂ”lga. TĂŒĂŒpiliselt seisavad meeskonnad silmitsi sellega umbes poolteise aasta pĂ€rast seda, kui nad on hakanud rakendama 'infrastruktuuri kui koodi' hulgana skripte vĂ”i isegi Ansible'i, mida nad kirjutavad nagu spagetikood ja lisavad sinna veel bash-skripte!
Oluline: kui te pole seda veel proovinud, pidage meeles, et Ansible ei ole bash! KĂ”igepealt lugege hoolikalt dokumentatsiooni, uurige, mida selle kohta ĂŒldse kirjutatakse.
Infrastruktuur kui kood tÀhendab infrastruktuurikoodi jagamist eraldi kihtideks.
Meie ettevĂ”ttes mÀÀratleme kolm pĂ”hikihti, mis on vĂ€ga arusaadavad ja lihtsad, kuid neid vĂ”ib olla rohkem. Saate vaadata oma infrastruktuuri koodi ja öelda, kas teil on see tingimus vĂ”i mitte. Kui ĂŒhtegi kihti ei mÀÀratleta, tuleb leida aega ja teha natuke refaktoreerimist.

PĂ”hikih â see on nagu operatsioonisĂŒsteemi seadistamine, varukoopiad ja muud madalamal tasemel asjad, nĂ€iteks kuidas Kubernetes baasvĂ€lja mÀÀrata.
Teenuste tase â need on teenused, mida te arendajale pakute: logimine teenusena, monitooring teenusena, andmebaas teenusena, koormuse tasandaja teenusena, jĂ€rjekord teenusena, pidev tarnimine teenusena â hulk teenuseid, mida eri meeskonnad saavad arendusele pakkuda. KĂ”ik need tuleb teie konfiguratsiooni haldussĂŒsteemis eraldi moodulitena kirjeldada.
Kiht, kus rakendused luuakse ja kirjeldatakse, kuidas need kahel eelpool nimetatud kihil vÀlja on arendatud.
KontrollkĂŒsimused
Kas teie ettevĂ”ttel on ĂŒhine infrastruktuurihoidla? Kas te haldate infrastruktuuri tehnilist vĂ”lga? Kas te rakendate arenduspraktikaid infrastruktuuri hoidlas? Kas teie infrastruktuur on kihiti jagatud? VĂ”ite viidata Base-service-APP skeemile. Kui keeruline on muudatusi teha?
Kui olete kokku puutunud olukorraga, kus muudatuste tegemine vĂ”ttis poolteist pĂ€eva, siis tĂ€hendab see, et teil on tekkida saanud tehniline vĂ”lg, mille kallal on vaja töötada. Teatud on, et olete komistanud infrastruktuurikoodi tehnilise vĂ”la kuristikku. MĂ€letan palju selliseid juhtumeid, kus mingite CCTL muutmine nĂ”udis poolte infrastruktuuri koodi ĂŒmberkirjutamist, kuna loovus ja soov kĂ”ik automatiseerida viisid selleni, et kĂ”ik on ummistunud, kĂ”ik juhtmed on eemaldatud ja see vajab refaktooringut.
JĂ€tkuv tarnimine
KĂ€ime lĂ€bi deebetkrediidiga. Esiteks antakse ĂŒlevaade infrastruktuurist, mis vĂ”ib olla ĂŒsna pĂ”hiline. Pole tingimata vajalik kĂ”ike ĂŒksikasjalikult kirjeldada, kuid mingist pĂ”hikirjelduse olemasolu on vajalik, et saaksite sellega töötada. Vastasel juhul ei ole selge, mille peal edasi pidevat tarnimist teha. KĂ”ik need praktikad kĂ€ivad kĂ€sikĂ€es, kui jĂ”uate DevOpsini, kuid alustamiseks peab mĂ”istma, mis teil on ja kuidas sellega hallata. See on just praktikaks infrastruktuuri kui koodi.
PĂ€rast seda, kui on arusaadav, mis teil on ja kuidas sellega hallata, hakkate vĂ€lja mĂ”tlema, kuidas arendaja koodi vĂ”imalikult kiiresti tootmisse saata. Ma mĂ”tlen koos arendajaga â peame meeles probleemi, et âkaevudâ ei ole sellised, et eraldi inimesed seda vĂ€lja mĂ”tleksid, vaid kogu meeskonna koostöös.
Kui me Vaneja JevtuhoviÄiga nĂ€gime esimest raamatut Jez Hambula ja autorite rĂŒhma «Continuous Delivery», mis kĂ€idi vĂ€lja 2009. aastal, mĂ”eldi kaua, kuidas tĂ”lkida selle pealkiri eesti keelde. Soovisime tĂ”lkida kui "Alati toimetama", aga kahjuks tĂ”lgiti kui "JĂ€tkuv tarnimine". Tundub, et meie pealkirjas on midagi venekeelset, millega on seotud kindel tahe.
Alati toimetama â see tĂ€hendab
Kood, mis asub tootehoidlas, vĂ”ib alati minna tootmisse. See vĂ”ib olla ka mitte vĂ€lja viidud, kuid on alati selleks valmis. SeetĂ”ttu kirjutate alati koodi teatud seletamatu Ă€revustunde saatel. See tunne tekib sageli, kui tĂ”state infrastruktuurikoodi. See teatud Ă€revus peaks olema kohal â see kutsub esile mĂ”tteprotsesse, mis aitavad kirjutada koodi veidi teistsuguselt. See peaks olema fikseeritud arendusreeglites.
Alati toimetamiseks on vajalik artefakti formaat, mis lĂ€bib infrastruktuuriplatvormi. Kui te viskate erineva formaadi "elutoas aitavaid" jÀÀke infrastruktuursele platvormile, siis see muutub teie jaoks mitteĂŒhtseks, seda on keeruline hooldada ja tekib tehnilise vĂ”la probleem. Artefakti vorm tuleb ĂŒhtlustada â see on ka kollektiivne ĂŒlesanne: tuleb kĂ”ik koos kokku tulla, mĂ”tiskleda ja vĂ€lja mĂ”elda see formaat.
Artefakti tĂ€iustatakse pidevalt ning see muutub tootmiskeskkonna jĂ€rgi, kui see liigub tarnimise torustiku kaudu. Kui artefakt liigub torustikus, siis ta pidevalt kohtub mingite ebamugavate asjadega, mis sarnanevad sellele, millega seisab silmitsi artefakt, mille te tootmisse viite. Kui klassikalises arenduses tegeleb sellega sĂŒsteemihaldur, kes teeb vĂ€ljalaskmist, siis DevOps-protsessis toimub see pidevalt: seal on teda katsetega keerutatud, siin on ta visatud Kubernetes-klastrisse, mis on enam-vĂ€hem sarnane tootmisele, ja siis jĂ€rsku kĂ€ivitatakse koormustestimine.
See on midagi sarnast Pac-Man mĂ€nguga â artefakt lĂ€bib teatud loo. Oluline on jĂ€lgida, kas kood tĂ”esti jĂ€rgib lugu ja kas see on seotud teie tootmisega. Toote lood saab integreerida pideva kohaletoimetamise protsessi: varem juhtus midagi hĂ€da, nĂŒĂŒd programmeerime selle stsenaariumi lihtsalt sĂŒsteemi. Iga kord, kui kood seda stsenaariumi lĂ€bib, ei puutu te selle probleemiga enam kokku jĂ€rgmine kord. Te saate sellest teada palju kiiremini, kui see jĂ”uab teie kliendini.
Erinevad juurutamisstrateegiad. NÀiteks kasutate AB-testimist vÔi kanarode juurutamisi, et eri klientidel koodi erinevalt "katsetada", teades, kuidas kood töötab, ja seda palju varem, kui see jÔuab 100 miljoni kasutajani.
"Pidev kohaletoimetamine" nÀeb vÀlja nii.

Tootmisprotsess Dev, CI, Test, PreProd, Prod â see ei ole eraldi keskkond, vaid etapid vĂ”i jaamad, mille kaudu teie artefakt liigub.
Kui teil on infrastruktuuri kood, mis on kirja pandud Base Service APP-ina, siis see aitab mitte unustada kÔiki stsenaariume., ja salvestada need ka koodi kujul selle objekti jaoks, edendada objekti ja muuta seda protsessi kÀigus.
Enesehinnanguks kĂŒsimused
Kas funktsiooni kirjeldamisest kuni tootmisseviimiseni kulub 95% juhtudest vÀhem kui nÀdal? Kas objekti kvaliteet paraneb igas etapis toimeprotsessis? Kas sellel on ajalugu, mille kaudu see lÀbib? Kas kasutate erinevaid rakendamisstrateegiaid?
Kui kÔik vastused on jah, siis olete te uskumatu! Kirjutage vastused kommentaaridesse - mul oleks rÔÔm).
Tagasiside
See on kÔige keerulisem praktika kÔigist. DevOpsConf'i konverentsil rÀÀkis kolleeg Infobipist sellest ja segas end veidi sÔnades, sest see on tÔepoolest vÀga keeruline praktika, mis kÀsitleb seda, et tuleb jÀlgida tÔeliselt kÔike!

NÀiteks, kaua aega tagasi, kui töötasin Qik'is ja me mÔistsime, et tuleb jÀlgida tÔeliselt kÔike. Me tegime seda ja meie Zabbix'is oli 150 000 objekti, mida jÀlgiti pidevalt. See oli hirmutav, tehniline direktor keerutas sÔrme oma lasku:
â Kutsikad, miks te serverit niimoodi mĂ”ttetult piinate?
Aga siis juhtus juhus, mis nÀitas, et see on tÔeliselt Àge strateegia.
Ăks teenus hakkas pidevalt kokku kukkuma. Alguses see ei kukkunud, huvitav on see, et sinna ei kirjutatud uut koodi, kuna see oli pĂ”hiline broker, kus praktiliselt ei olnud Ă€rifunktsionaalsust â see lihtsalt edastas sĂ”numeid erinevate teenuste vahel. Teenus ei olnud muutunud 4 kuu jooksul ja Ă€kki hakkas see kukkuma veaga «Segmentation fault».
Olimme ĆĄokis, avasime meie Zabbix'i grafi ja selgus, et poolteist nĂ€dalat tagasi olid API-teenuse pĂ€ringute kĂ€itumine tugevalt muutunud, mis kasutab seda brokereid. Edasi vaatasime, et teatud tĂŒĂŒpi sĂ”numite saatmise sagedus oli muutunud. Hiljem sai selgeks, et need on android-klientide pĂ€ringud. KĂŒsisime:
â Poisid, mis teiega poolteist nĂ€dalat tagasi juhtus?
Vastas kuuldi huvitavat lugu sellest, kuidas nad kasutajaliidest uuendasid. Raske on kohe öelda, et nad muutsid HTTP-raamatukogu. Androidi klientidele on see nagu seepi vahetada vannitoas â nad lihtsalt ei mĂ€leta seda. LĂ”puks, pĂ€rast 40 minutit vestlust, selgus, et nad tĂ”epoolest vahetasid HTTP-raamatukogu ja sellel muutusid vaikeseaded. See tĂ”i kaasa muudatused API serveri liikluse kĂ€itumises, mis omakorda viis olukorrani, mis pĂ”hjustas vĂ”istluse brokera sees, mille tĂ”ttu ta hakkas kokku kukkuma.
Ilma sĂŒvamonitorimiseta on seda ĂŒldse vĂ”imatu avastada.. Kui organisatsioonis on veel probleem âkaevudeâ osas, kus kĂ”ik liigutavad vastutust ĂŒksteisele, vĂ”ib see kesta aastaid. Sa lihtsalt taaskĂ€ivitad serveri, sest probleemi lahendamine on vĂ”imatu. Kui sa jĂ€lgid, monitoorid ja jĂ€lgid kĂ”iki sĂŒndmusi, mis sul on, ning kasutad monitooringut testimise viisina â kirjutad koodi ja kohe nĂ€itad, kuidas seda monitoorida, samuti koodina (meil on juba infrastruktuur koodina), siis kĂ”ik saab selgeks nagu peopesa peal. Ieven sellised keerulised probleemid on kergesti jĂ€lgitavad.

Koguge kogu teavet selle kohta, mis toimub artefaktiga iga etapi jooksul tarneprotsessis â mitte tootmisel.
Laadige jĂ€lgimine CI-sse, seal saate juba nĂ€ha mĂ”ned pĂ”hiasjad. Edasi nĂ€ete neid nii Testis, PredProd-s kui ka koormustestimisel. Koguge teavet kĂ”igil etappidel, mitte ainult mÔÔdikute, statistika, vaid ka logide osas: kuidas rakendus vĂ€lja lasti, anomaaliad â koguge kĂ”ik.
Vastasel juhul on keeruline aru saada. Olen juba öelnud, et DevOps on suurem keerukus. Selle keerukusega toimetulemiseks on vajalik omada head analĂŒĂŒtikat..
Enesekontrolli kĂŒsimused
Kas teie jÀlgimine ja logimine on teie jaoks arendustööriist? Kas teie arendajad, sealhulgas teie ise, mÔtlevad koodi kirjutades sellele, kuidas seda jÀlgida?
Kas saate probleemidest teada klientidelt? Kas mĂ”istate klienti paremini jĂ€lgimise ja logimise kaudu? Kas mĂ”istate sĂŒsteemi paremini jĂ€lgimise ja logimise kaudu? Kas muudate sĂŒsteemi lihtsalt seetĂ”ttu, et nĂ€ete, et sĂŒsteemi trend kasvab ja mĂ”istate, et veel 3 nĂ€dalat ja kĂ”ik kukub kokku?
Kui teil on need kolm komponenti, vÔite mÔelda, milline infrastruktuuri platvorm teil on ettevÔttes.
Infrastruktuuri platvorm
MÔte ei ole selles, et see on hulk lahusolevaid tööriistu, mis on igas ettevÔttes olemas.
Infrastruktuuri platvormi mÔte on see, et kÔik meeskonnad kasutavad neid tööriistu ja arendavad neid koos.
Selge on, et on eraldi meeskonnad, kes vastutavad infrastruktuuri platvormi eraldi osade arendamise eest. Kuid vastutus arendamise, töökindluse ja infrastruktuuri platvormi edendamise eest lasub igal inseneril. Sisemiselt muutub see ĂŒldiseks tööriistaks.
KÔik meeskonnad arendavad infrastruktuuri platvormi, kÀitudes selle suhtes hoolikalt nagu omaenda IDE-de vastu.. Oma IDE-s seadistate erinevaid pluginaid, et kÔik oleks ilus ja kiire, kohandate otseteid. Kui avate Sublime'i, Atomi vÔi Visual Studio Code'i, sadavad teile koodivead ja te saate aru, et on tÀiesti vÔimatu töötada, tunnete kohe kurbust ja jooksete oma IDE-d parandama.
Suhtuge oma infrastruktuuri platvormi sama tĂ”siselt. Kui te mĂ”istate, et midagi on valesti, siis esitage taotlus, kui te ei suuda seda ise parandada. Kui probleem on aga lihtne, parandage see ise ja saatke pull request â arendajad vaatavad selle ĂŒle ja lisavad. See on erinev lĂ€henemine arendaja tööriistadele.
Infrastruktuuri platvorm tagab artefakti ĂŒlekande arendusest kliendini, pideva kvaliteedi parandamisega.. Infrastruktuuri platvormil on programmeeritud hulk lugusid, mis juhtuvad koodiga tootmises. Aastate jooksul on nendest lugudest saanud vĂ€ga palju, osa neist on unikaalsed ja seotud ainult teiega â neid ei ole vĂ”imalik Google'ist leida.
Sel hetkel muutub infrastruktuuri platvorm teie konkurentsieeliseks, sest selles on sisse kodeeritud midagi, mida konkurendi tööriistadel ei ole. Mida sĂŒgavam on teie infrastruktuuri platvorm, seda suurem on teie konkurentsieelis Time-to-market osas. Siin kerkib esile vendor lock probleem.: saate endale vĂ”tta kellegi teise platvormi, kuid kasutades kellegi teise kogemust, ei saa te aru, kui asjakohane see teie jaoks on. Jah, mitte iga ettevĂ”te ei saa ĂŒles ehitada Amazoni tĂŒĂŒpi platvormi. See on keeruline piiriĂŒlene asi, kus ettevĂ”tte kogemus on seotud selle turupositsiooniga, ja sinna ei tohi lubada vendor lock'i. Sellele on samuti oluline mĂ”elda.
Skeem
See on infrastruktuuri platvormi pÔhiskeem, mis aitab teil seadistada kÔik praktikas ja protsessides DevOps ettevÔttes.

Vaatame, millest see koosneb.
Ressursside orkestreerimise sĂŒsteem, mis pakub rakendustele ja teistele teenustele CPU-d, mĂ€lu, kettaruumi. Selle peal on madala taseme teenused: jĂ€lgimine, logimine, CI/CD mootor, artefaktide ladustamine, infrastruktuur kui kood.
KÔrgema taseme teenused: andmebaas kui teenus, jÀrjekorrad kui teenus, Load Balance kui teenus, piltide suuruse muutmine kui teenus, Big Data tehas kui teenus. Selle peal on torujuhe, mis edastab pidevalt muudetud koodi teie kliendile..
Te saate teavet selle kohta, kuidas teie tarkvara kliendil töötab, muudate, uuesti tarnite selle koodi, saate teavet â ning nii arendate pidevalt nii infrastruktuuri platvormi kui ka teie tarkvara.
Kujundusel koosneb kohaletoimetamise torustik mitmest etapist. Kuid see on pĂ”himĂ”tteline skeem, mis on toodud nĂ€itena â ei pea seda tĂ€pselt kordama. Etapid suhtlevad teenustega nagu teenustega â iga platvormi ehitis kannab oma ajalugu: kuidas ressursse eraldatakse, kuidas rakendus kĂ€ivitub, töötab ressurssidega, jĂ€lgitakse, muudetakse.
Oluline on mĂ”ista, et iga platvormi osa kannab ajalugu, ja kĂŒsida endalt â millist ajalugu kannab see element, vĂ”ib-olla tasub see vĂ€lja vahetada ja asendada kolmanda osapoole teenusega. NĂ€iteks, kas vĂ”iksime selle kivi asemel kasutada Okmeter'i? VĂ”ib-olla on nad juba selle ekspertiisi palju paremini ĂŒles ehitanud kui meie. Aga vĂ”ib-olla mitte â vĂ”ib-olla on meil ainulaadne ekspertiis, peame kasutama Prometheuse ja seda edasi arendama.
Platvormi loomine
See on keeruline kommunikatsiooniprotsess. Kui teil on pĂ”hipraktikad paigas, alustate suhtlemist erinevate inseneride ja spetsialistidega, kes töötavad vĂ€lja nĂ”udmisi ja ŃŃĐ°ĐœĐŽĐ°Ńte ning muudavad neid pidevalt vastavalt erinevatele tööriistadele ja lĂ€henemisviisidele. Siin on oluline kultuur, mis on DevOps-is.

Kultuuriga on kĂ”ik vĂ€ga lihtne â see on koostöö ja suhtlemine, see tĂ€hendab soov töötada ĂŒhiselt, jagada sama tööriista. Siin ei ole midagi keerulist â kĂ”ik on vĂ€ga lihtne ja tavaline. NĂ€iteks elame kĂ”ik trepikojas ja hoiame selle puhtana â see on kultuuri tase.
Ja kuidas on teil?
JĂ€lle kĂŒsimused, mida vĂ”ite endalt kĂŒsida.
Kas infrastruktuuri platvorm on eraldatud? Kes vastutab selle arengu eest? Kas te mÔistate oma infrastruktuuri platvormi konkurentsieeliseid?
Nendele kĂŒsimustele tuleb pidevalt vastuseid otsida. Kui midagi saab vĂ€listeenustele ĂŒle anda â tuleks seda teha, ja kui vĂ€line teenus hakkab teie edasiviimist takistama, tuleb sĂŒsteem endas ĂŒles ehitada.
Nii et DevOpsâŠ
⊠see on keeruline sĂŒsteem, kus peavad olema:
- Digitaalne toode.
- Ărise mudeleid, mis arendavad seda digitaalset toodet.
- Tootemeeskonnad, kes kirjutavad koodi.
- JĂ€tkuva tarne praktikad.
- Platvormid teenusena.
- Infrastruktuur teenusena.
- Infrastruktuur kui kood.
- Eramugavad praktikad, mis toetavad usaldusvÀÀrsust ja on DevOpsisse integreeritud.
- Tagasiside praktika, mis kirjeldab seda kÔike.

Seda skeemi saab kasutada, vÀrvides selle sisse, mis teil juba ettevÔttes mingil kujul olemas on: see on arenenud vÔi vajab veel arendamist.
Juba paar nÀdalat hiljem toimub . osana RIT++. Tulge konverentsile, kus ootavad teid paljud lahedad ettekanded jÀtkuva tarnimise, infrastruktuuri kui koodi ja DevOps-i transformatsiooni kohta. , viimase hindade tÀhtaeg on 20. mai.
Allikas: habr.com
