Miks on vajalik DevOps ja kes on DevOps spetsialistid

Kui rakendus ei tööta, siis on kõige vähem soov kuulda kolleegidelt fraasi „probleem on teie poolel”. Lõppkokkuvõttes kannatavad kasutajad – neile ei ole oluline, kes meeskonnast vastutuse kannab rikke eest. DevOpsi kultuur tekkis selleks, et tuua kokku arendus ja tugi ning ühendada need ühise vastutuse ümber lõpp-produkti eest.

Millised praktikad kuuluvad DevOpsi mõisted alla ja miks need vajalikud on? Millega tegelevad DevOps insenerid ning mida nad peaksid oskama? Nendele ja muudele küsimustele vastavad EPAMi eksperdid: Kirill Sergeev, süsteemiinsener ja DevOps evangelist, ning Igor Bojko, vanem süsteemiinsener ja ühe DevOps meeskonna koordinaator.

Miks on vajalik DevOps ja kes on DevOps spetsialistid

Miks on DevOps vajalik?

Varem oli arendajate ja toe (nn operations) vahel barjäär. See kõlab paradoksaalselt, kuid neil olid erinevad eesmärgid ja KPI-d, kuigi nad tegid samu asju. Arenduse eesmärk oli võimalikult kiiresti rakendada ärinõuded ja lisada need töötavasse toodet. Tugi vastutas selle eest, et rakendus töötaks stabiilselt — ja igasugused muudatused ohustavad stabiilsust. Konflikt huvides on ilmne — DevOps loodi selle lahendamiseks.

Mis on DevOps?

Küsimus on hea – ja vaieldav: maailmas pole sellest veel lõpliku kokkuleppele jõutud. EPRAM-is usutakse, et DevOps ühendab endas tehnoloogiad, protsessid ja kultuuri meeskonna sees. See ühendamine on suunatud pidevale väärtuste edastamisele lõppkasutajatele.

Kirill Sergejev: „Arendajad kirjutavad koodi, testijad kontrollivad seda ja administraatorid paigaldavad lõppprodukti tootmiskeskkonda. Pikka aega olid need meeskonna osad mõnevõrra eraldatud, kuni tekkis idee neid ühendada ühtse protsessiga. Nii sündisid DevOps-tavad.“

On see päev, mil arendajad ja süsteemiinsenerid hakkasid huvituma üksteise tööst. Tootmise ja toe vaheline barjäär hakkas hajuma. Nii sündis DevOps, mis hõlmab praktikaid, kultuuri ja meeskonnatöö korraldust.

Miks on vajalik DevOps ja kes on DevOps spetsialistid

Mis on DevOps-kultuuri tuum?

See seisneb selles, et vastutus lõpptulemuse eest lasub iga meeskonna liikme õlgadel. DevOps filosoofia kõige huvitavam ja keerulisem osa on mõista, et konkreetne inimene ei vastuta ainult oma tööetapi eest, vaid ka selle eest, kuidas kogu toode toimib. Probleem ei ole kellegi teise mure – see on ühine ja iga meeskonna liige aitab seda lahendada.

DevOps-kultuuri kõige olulisem põhimõte on probleemide lahendamine, mitte lihtsalt DevOps-praktikate rakendamine. Veelgi enam, neid praktikaid ei rakenda mitte „kellegi poole”, vaid kogu toote ulatuses. Projekt ei vaja ainult DevOps-inseneri – tal on vaja probleemide lahendust ning DevOps-inseneri roll võib olla jagatud mitme meeskonnaliikme vahel, kellel on erinevad erialad.

Millised on DevOps-praktikad?

DevOps-praktikad katavad kõik tarkvara elutsükli etapid.

Igor Bojko: «Ideaalses situatsioonis hakkame DevOpsi praktikaid kasutama kohe projekti alguses. Koos arhitektidega planeerime, milline on rakenduse arhitektuuriline maastik, kus see asub ja kuidas see laieneb, valime plaani. Praegu on moes mikroteenuste arhitektuur – selle jaoks valime orkestreerimissüsteemi: peab oskama hallata iga rakenduse elementi eraldi ja värskendada neid sõltumatult teistest. Veel üks praktika on “infrastruktuur koodina”. Nii nimetatakse lähenemist, kus projekti infrastruktuur luuakse ja hallatakse koodi abil, mitte otse serveritega suhtlemisega.

Edasi liigume arendusetappi. Siin on üks kõige olulisemaid praktikaid CI/CD loomine: peame aitama arendajatel integreerida muudatused tootesse kiiresti, väikeste portsjonite kaupa, sagedamini ja valutult. CI/CD katab nii koodi kontrollimise, koodi põhiharu laadimise kui ka rakenduse juurutamise testimis- ja tootmis keskkondades.

CI/CD etappidel läbib kood kvaliteedikünnisest. Nende abil kontrollitakse, et arendaja tööjaamast väljunud kood vastaks seatud kvaliteedikriteeriumidele. Siia kuulub ka üksuste ja kasutajaliidese testimine. Toote kiireks, valutuks ja sihitud juurutamiseks saab valida sobiva juurutamise tüübi.

DevOps-praktikatel on oma koht ka valminud toote toetamise etapis. Neid kasutatakse jälgimiseks, tagasiside saamiseks, turvalisuse tagamiseks ja muudatuste rakendamiseks. DevOps käsitleb kõiki neid ülesandeid pideva täiustamise vaatenurgast. Me minimeerime korduvaid toiminguid ja automatiseerime need. Samuti kuuluvad siia migratsioonid, rakenduse laiendamine ja töökindluse tagamine.

Millised on DevOps-praktikate eelised?

Kui me kirjutaksime õpikuda kaasaegsetest DevOps-praktikatest, oleks selle esimesel leheküljel kolm punkti: automatiseerimine, väljaande kiirus ja kiire tagasiside kasutajatelt.

Kirill Sergejev: «Esimene on automatiseerimine. Kõik meeskonna koostöö tegevused saame automatiseerida: kirjutasime koodi – valmistasime välja – kontrollisime – paigaldasime – kogusime tagasisidet – ja naasime algusesse. Kõik see toimub automaatselt.

Teiseks – toote väljalaskmise kiirus ja isegi arendamise lihtsustamine. Tellija jaoks on alati oluline, et toode jõuaks turule võimalikult kiiresti ja hakkaks tulu tooma enne, kui konkurentidel sarnased tooted turule jõuavad. Toote tarnimise protsessi saab pidevalt täiustada: aega lühendada, lisada täiendavaid kontrollpunkte, täiustada jälgimist.

Kolmandaks – kasutajalt saadud tagasiside kiirus. Kui tal on märkusi, saame kohe teha parandusi ja rakendust kohe uuendada.»

Miks on vajalik DevOps ja kes on DevOps spetsialistid

Kuidas on seotud mõisted «süsteemiinsener», «build-insener» ja «DevOps-insener»?

Need kattuvad, kuid kuuluvad veidi erinevatesse valdkondadesse.

Süsteemiinsener EPRAM-is – see on ametikoht. Need võivad olla erinevatel tasemetel: algtaseme töötajast kuni peaspetsialistini.

Build-insener – see on pigem roll, mida saab projektis täita. Praegu nimetatakse niimoodi inimesi, kes vastutavad CI/CD eest.

DevOps-insener on spetsialist, kes rakendab projektis DevOps-praktikaid.

Kokkuvõttes võib öelda, et süsteemiinseneri rollis isik täidab projektis ehitamiseks mõeldud inseneri ülesandeid ja tegeleb DevOps-praktikate rakendamisega.

Millega täpselt tegeleb DevOps-insener?

DevOps-insenerid koguvad kokku kõik projekti osad. Nad tunnevad programmeerijate, testijate, süsteemiadministraatorite tööspetsiifikat ja aitavad nende tööd lihtsustada. Nad mõistavad äri vajadusi ja nõudeid, tema rolli arendusprotsessis – ning ehitavad protsessi arvestades tellija huve.

Oleme palju rääkinud automatiseerimisest – sellega tegelevad DevOps-insenerid eelkõige. See on väga oluline punkt, kuhu lisandub ka keskkonna ettevalmistamine.

Kirill Sergejev: „Enne kui värskendused toote sisse viiakse, tuleb need testida eraldi keskkonnas. Selle valmistavad ette DevOps-insenerid. Nemad juurutavad ka projektis DevOps-kultuuri tervikuna: nad rakendavad DevOps-praktikaid kõikidel oma projektide tasanditel. Need kolm põhimõtet: automatiseerimine, lihtsustamine ja kiirus – nad toovad igale poole, kuhu nad võivad ulatuda“.

Mida peaks teadma DevOps-insener?

Põhimõtteliselt peab tal olema teadmisi erinevates valdkondades: programmeerimine, töö operatsioonisüsteemidega, andmebaasid, koostamis- ja konfigureerimissüsteemid. Nendele lisandub oskus töötada pilvi infrastruktuuriga, orkestreerimise ja jälgimise süsteemidega.

1. Programmeerimiskeeled

DevOps-insenerid tunnevad mitmeid põhikeeli automatiseerimiseks ja võivad näiteks öelda programmeerijale: „Teeme nii, et sa ei installi koodi käsitsi, vaid kasutad meie skripti, mis kõik automatiseerib? Selle jaoks valmistame ette config-faili, mille lugemine on mugav nii sulle kui meile – ja me saame seda igal ajal muuta. Lisaks näeme, kes, millal ja miks selles muudatusi teeb.”

DevOps-insener võib õppida ühte või mitut neist keeltest: Python, Groovy, Bash, Powershell, Ruby, Go. Süvitsi minek ei ole vajalik – piisab süntaksi, OOP põhimõtete tundmisest ja oskusest kirjutada lihtsamaid skripte automatiseerimiseks.

2. Operatsioonisüsteemid

DevOps-insener peab mõistma, millisel serveril toode paigaldatakse, millises keskkonnas see tööle hakkab ja milliste teenustega see suhtleb. Saate valida spetsialiseerumise Windowsi või Linuxi perekonna peale.

3. Versioonihaldussüsteemid

Ilma versioonihaldussüsteemide teadmisteta ei suuda DevOps-insener kuhugi jõuda. Git on hetkel üks populaarsemaid süsteeme.

4. Pilveteenuste pakkujad

AWS, Google, Azure – eriti kui räägime Windowsi suunast.

Kirill Sergejev: „Pilveteenuste pakkujad annavad meile virtuaalsed serverid, mis sobivad suurepäraselt CI/CD raami.”

Kümne füüsilise serveri paigaldamine nõuab umbes sada käsitsi teostatavat toimingut. Iga server tuleb käsitsi käivitada, vajalik operatsioonisüsteem paigaldada, meie rakendus nendel kümnel serveril installida ja siis kümme korda kõik üle kontrollida. Pilveteenused asendavad selle protseduuri kümne koodireaga ning hea DevOps-insener peab oskama nendega töötada. Nii säästab ta aega, energiat ja raha – nii tellijale kui ka ettevõttele.”

5. Orkestreerimissüsteemid: Docker ja Kubernetes

Kirill Sergejev: «Virtuaalserverid on jagatud konteineriteks, kuhu saame paigaldada oma rakenduse. Kui konteinerite arv suureneb, tuleb nendega hallata: üks sisse lülitada, teine välja lülitada, kuskil varundusi teha. See muutub üsna keerukaks ülesandeks, milleks on vaja orkestreerimissüsteemi.

Varem hoolitses iga rakenduse eest eraldi server – igasugused muutused selle töös võisid mõjutada rakenduse toimivust. Konteinerite abil muutuvad rakendused isoleerituks ja töötavad eraldi – igaüks oma virtuaalmasinas. Kui juhtus viga, ei pea aega raiskama põhjuseni jõudmiseks. Lihtsam on tühistada vana konteiner ja lisada uus».

6. Konfiguratsioonisüsteemid: Chef, Ansible, Puppet

Kuna on vaja hallata terve serverite parki, tuleb teha palju sarnaseid operatsioone. See on aeganõudev ja keeruline, samuti suurendab käeline töö vigu. Siin tulevad appi konfigureerimissüsteemid. Nende abil luuakse skript, mida on mugav lugeda nii programmeerijatel, DevOps-inseneridel kui ka süsteemiadministraatoritel. See skript aitab automaatselt läbi viia samu operatsioone serveritel. Nii on käeliste operatsioonide (ja seega vigade) hulk väiksem.

Millist karjääri saab DevOps-insener ehitada?

Areng toimub nii horisontaalsetes kui ka vertikaalsetes suundades.

Igor BojkoHorisontaalse arengu seisukohalt on DevOps-inseneridel praegu laiad võimalused. Kõik muutub pidevalt ja oskusi saab täiendada kõige mitmekesisemates valdkondades: versioonihalduse süsteemidest kuni jälgimiseni, konfiguratsioonide haldamisest andmebaasideni.

Võib muutuda süsteemiarhitektiks, kui töötajal on huvi mõista, kuidas rakendus töötab kõigil oma elutsükli etappidel – alates arendusest kuni toe pakkumiseni.

Kuidas saada DevOps-inseneriks?

  1. Lugege raamatud „Projekt 'Fööniks'” ja DevOps Handbook. Need on tõelised DevOpsi filosoofia tugisambad, kusjuures esimene on ilukirjanduslik romaan.
  2. Uurige ülaltoodud tehnoloogiaid: iseseisvalt või veebikursustel.
  3. Liituge DevOps-insenerina avatud lähtekoodiga projektiga.
  4. Harjutage ja rakendage DevOps-i praktikaid oma isiklikes ja tööprojektides.

Allikas: habr.com

Osta usaldusväärne veebihosting DDoS kaitsega, VPS VDS serverid 🔥 Osta usaldusväärne veebihosting DDoS kaitsega, VPS VDS serverid | ProHoster