Mis on DevOps

DevOps'i mÀÀratlemine on vÀga keeruline, mistÔttu tuleb seda igal korral uuesti arutada. Ainult Habr'ist leiate tuhandeid selle teema avaldusi. Kuid kui te seda loete, siis teate kindlasti, mis on DevOps. Sest mina - ei tea. Tere, minu nimi on Aleksandr Titov (@osminog), ja me rÀÀgime lihtsalt DevOps'ist ja jagan oma kogemusi.

Mis on DevOps

Olin pikka aega mĂ”elnud, kuidas muuta oma jutt kasulikuks, seega on siin palju kĂŒsimusi - neid, mida ma endale esitan, ja neid, mida esitan meie ettevĂ”tte klientidele. Neile kĂŒsimustele vastates saavad arusaamad selgemaks. RÀÀgin, miks on DevOps vajalik minu vaatenurgast, mis see on, jĂ€lle minu positsioonist, ja kuidas mĂ”ista, kas teie ettevĂ”te liigub taas DevOps'i suunas minu vaatenurgast. Viimane punkt tuleb kĂŒsimuste kaudu. Vastates neile endale, saate aru, kas teie ettevĂ”te liigub DevOps'i suunas vĂ”i on milleski probleeme.

MĂ€ngi videot

Mingil ajal navigeerisin ĂŒhinemiste ja omandamiste lainetel. Esiteks töötasin vĂ€ikeses idufirmas Qik, mille seejĂ€rel ostis veidi suurem ettevĂ”te Skype, mille seejĂ€rel ostis veelgi suurem ettevĂ”te Microsoft. Selle hetke jooksul sain aimu, kuidas DevOps'i arusaam erineva suurusega ettevĂ”tetes muutub. PĂ€rast seda tekkis mul huvi DevOps'i turu poole vaatamine ja koos kolleegidega korraldasime ettevĂ”tte Ekspress 42. Oleme juba 6 aastat sellel turul lainetel liikunud.

Lisaks olen ĂŒks DevOps Moscow kogukonna korraldajatest ja 2017. aasta DevOps Days'i korraldaja, kuid 2018. aastal ei korraldanud ma. Ekspress 42 teeb koostööd paljude ettevĂ”tetega. Arendame seal DevOps'i, vaatame, kuidas see toimub, teeme jĂ€reldusi, analĂŒĂŒsime, jagame oma jĂ€reldusi kĂ”igile, koolitame inimesi DevOps'i praktikate osas. ÜhesĂ”naga, kasvame selles osas kogemusi ja ekspertiisi.

Miks DevOps

Esimene kĂŒsimus, mis kĂ”iki alati kummitab - miks? Paljud arvavad, et DevOps on lihtsalt automatiseerimine vĂ”i sarnane asi, mis juba igas ettevĂ”ttes olemas on.

- Meil oli pidev integratsioon - see tÀhendab, et DevOps oli juba olemas, miks on siis kogu see jama vajalik? Seal vÀlismaal lÔbutsetakse, aga meile takistatakse tööd!

9 aasta jooksul arendatud kogukonna ja metoodika kÀigus on selgeks saanud, et see ei ole pelgalt turunduspettus, kuid siiani ei ole tÀielikult selge, miks see vajalik on. Nagu igal vÔtmel ja protsessil, on DevOps-il konkreetsed eesmÀrgid, mida ta lÔpuks saavutab.

See kÔik on seotud sellega, et maailm muutub. See liigub eemale ettevÔtte lÀhenemisest, kus ettevÔtted liiguvad otse unistuste suunas, nagu laulis meie peterburilik klassik, punktist A punkti B kindla strateegia kaudu, mille jaoks on loodud mÀÀratud struktuur.

Mis on DevOps

PÔhimÔtteliselt peaks IT kÔike seda lÀhenemist jÀrgima. Siin kasutatakse IT-d ainult protsesside automatiseerimiseks.

Automatiseerimine ei muutu sageli, kuna kui ettevĂ”te liigub kindlat rada pidi — mis seal siis muuta? Kui see töötab, Ă€ra puutu. Praegu maailmas lĂ€henemised muutuvad, ja see, mida nimetatakse Agile'iks, ĂŒtleb, et lĂ”pp-punkti B ei ole kohe nĂ€htav.

Mis on DevOps

Kui ettevĂ”te liigub turul, suhtleb klientidega — ta uurib pidevalt turgu ja muudab lĂ”pp-punkti B. Mida tihedamalt ettevĂ”te oma suunda muudab, seda rohkem see lĂ”puks Ă”nnestub, kuna ta valib rohkem turuniĆĄĆĄe.

Strateegiat demonstreerib huvitav ettevĂ”te, millest ma hiljuti kuulsin. One Box Shave — tellimuste jĂ€rgi raseerimisvahendite ja -tarvikute kohaldamise teenus. Nad oskavad kohandada oma "karpi" erinevatele klientidele. Sellega tegeleb kindel tarkvara, mis saadab seejĂ€rel tellimuse Korea tehasesse, kus toodet valmistatakse.

Selle toote ostis ettevĂ”te Unilever 1 miljardi dollari eest. NĂŒĂŒd konkurseerib see Gillette'iga ja on vĂ”tnud USA turul sellelt olulise osa tarbijatest. One Box Shave ĂŒtleb:

— 4 tera? Oled tĂ”siselt? Miks sul seda vaja on — see ei paranda kvaliteeti raseerimise. Spetsiaalselt valitud kreem, lĂ”hnaine ja kvaliteetne raseerija kahe teraga lahendavad palju rohkem probleeme kui need rumalad 4 tera Gillette'il! Varsti jĂ”uame 10 tera juurde?

Nii muutub maailm. Unilever teatab, et neil on lahe IT-sĂŒsteem, mis vĂ”imaldab seda teha. LĂ”puks nĂ€eb see vĂ€lja nagu kontseptsioon Time-to-market, millest on juba rÀÀkinud, kes iganes.

Mis on DevOps

Time-to-market mĂ”te ei seisne selles, kui sageli me vĂ€lja anname. Sageli vĂ”ib vĂ€lja anda, kuid sel juhul on vĂ€ljaandetsĂŒklid pikad. Kui kolme kuu vĂ€ljaandetsĂŒklid ĂŒksteise peale asetada, nihutades nĂ€dalakese, tundub nagu ettevĂ”te vĂ€ljastab kord nĂ€dalas. Ent idee ja lĂ”pliku teostamise vahele jÀÀb 3 kuud.

Time-to-market tÀhendab aega, mis kulub ideest lÔpliku teostamiseni.

Selles juhul suhtleb turuga tarkvara. Nii nagu One Box Shave'i puhul suhtleb kliendiga veebisait. Neil pole mĂŒĂŒjaid - lihtsalt veebisait, kus kĂŒlastaja klĂ”psab ja jĂ€tab oma soovid. SeetĂ”ttu tuleb veebisaidil pidevalt midagi uut avaldada, et see vastaks soovidele. NĂ€iteks LĂ”una-Koreas habetakse teisiti kui Venemaal, ja neile meeldib ei ole mĂ€nni, vaid nĂ€iteks porgandi vanilli lĂ”hn.

Kuna tuleb kiiresti muuta veebisaidi sisu, muutub tarkvara arendus oluliselt. Tarkvara kaudu peame teada saama, mida klient soovib. Varem saime me seda teada ringteed pidi, nĂ€iteks Ă€rijuhtimise kaudu. Siis projekteerisime, panime nĂ”uded IT-sĂŒsteemi ja kĂ”ik oli suurepĂ€rane. Praegu on see aga teisiti - tarkvara projekteerivad kĂ”ik, kes on protsessis kaasatud, sealhulgas insenerid, sest nad saavad tehniliste omaduste kaudu teada, kuidas turg töötab, ja jagavad Ă€riga oma teadmisi.

NĂ€iteks ettevĂ”ttes Qik saime Ă€kki teada, et inimestele meeldib vĂ€ga kontaktloendeid serverisse ĂŒles laadida, ja nad andsid meile rakenduse. Me ei olnud algselt selle peale mĂ”elnud. Kliendiga tegelevas ettevĂ”ttes oleks kĂ”ik arvanud, et see on viga, kuna spetsiifikas ei olnud kirjutatud, et see peab hĂ€sti töötama, ja see oli ĂŒldiselt teostatud kiirustades, oleks funktsioon vĂ€lja lĂŒlitatud ja öeldud: „See pole kellelegi vajalik, peamine on, et peamine funktsionaalsus töötab“. Ahnates tehnoloogiaettevĂ”tte nĂ€eb sellises olukorras vĂ”imalust ja hakkab tarkvara vastavalt sellele muutma.

Mis on DevOps

1968. aastal sÔnastas ettevaatlik mees Melvin Conway jÀrgmise idee.

Organisatsioon, mis loob sĂŒsteemi, on piiratud selle disainiga, mis kopeerib kommunikatsioonistruktuuri selles organisatsioonis.

Kui rÀÀkida lĂ€hemalt, et toota teist tĂŒĂŒpi sĂŒsteeme, peab olema ka ettevĂ”ttes teistsugune suhtlemisstruktuur. Kui teie suhtlemisstruktuur on pealiskaudne ja hierarhiline, ei vĂ”imalda see teil luua sĂŒsteeme, mis suudavad tagada vĂ€ga kĂ”rge Time-to-market.

Lugege Conway seadusest saab linkide kaudu. See on oluline DevOpsi kultuuri vÔi filosoofia mÔistmiseks, kuna ainsus, mis DevOpsis fundamentaalselt muutub, on just suhtlemise struktuur meeskondade vahel..

Protsessi vaatenurgast on kogu DevOpsi eelnevad etapid: analĂŒĂŒs, arendus, testimine, kasutuselevĂ”tt, toimunud lineaarselt.Mis on DevOps
DevOpsi puhul toimuvad kÔik need protsessid samal ajal.

Mis on DevOps

Time-to-market saab tĂ€idetud ainult nii. Inimestele, kes on töötanud vanas protsessis, tundub see natuke ulmelisena ja ĂŒldiselt mitte just meeldivana.

Aga miks on vaja DevOpsi?

Digitaalsete toodete arendamiseks. Kui teie ettevĂ”ttes ei ole digitaalset toodet, ei ole DevOps vajalik – see on vĂ€ga oluline.

DevOps ĂŒletab tarkvaratootmise jĂ€rjestikuste meetodite kiiruspiiranguid. KĂ”ik protsessid toimuvad samal ajal.

Suurenev keerukus. Kui DevOpsi evangelistid rÀÀgivad, et sellega on teil lihtsam tarkvara vĂ€lja anda – see on jama.

DevOpsiga muutub kÔik ainult keerulisemaks.

Konverentsil vĂ”is Avito stendil nĂ€ha, mis on Docker-konteineri ĂŒles seadmine – uskumatu ĂŒlesanne. Keerukus muutub ĂŒletamatuks, tuleb samal ajal peksta mitut palli.

DevOps muudab tĂ€ielikult protsessi ja korralduse ettevĂ”ttes – tĂ€psemalt mitte DevOps, vaid digitaalne toode. Et jĂ”uda DevOpsini, tuleb see protsess tĂ€ielikult muuta.

KĂŒsimused spetsialistile

Aga mis teil on? KĂŒsimused, mida saate endale esitada, töötades ettevĂ”ttes ja enesearendades spetsialistina.

Kas teil on digitaalsete toodete loomise strateegia? Kui on – juba hea. See tĂ€hendab, et teie ettevĂ”te liigub DevOpsi suunas.

Kas teie ettevĂ”te juba loob digitaalset toodet? See tĂ€hendab, et saate tĂ”usta veel ĂŒhele astmele kĂ”rgemale, tegutseda huvitavamate asjade kallal – DevOpi vaatenurgast. RÀÀgin ainult sellest vaatenurgast.

Kas teie ettevĂ”te on ĂŒks turuliidritest digitaalsete toodete niĆĄis? Spotify, Yandex, Uber — ettevĂ”tted, mis on praegu tehnoloogilise edusamme tipus.

KĂŒsi endalt neid kĂŒsimusi, ja kui kĂ”ik vastused on eitavad, siis vĂ”ib-olla ei tasu sul DevOpsiga selle ettevĂ”tte juures tegeleda. Kui aga sind DevOps tĂ”eliselt huvitab, vĂ”ib-olla
 peaksid sa minema teise ettevĂ”ttesse? Kui sinu ettevĂ”te soovib minna DevOpsi suunas, aga oled kĂ”igile kĂŒsimustele vastanud „Ei”, siis sarnaneb see toreda ninasarvikuga, kes ei muutu kunagi.

Mis on DevOps

Organisatsioon

Nagu ma juba ĂŒtlesin, muutub ettevĂ”ttes organisatsioon Conwy seaduse kohaselt. Alustan sellest, mis takistab DevOpsi tungimist ettevĂ”tte sisemusse just organisatsiooni seisukohalt.

„Silo” probleem

Inglise sĂ”na „Silo” on siin tĂ”lgitud vene keelde kui „ĐșĐŸĐ»ĐŸĐŽĐ”Ń†â€. Probleemi mĂ”te on selles, et meeskondade vahel ei toimu teabe vahetust. Iga meeskond kaevab oma ekspertiseerimist sĂŒgavale, ehitamata samas ĂŒhist kaarti, mille jĂ€rgi orienteeruda.

See meenutab inimest, kes just saabus Moskvasse ja ei oska veel metrookaardi jÀrgi orienteeruda. Moskvast pÀrit inimesed tunnevad oma piirkonda tavaliselt hÀsti, aga kogu Moskva piires orienteeruvad nad metrookaardi jÀrgi. Kui sa tuled Moskvasse esmakordselt, puudub see oskus ning sa oled lihtsalt segaduses.

DevOps kutsub ĂŒles minema lĂ€bi selle segaduse hetke ning koostama kĂ”igil osakondadel koos ĂŒhise suhtlemiskaardi.

Sellele takistavad kaks tegurit.

Korporatiivse juhtimissĂŒsteemi tagajĂ€rg. See on ĂŒles ehitatud eraldi hierarhiliste „siloide” peale. NĂ€iteks on ettevĂ”tetes teatud KPI-d, mis seda sĂŒsteemi toetavad. Teiselt poolt takistavad inimese mĂ”tted, kellel on keeruline vĂ€lja astuda oma ekspertiseerimisest ja orienteeruda kogu sĂŒsteemis. See on lihtsalt ebamugav. Kujutage ette, et olete sattunud Bangkokis asuvasse lennujaama — seal ei orienteeru kiiresti.

DevOpsis on samuti keeruline orienteeruda, ja seetĂ”ttu ĂŒtlevad inimesed, et on vaja leida giid, et sinna pÀÀseda. Kuid kĂ”ige olulisem on see, et „siloide” probleem insenerile, kes on mĂ”istnud DevOpsi vaimu, lugenud Fowlerit ja palju teisi raamatuid, vĂ€ljendub selles, et„siloid” ei luba teha „ilmseid” asju. Me koguneme sageli pĂ€rast DevOps Moskvast, suhtleme omavahel ning inimesed kurdavad:

— Me lihtsalt tahtsime CI-d kĂ€ivitada, aga juhtkonnale ei ole see vajalik.

See juhtub just seetĂ”ttu, et CI ja Continuous Delivery protsess asuvad paljude ekspertide piiril. Lihtsalt, kui ei suudeta probleem 'kaevudest' organisatsiooni tasandil ĂŒletada, ei Ă”nnestu edasi liikuda, ĂŒkskĂ”ik mida teete ja kui kurb see ka pole.

Mis on DevOps

Iga protsessi osaline ettevĂ”ttes: tagaplaneerijad ja esiplaneerijad, testimine, DBA, tegevus, vĂ”rk, kaevavad oma suunas, kuid ĂŒhtegi ĂŒldkaarti pole kellelgi, vĂ€lja arvatud juht, kes neid kuidagi jĂ€lgib ja haldab meetodiga 'jaga ja vali'.

Inimesed vĂ”itlevad mingite tĂ€hede vĂ”i lippude pĂ€rast, igaĂŒhel on oma ekspertiza.

LĂ”puks, kui tekib ĂŒlesanne kĂ”ik see kokku tuua ja ehitada ĂŒldine torujuhe, ning tĂ€hete ja lippude pĂ€rast enam ei pea vĂ”itlema, tekib kĂŒsimus - mida nĂŒĂŒd teha? Kuidas leppida kokku, aga seda ei Ă”petanud meile koolis. Oleme juba koolist harjunud: kaheksas klass - ohhoo! - vĂ”rreldes seitsmenda klassiga! Siin on sama.

Kas on teie ettevÔttes samuti?

Seda kontrollimiseks vĂ”ite esitada endale jĂ€rgmised kĂŒsimused.

Kas meeskonnad kasutavad ĂŒhiseid tööriistu, panustavad nad nende ĂŒhiste tööriistade muudatustesse?

Kui sageli meeskonnad ĂŒmber kĂ€ivad - mĂ”ned spetsialistid ĂŒhest meeskonnast lĂ€hevad teise meeskonda? Just DevOps keskkonnas muutub see normaalseks, sest mĂ”nikord ei saa inimene lihtsalt aru, millega teine ekspertiis tegeleb. Ta lĂ€heb teise osakonda, töötab seal paar nĂ€dalat, et luua endale orienteerumise ja suhtlemise kaart selle osakonnaga.

Kas on vĂ”imalik luua muudatuste komitee ja midagi muuta? VĂ”i on selleks vaja tugevat kĂ€tt kĂ”rgeimast juhtkonnast ja korraldust? Hiljuti kirjutasin Facebookis, kuidas ĂŒks vĂ€hetuntud pank lĂ€bi korralduste tööriistu rakendab: kirjutasime korralduse, rakendame aasta, vaatame, mis juhtub. See on loomulikult pikk ja kurb.

Kui oluline on juhtide jaoks saada isiklikke saavutusi, arvestamata ettevÔtte saavutusi?

Kui te neile kĂŒsimustele vastate, on parem arusaamine sellest, kas teil on ettevĂ”ttes selline probleem.

Infrastruktuur kui kood

PĂ€rast seda, kui see probleem on lahendatud, on esimene oluline praktika, ilma milleta on keeruline DevOpsis edasi liikuda, infrastruktuur kui kood.

Kuna infrastruktuuri kui koodi mÔistetakse sageli jÀrgmiselt:

— Automaatige kĂ”ik bash'is, katke end skriptidega, et administraatoritel oleks vĂ€hem kĂ€sitsi tööd!

Kuid see ei ole tÔsi.

Infrastruktuur kui kood tĂ€hendab, et IT-sĂŒsteem, millega te töötate, kirjeldatakse koodina, et pidevalt mĂ”ista selle seisundit.

Koos teiste meeskondadega loote koodi kujul kaardi, mis on kĂ”igile arusaadav ja mille kaudu saab orienteeruda ja navigeerida. Pole vahet, kas see on tehtud Chef'i, Ansible'i, Salt'i abil vĂ”i kasutatakse YAML-faile Kubernetes'is — vahet pole.

Konverentsil rÀÀkis kolleeg 2GIS-st, kuidas nad lĂ”id oma sisemise tööriista 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, kuidas seda muuta ja tĂ€iustada, millest puudu jÀÀb.

Olge nĂ”us, eraldi bash-skriptid ei anna tavaliselt seda arusaamist. Ühes ettevĂ”ttes, kus ma töötasin, oli isegi nimetus "write only"-skript — kui skript on kirjutatud, siis ei saa seda enam lugeda. Ma arvan, et see on teile samuti tuttav.

Infrastruktuur kui kood on kood, mis kirjeldab infrastruktuuri tegelikku seisundit. Selle koodi kallal töötab koos hulk toote-, infrastruktuuri- ja teenuste meeskondi ning kĂ”ige tĂ€htsam on, et kĂ”ik nad peavad mĂ”istma, kuidas see kood ĂŒldse töötab.

Kood on dokumenteeritud parimate kooditöötluspraktikate jĂ€rgselt: koostöö arendus, koodivaatlus, XP-programmeerimine, testimine, pull-requestid, CI infrastruktuuri koodi jaoks — see kĂ”ik on hea ja seda saab kasutada.

Koodist saab kĂ”ikide inseneride ĂŒhine keel.

Infrastruktuuri muutmine koodis ei vÔta palju aega. Jah, infrastruktuuri koodis vÔib samuti olla tehniline vÔlg. Tavaliselt kohtavad meeskonnad seda umbes poolteise aasta pÀrast, kui nad on hakanud rakendama "infrastruktuuri kui kood" kujul hunnik skripte vÔi isegi Ansible'i, mille nad kirjutavad nagu spagetikood, ja lisavad sinna veel bash-skripte.

Oluline: kui te pole seda jama veel proovinud, pidage meeles, et Ansible ei ole bash! Lugege hoolikalt dokumentatsiooni, uurige, mida selle kohta ĂŒldiselt kirjutatakse.

Infrastruktuur kui kood on infrastruktuurikoodi jagamine eraldi kihtideks.

Meie ettevÔttes eristame kolme pÔhikihti, mis on hÀsti arusaadavad ja lihtsad, kuid neid vÔib olla rohkem. Saate vaadata oma infrastruktuurikoodi ja öelda, kas teil on see tingimus vÔi mitte. Kui kihte ei ole eristatav, siis tuleb leida aega ja natuke refaktoreerida.
Mis on DevOps

PĂ”hikiht on see, kuidas konfigureeritakse OS, varukoopiad ja muud madala taseme asjad, nĂ€iteks kuidas Kubernetes pĂ”hitootena ĂŒles seada.

Teenuste tase on need teenused, mida te arendajale pakute: logimise teenus, jĂ€lgimise teenus, andmebaasi teenus, tasakaalustamisteenus, jĂ€rjekorra teenus, pidev kohaletoimetamine teenus — hulga teenuseid, mida erinevad meeskonnad saavad arendusele pakkuda. KĂ”ik need teenused tuleb teie konfiguratsioonihaldussĂŒsteemis eraldi moodulitena kirjeldada.

Kiht, kus rakendusi luuakse ja kirjeldatakse, kuidas neid kahte eelmist kihti toetatakse.

KontrollkĂŒsimused

Kas teie ettevĂ”ttes on ĂŒhine infrastruktuuri hoidla? Kas te jĂ€lgite tehnilist vĂ”lga infrastruktuuris? Kas kasutate arendustavasid infrastruktuuri hoidlas? Kas teie infrastruktuur on jagatud kihtideks? VĂ”ite viidata skeemile Base-service-APP. Kui keeruline on muudatusi teha?

Kui olete kokku puutunud olukordadega, kus muudatuste tegemine vĂ”ttis poolteist pĂ€eva, tĂ€hendab see, et teil on tekkinud tehniline vĂ”lg ja sellega tuleb tegeleda. Olete kokku puutunud tehnilise vĂ”la takistustega infrastruktuurikoodis. MĂ€letan palju selliseid lugusid, kus mĂ”ne CCTL muutmiseks tuli ĂŒmber kirjutada pool infrastruktuurikoodist, sest loovus ja soov kĂ”ik automatiseerida viisid selleni, et kĂ”ik oli ummistunud, kĂ”ik nupud olid eemaldatud ja vajalik on refaktoreerida.

Pidev kohaletoimetamine

KokkuvĂ”tteks vĂ”rdleme deebet- ja krediite. Esiteks esitatakse infrastruktuuri kirjeldus, mis vĂ”ib olla ĂŒsna pĂ”hiline. Pole vajalik kĂ”ike detailselt kirjeldada, kuid mingit pĂ”hilist kirjeldust on vaja, et saaksite sellega töötada. Vastasel juhul ei ole selge, mille peal edasi pidevat tarnet teha. KĂ”ik need praktikad kĂ€ivituvad samal ajal, kui jĂ”uate DevOps'i, kuid alustada tuleb sellest, et mĂ”ista, mis teil on, ja kuidas sellega juhtida. See on infrastruktuuri nagu koodi praktika.

PĂ€rast seda, kui on aru saadud, mis teil on ja kuidas sellega juhtida, hakkate vĂ€lja mĂ”tlema, kuidas arendaja koodi vĂ”imalikult kiiresti tootmisse saata. Ma mĂ”tlen koos arendajaga – peame meeles, et probleem on „kaevudes”, st mitte eraldi inimesed seda vĂ€lja mĂ”tlema, vaid meeskonnana.

Kui me Vanja Evtuhooviga nĂ€gime esimest raamatut Jez HĂ€mblalt ja autorite grupilt „Continuous Delivery”, mis ilmus 2009. aastal, mĂ”tlesime kaua, kuidas tĂ”lkida selle pealkirja vene keelde. Tahtsime tĂ”lkida kui „Pidev tarnimine”, kuid kahjuks tĂ”lkisime selle kui „Pidev kohaletoimetamine”. Mulle tundub, et meie pealkirjas on midagi sellist vene moodi, jĂ”uliselt.

Pidev kohaletoimetamine – see tĂ€hendab

Kood, mis asub toote andmehoidlas, on alati valmis tootmisse minema.See vĂ”ib mitte minna, kuid on alati selleks valmis. Seega kirjutate alati koodi koos seletamatult Ă€revustunde, misilmast allpool. See tunne tekib sageli, kui vĂ€ljastate infrastruktuuri koodi. See Ă€revustunne peab olema olemas – see tekitab mĂ”tlemisprotsesse, mis vĂ”imaldavad koodi kirjutada veidi teistsuguselt. See peaks olema fikseeritud arenduseeskirjades.

Pideva kohaletoimetamiseks on vajalik artefakti formaat, mis lĂ€bib infrastruktuuri platvormi. Kui viskate infrastruktuuri platvormile erineva formaadiga „eluea jÀÀtmeid”, siis muutub see teistmoodi ĂŒhtsustuks, seda on raske hooldada ning tekib tehnilise vĂ”la probleem. Artefakti formaat tuleb ĂŒhtlustada – see on samuti kollektiivne ĂŒlesanne: tuleb koos kokku tulla, ajusid raputada ja vĂ€lja mĂ”elda see formaat.

Aeg continually improves and adapts to the production environment during its passage through the delivery pipeline. When the artifact moves through the pipeline, it constantly encounters certain inconvenient issues similar to those faced by the artifact you deploy to production. In traditional development, this would be managed by a sysadmin deploying it, but in the DevOps process, this happens constantly: sometimes it's tested, other times it's thrown into a Kubernetes cluster that resembles production more or less, and suddenly load testing is initiated.

This somewhat resembles the game Pac-Man — the artifact goes through a certain story. It is important to monitor whether the code is truly progressing through the story and whether it is somehow related to your production. Stories from production can be integrated into the Continuous Delivery process: it used to be that something failed, so let's program this scenario into the system. Each time the code will go through this scenario as well, preventing you from encountering that issue again next time. You will be informed about it long before it reaches your client.

Different deployment strategies. For example, you use AB testing or canary deployments to explore the code differently across various clients, gathering information on how the code operates before it is released to 100 million users.

"Constant delivery" looks like this.

Mis on DevOps

The delivery process Dev, CI, Test, PreProd, Prod — is not a separate environment; it consists of stages or stations with unburnable sums through which your artifact passes.

If you have infrastructure code described as Base Service APP, it helps not to forget all scenarios, and write them down in code form for this artifact, to promote the artifact and modify it along the way.

Self-check questions

Is the time from feature description to production rollout less than a week in 95% of cases? Is the quality of the artifact improving at each stage of the pipeline? Is there a story through which it progresses? Are you using different deployment strategies?

If all the answers are yes, then you are incredibly awesome! Please write your answers in the comments — I would be glad to see them).

Feedback

See on kÔige keerulisem praktik, mis olemas on. DevOpsConf konverentsil rÀÀkis Infobipi kolleeg sellest ja ta segas veidi sÔnu, sest see on tÔesti vÀga keeruline praktika, mis kÀsitleb seda, et tuleb jÀlgida absoluutselt kÔike!

Mis on DevOps

NÀiteks, kunagi ammu, kui ma töötasin Qikis ja me mÔistsime, et tuleb jÀlgida kÔike. Me tegime seda ja Zabbixis oli meil 150 000 elemente, mida pidevalt jÀlgiti. See oli kohutav, tehniline direktor keerutas oma pead:

— Poisid, miks te serverit segaduses hoidma peate?

Aga hiljem juhtus olukord, mis nÀitas, et see on tÔeliselt suurepÀrane strateegia.

Üks teenus hakkas pidevalt kokku kukkuma. Alguses see ei kukkunud, mis on huvitav, sinna koodi ei lisatud, sest see oli pĂ”hiline broker, milles praktiliselt ei olnud Ă€rifunktsioone - see edastas lihtsalt sĂ”numeid erinevate teenuste vahel. Teenus ei muutunud 4 kuud ja Ă€kki hakkas see kukkuma veaga "Segmentation fault."

Olime ĆĄokis, avasime oma graafikud Zabbixis ja selgus, et poolteist nĂ€dalat tagasi muutus API-teenuse pĂ€ringute kĂ€itumine oluliselt. Edasi vaatasime, et teatud tĂŒĂŒpi sĂ”numite saatmise sagedus muutus. Hiljem selgitasime vĂ€lja, et nende Android-kliendid. KĂŒsisime:

— Poisid, mis teil poolteist nĂ€dalat tagasi juhtus?

Vastuseks kuulsime huvitavat lugu sellest, et nad uuendasid kasutajaliidest. Vaevalt keegi kohe ĂŒtleb, et nad vahetasid HTTP-raamatukogu. Android-kliendi jaoks on see nagu seep vannitoas - nad lihtsalt ei mĂ€leta seda. LĂ”puks, 40-minutilise vestluse jĂ€rel, saime teada, et nad vahetasid HTTP-raamatukogu ja sellel muutusid vaikimisi ajad. See tĂ”i kaasa olukorra, et API serveri liikluse kĂ€itumine muutus, mis pĂ”hjustas lahingu brokeris ja see hakkas kukkuma.

Ilma sĂŒgava jĂ€lgimiseta ei oleks seda ĂŒldse vĂ”imalik avastada.. Kui organisatsioonis on aga veel probleem "kaevudega", kus igaĂŒks viskab sĂŒĂŒ teise kaela, vĂ”ib see kesta aastaid. Sa lihtsalt taaskĂ€ivitat server, kuna probleemi on vĂ”imatu lahendada. Kui sa jĂ€lgid ja jĂ€lgite kĂ”iki sĂŒndmusi, mis sul on, ning kasutad jĂ€lgimist nagu testimist — kirjutad koodi ja kohe nĂ€itad, kuidas seda jĂ€lgida, samuti koodi kujul (meil on juba infrastruktuur kui kood), siis on kĂ”ik selge nagu peopesa. Ieven keerulised probleemid on kergesti jĂ€lgitavad.

Mis on DevOps

Kogu teave selle kohta, mis toimub artefaktil iga etapi jooksul tarnimisprotsessis, tuleks koguda — mitte tootmisprotsessis.

JĂ€lgimine tuleb laadida CI-sse, ja seal on juba nĂ€ha teatud pĂ”hiasju. Edasi nĂ€ed neid nii Testis, PredProd'is kui ka koormustestimises. Kogu teavet tuleb koguda kĂ”igil etappidel, ja mitte ainult mÔÔdikud ja statistika, vaid ka logid: kuidas rakendus tööle lĂ€ks, anomaaliad — kogu teave koguge.

Vastasel juhul on keeruline aru saada. Olen juba öelnud, et DevOps on suurem keerukus. Selle keerukusega toimetulemiseks on vaja head analĂŒĂŒtikat..

KĂŒsimused iseseisvaks kontrolliks.

Kas teie jÀlgimine ja logimine on arendamise tööriist teie jaoks? Kas teie arendajad, sealhulgas teie, mÔtlevad koodi kirjutamisel sellele, kuidas seda jÀlgida?

Kas te kuulete probleemidest klientidelt? Kas mĂ”istate klienti paremini jĂ€lgimise ja logimise kaudu? Kas te mĂ”istate sĂŒsteemi paremini jĂ€lgimise ja logimise kaudu? Kas te muudate sĂŒsteemi lihtsalt selle pĂ€rast, et nĂ€ete sĂŒsteemis tĂ”usu ja mĂ”istate, et veel 3 nĂ€dala pĂ€rast lĂ€heb kĂ”ik pĂ”hja?

Kui teil on need kolm komponenti, siis vÔite mÔelda sellele, milline on teie ettevÔtte infrastruktuuri platvorm.

Infrastruktuuri platvorm.

MÔte ei ole selles, et see on iga ettevÔtte laialivalguvate tööriistade kogum.

Infrastruktuuri platvormi mÔte on selles, et kÔik meeskonnad kasutavad neid tööriistu ja arendavad neid koos.

On selge, et on eraldi meeskonnad, kes vastutavad infrastruktuuri platvormi eraldi osade arendamise eest. Kuid vastutus infrastruktuuri platvormi arendamise, toimimise ja edendamise eest lasub igal inseneril. Sisetasandil muutub see ĂŒldiseks tööriistaks.

KÀskude meeskond arendab infrastruktuuri platvormi, kohtleb seda hoolikalt nagu enda IDE-d. Oma IDE-s installite erinevad pistikprogrammid, et kÔik oleks ilus ja kiiresti, seadistate otseteed. Kui avate Sublime, Atomi vÔi Visual Studio Code'i, tulevad koodihÀired ja te mÔistate, et on vÔimatu töötada, te tunnete end kohe kurvalt ja jooksed oma IDE-d parandama.

Koheldakse tĂ€pselt samamoodi teie infrastruktuuri platvormi. Kui te mĂ”istate, et midagi on valesti, esitage taotlus, kui te ei suuda seda ise parandada. Kui aga midagi lihtsat — parandage ise, saatke pull request — poisid vaatavad, lisavad. See on veidi erinev lĂ€henemine inseneritööriistadele arendaja peas.

Infrastruktuuri platvorm tagab artefakti ĂŒlekande arendajalt kliendile pideva kvaliteedi tĂ”usuga. IP-s on programmeeritud ajaloode kogum, mis juhtub koodiga tootmises. Aastate jooksul tekib neid lugematul hulgal, osa neist on unikaalsed ja kuuluvad ainult teile — neid ei ole vĂ”imalik Google'ist leida.

Sellest hetkest alates muutub infrastruktuuri platvorm teie konkurentsieeliseks, sest see sisaldab seda, mida konkurendi tööriistas ei ole. Mida sĂŒgavam on teie IP, seda suurem on teie konkurentsieelis ajakohasus. Tekib vendor lock: vĂ”ite kasutada kellegi teise platvormi, kuid kasutades kellegi teise kogemust, ei saa te aru, kui relevantne see teile on. Jah, mitte iga ettevĂ”te ei suuda ehitada AmazonitĂŒĂŒpi platvormi. See on keeruline piir, kus ettevĂ”tte kogemus on seotud selle positsiooniga turul, ja vendor lock'i ei saa sinna lasta. Sellest on samuti oluline mĂ”elda.

Schema

See on pÔhiline skeem infrastruktuuri platvormist, mis aitab teil kÔik praktika ja protsessid DevOps-ettevÔttes paika saada.

Mis on DevOps

Vaadakem, millest see koosneb.

Ressursside orkestreerimise sĂŒsteem, mis pakub rakendustele ja muudele teenustele CPU-d, mĂ€lu, ketast. Selle peal on madala taseme teenused: jĂ€lgimine, logimine, CI/CD mootor, artefaktide hoidmine, infrastruktuur kui kood sĂŒsteem.

KĂ”rge taseme teenused: andmebaas teenusena, jĂ€rjekorrad teenusena, Load Balance teenusena, piltide suurendamine teenusena, Suured Andmed tehasena teenusena. Selle peal — pipeline, mis varustab pidevalt muudetud koodi teie kliendile.

Te saite teavet selle kohta, kuidas teie tarkvara töötab kliendi juures, muute, uuesti varustate selle koodiga, saite teavet - ja nii arendate pidevalt nii infrastruktuuriplatvormi kui ka oma tarkvara.

Tarnepipeline koosneb paljusid etappidest. Kuid see on pÔhimÔtteline skeem, mis on esitatud nÀitena - ei pea seda tÀpselt kordama. Etapid suhtlevad teenustega nagu teenustega - iga plokk platvormil kannab oma lugu: kuidas eraldatakse ressursse, kuidas rakendus kÀivitatakse, töötab ressurssidega, jÀlgitakse, muudetakse.

Oluline on mĂ”ista, et iga platvormi osa kannab lugu, ja kĂŒsida endalt - millist lugu see plokk kannab, vĂ”ib-olla on mĂ”istlik see kĂ”rvaldada ja asendada kolmanda osapoole teenusega. NĂ€iteks, kas saame selle ploki asendada Okmeteriga? VĂ”ib-olla on nad juba arendanud seda ekspertiisi palju rohkem kui meie. Aga vĂ”ib-olla ei ole - vĂ”ib-olla on meil ainulaadne ekspertiis, mida meil on vaja arendada Prometheusega.

Platvormi loomine

See on keeruline suhtlemisprotsess. Kui teil on pÔhipraktikad, alustate suhtlemist erinevate inseneride ja spetsialistide vahel, kes töötavad vÀlja nÔuded ja standardid ning muudavad neid pidevalt erinevate tööriistade ja lÀhenemiste jaoks. Siin on oluline kultuur, mis on DevOpsis.

Mis on DevOps
Kultuuriga on kĂ”ik vĂ€ga lihtne - see on koostöö ja suhtlemine, see tĂ€hendab soovi töötada koos ĂŒhisvĂ€ljal, soovi omada sama tööriista koos. Siin ei ole mingit rocket science - kĂ”ik on vĂ€ga lihtne, banaalne. NĂ€iteks, me kĂ”ik elame samas trepikojas ja hoidame selle puhtust - selline kultuuritase.

Aga mis teiega on?

Taaskord kĂŒsimused, mida saate endalt kĂŒsida.

Kas infrastruktuuri platvorm on eristunud? Kes vastutab selle arendamise eest? Kas te mÔistate oma infrastruktuuri platvormi konkurentsieeliseid?

Need to constantly ask yourself these questions. If something can be moved to external services, it should be done; if an external service starts blocking your progress, you need to build a system internally.

So, DevOps



 it’s a complex system that must include:

  • A digital product.
  • Business modules that develop this digital product.
  • Product teams that write code.
  • Continuous Delivery practices.
  • Platform as a service.
  • Infrastructure as a service.
  • Infrastructure as code.
  • Specific practices to maintain reliability, embedded within DevOps.
  • A feedback practice that describes all of this.

Mis on DevOps

You can use this framework, highlighting what you already have in your company in some form: whether it has evolved or still needs development.

In just a couple of weeks, DevOpsConf 2019. as part of RIT++. Come to the conference, where you'll find many great talks on continuous delivery, infrastructure as code, and DevOps transformation. Broneerige piletid, the final price deadline is May 20

Allikas: habr.com

Osta usaldusvÀÀrne hostimine veebilehtede jaoks DDoS-i kaitsega, VPS VDS serverid đŸ”„ Osta usaldusvÀÀrne hostimine veebilehtede jaoks DDoS-i kaitsega, VPS VDS serverid | ProHoster