Miks on DevOpsi vaja ja kes on DevOpsi spetsialistid?

Kui rakendus ei tööta, on viimane asi, mida soovite oma kolleegidelt kuulda, fraas "probleem on teie poolel". Selle tulemusena kannatavad kasutajad – ja neid ei huvita, milline osa meeskonnast rikke eest vastutab. DevOpsi kultuur tekkis just selleks, et viia arendus ja tugi kokku ühisele vastutusele lõpptoote eest.

Milliseid tavasid DevOpsi kontseptsioon sisaldab ja miks neid vaja on? Mida DevOpsi insenerid teevad ja mida nad peaksid suutma? Nendele ja teistele küsimustele vastavad EPAM-i eksperdid: Kirill Sergeev, süsteemiinsener ja DevOpsi evangelist ning Igor Boyko, juhtiv süsteemiinsener ja ühe ettevõtte DevOpsi meeskonna koordinaator.

Miks on DevOpsi vaja ja kes on DevOpsi spetsialistid?

Miks on DevOpsi vaja?

Varem oli barjäär arendajate ja toe (nn operatsioonide) vahel. See kõlab paradoksaalselt, kuid neil olid erinevad eesmärgid ja KPI-d, kuigi nad tegid sama asja. Arendustöö eesmärgiks oli ärinõuete võimalikult kiire juurutamine ja nende lisamine toimivasse tootesse. Tugi vastutas selle eest, et rakendus töötaks stabiilselt – ja kõik muudatused seavad stabiilsuse ohtu. Tekkis huvide konflikt – DevOps paistis selle lahendama.

Mis on DevOps?

See on hea ja vastuoluline küsimus: maailm pole selles veel lõplikult kokku leppinud. EPAM usub, et DevOps ühendab tehnoloogiad, protsessid ja meeskonnasisese suhtluskultuuri. Selle ühenduse eesmärk on pakkuda lõppkasutajatele pidevalt väärtust.

Kirill Sergejev: „Arendajad kirjutavad koodi, testijad vaatavad selle üle ja administraatorid juurutavad lõpptoote tootmisse. Pikka aega olid need meeskonnaosad mõnevõrra laiali ja siis tekkis mõte need ühise protsessi kaudu ühendada. Nii ilmusid DevOpsi tavad.

Saabus päev, mil arendajad ja süsteemiinsenerid hakkasid üksteise töö vastu huvi tundma. Barjäär tootmise ja toetuse vahel hakkas kaduma. Nii tekkis DevOps, mis hõlmab tavasid, kultuuri ja meeskonna suhtlust.

Miks on DevOpsi vaja ja kes on DevOpsi spetsialistid?

Mis on DevOpsi kultuuri olemus?

Fakt on see, et vastutus lõpptulemuse eest lasub igal meeskonnaliikmel. DevOpsi filosoofia kõige huvitavam ja keerulisem on mõista, et konkreetne inimene ei vastuta ainult oma tööetapi eest, vaid vastutab selle eest, kuidas kogu toode töötab. Probleem ei seisa kellegi poolel – seda jagatakse ja iga meeskonnaliige aitab seda lahendada.

DevOpsi kultuuris on kõige olulisem probleemi lahendamine, mitte ainult DevOpsi tavade rakendamine. Pealegi ei rakendata neid tavasid "kellegi poolel", vaid kogu toote ulatuses. Projekt ei vaja DevOpsi inseneri iseenesest – see vajab lahendust probleemile ning DevOpsi inseneri rolli saab jagada mitme erineva spetsialiseerumisega meeskonnaliikme vahel.

Millised on DevOpsi tavade tüübid?

DevOpsi tavad hõlmavad tarkvara elutsükli kõiki etappe.

Igor Boyko: "Ideaalne juhtum on see, kui hakkame DevOpsi tavasid kasutama kohe projekti alguses. Koos arhitektidega planeerime, millise arhitektuurse maastikuga rakendus saab, kus see asub ja kuidas skaleerida ning valime platvormi. Tänapäeval on moes mikroteenuste arhitektuur – selle jaoks valime orkestreerimissüsteemi: iga rakenduse elementi tuleb osata eraldi hallata ja seda teistest sõltumatult uuendada. Teine tava on "infrastruktuur kui kood". See on lähenemisviis lähenemisviisile, mille puhul projekti infrastruktuuri luuakse ja hallatakse koodi abil, mitte otsese suhtluse kaudu serveritega.

Järgmisena liigume edasi arendusfaasi. Üks suurimaid praktikaid on siin CI/CD ehitamine: peate aitama arendajatel muudatusi tootesse integreerida kiiresti, väikeste portsjonitena, sagedamini ja valutumalt. CI/CD hõlmab koodi ülevaatamist, põhifaili üleslaadimist koodibaasi ja rakenduse juurutamist testimis- ja tootmiskeskkondadesse.

CI/CD etappidel läbib kood kvaliteediväravaid. Nende abiga kontrollivad nad, kas arendaja tööjaamast väljuv kood vastab määratud kvaliteedikriteeriumidele. Siia lisatakse üksuse ja kasutajaliidese testimine. Toote kiireks, valutuks ja sihipäraseks juurutamiseks saate valida sobiva juurutustüübi.

DevOpsi praktikutel on koht ka valmistoote toetamise etapis. Neid kasutatakse jälgimiseks, tagasiside andmiseks, turvalisuse tagamiseks ja muudatuste sisseviimiseks. DevOps vaatab kõiki neid ülesandeid pideva täiustamise vaatenurgast. Minimeerime korduvad toimingud ja automatiseerime need. See hõlmab ka migreerimist, rakenduste laiendamist ja jõudluse tuge.

Millised on DevOpsi tavade eelised?

Kui kirjutaksime tänapäevaste DevOpsi tavade õpikut, oleks esimesel lehel kolm punkti: automatiseerimine, väljalaske kiirendamine ja kasutajate kiire tagasiside.

Kirill Sergejev: “Esimene asi on automatiseerimine. Saame automatiseerida kõik meeskonnas toimuvad suhtlused: kirjutasime koodi - rullisime selle välja - kontrollisime - installisime - kogusime tagasisidet - pöördusime tagasi algusesse. Kõik see on automaatne.

Teine on vabastamise kiirendamine ja isegi arenduse lihtsustamine. Kliendi jaoks on alati oluline, et toode jõuaks turule võimalikult kiiresti ja hakkaks kasu tooma varem kui konkurentide analoogid. Toote tarneprotsessi saab lõputult täiustada: lühendada aega, lisada täiendavaid kontrollmärke, parandada jälgimist.

Kolmandaks on kasutajate tagasiside kiirendamine. Kui tal on kommentaare, saame kohe muudatusi teha ja rakendust kohe uuendada.

Miks on DevOpsi vaja ja kes on DevOpsi spetsialistid?

Kuidas on seotud mõisted „süsteemiinsener”, „ehitusinsener” ja „arendaja insener”?

Need kattuvad, kuid kuuluvad veidi erinevatesse piirkondadesse.

EPAM-i süsteemiinsener on ametikoht. Neid on erineva tasemega: nooremast peaspetsialistini.

Ehitusinsener on pigem roll, mida saab projektis täita. Nüüd kutsutakse CI/CD eest vastutavaid inimesi nii.

DevOpsi insener on spetsialist, kes rakendab projektis DevOpsi tavasid.

Kui kõik kokku võtta, saame umbes sellise: süsteemiinseneri ametis olev inimene täidab projekti juures ehitusinseneri rolli ja on seal seotud DevOpsi praktikate juurutamisega.

Mida täpselt DevOpsi insener teeb?

DevOpsi insenerid panevad kokku kõik osad, millest üks projekt koosneb. Nad tunnevad programmeerijate, testijate, süsteemiadministraatorite töö spetsiifikat ja aitavad nende tööd lihtsustada. Nad mõistavad ettevõtte vajadusi ja nõudeid, selle rolli arendusprotsessis – ning ehitavad protsessi üles kliendi huve arvestades.

Rääkisime palju automatiseerimisest – sellega tegelevad eelkõige DevOpsi insenerid. See on väga suur punkt, mis muuhulgas hõlmab ka keskkonna ettevalmistamist.

Kirill Sergejev: „Enne värskenduste juurutamist tootesse tuleb neid testida kolmanda osapoole keskkonnas. Selle on koostanud DevOpsi insenerid. Nad juurutavad projekti kui terviku DevOpsi kultuuri: tutvustavad DevOpsi tavasid oma projekti kõikides kihtides. Need kolm põhimõtet: automatiseerimine, lihtsustamine, kiirendus – need toovad kõikjale, kuhu jõuavad.

Mida peaks DevOpsi insener teadma?

Üldjoontes peavad tal olema teadmised erinevatest valdkondadest: programmeerimine, töö operatsioonisüsteemidega, andmebaasid, komplekteerimis- ja konfiguratsioonisüsteemid. Neid täiendab võime töötada pilve infrastruktuuri, orkestreerimis- ja jälgimissüsteemidega.

1. Programmeerimiskeeled

DevOpsi insenerid oskavad automatiseerimiseks mitut põhikeelt ja võivad näiteks programmeerijale öelda: "Kuidas oleks, kui installiksite koodi mitte käsitsi, vaid kasutades meie skripti, mis kõik automatiseerib? Valmistame selle jaoks ette konfiguratsioonifaili, seda on mugav lugeda nii teile kui ka meile ning saame seda igal ajal muuta. Samuti näeme, kes, millal ja miks selles muudatusi teeb.

DevOpsi insener saab õppida ühte või mitut neist keeltest: Python, Groovy, Bash, Powershell, Ruby, Go. Neid pole vaja sügaval tasemel tunda – piisab süntaksi põhitõdedest, OOP põhimõtetest ja oskusest kirjutada lihtsaid skripte automatiseerimiseks.

2. Operatsioonisüsteemid

DevOpsi insener peab mõistma, millisesse serverisse toode installitakse, millises keskkonnas see töötab ja milliste teenustega see suhtleb. Saate spetsialiseeruda Windowsile või Linuxi perekonnale.

3. Versioonikontrollisüsteemid

Ilma versioonikontrollisüsteemi tundmiseta pole DevOpsi insenerit kusagil. Git on hetkel üks populaarsemaid süsteeme.

4. Pilvepakkujad

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

Kirill Sergejev: „Pilvepakkujad pakuvad meile virtuaalservereid, mis sobivad ideaalselt CI/CD-sse.

Kümne füüsilise serveri installimine nõuab umbes sada käsitsi toimingut. Iga server tuleb käsitsi käivitada, installida ja konfigureerida vajalik operatsioonisüsteem, installida nendele kümnele serverile meie rakendus ja seejärel kõike kümme korda üle kontrollida. Pilveteenused asendavad selle protseduuri kümne koodireaga ja hea DevOpsi insener peaks nendega töötama. See säästab aega, vaeva ja raha – nii kliendi kui ka ettevõtte jaoks.

5. Orkestreerimissüsteemid: Docker ja Kubernetes

Kirill Sergejev: “Virtuaalsed serverid on jagatud konteineriteks, kuhu igasse saame installida oma rakenduse. Kui konteinereid on palju, tuleb neid hallata: üks sisse lülitada, teine ​​välja lülitada, kuskile varukoopiaid teha. See muutub üsna keeruliseks ja nõuab orkestreerimissüsteemi.

Varem käsitles iga rakendust eraldi server – kõik muudatused selle töös võisid mõjutada rakenduse kasutatavust. Tänu konteineritele isoleeritakse rakendused ja töötavad eraldi – igaüks oma virtuaalmasinas. Kui ilmneb rike, pole vaja põhjuse otsimisele aega raisata. Lihtsam on vana konteiner hävitada ja uus lisada.

6. Konfiguratsioonisüsteemid: Chef, Ansible, Puppet

Kui teil on vaja hooldada tervet serveriparki, peate tegema palju sama tüüpi toiminguid. See on pikk ja raske ning käsitsitöö suurendab ka eksimise võimalust. Siin tulevad appi konfiguratsioonisüsteemid. Nende abiga loovad nad skripti, mida on programmeerijatele, DevOpsi inseneridele ja süsteemiadministraatoritele lihtne lugeda. See skript aitab serverites samu toiminguid automaatselt läbi viia. See vähendab käsitsi toiminguid (ja seega ka vigu).

Millist karjääri saab DevOpsi insener ehitada?

Areneda saab nii horisontaalselt kui ka vertikaalselt.

Igor Boyko: “Horisontaalse arengu seisukohalt on DevOpsi inseneridel nüüd kõige laiemad väljavaated. Kõik on pidevas muutumises ja oskusi saab arendada erinevates valdkondades: versioonihaldussüsteemidest jälgimiseni, konfiguratsioonihaldusest andmebaasideni.

Süsteemiarhitektiks võib saada siis, kui töötajal on huvi saada aru, kuidas rakendus töötab selle elutsükli kõikides etappides – alates arendusest kuni toeni.

Kuidas saada DevOpsi inseneriks?

  1. Lugege Phoenixi projekti ja DevOpsi käsiraamatut. Need on DevOpsi filosoofia tõelised tugisambad, millest esimene on ilukirjandus.
  2. Õppige tehnoloogiaid ülaltoodud loendist: iseseisvalt või veebikursuste kaudu.
  3. Liituge avatud lähtekoodiga projekti DevOpsi insenerina.
  4. Harjutage ja pakkuge DevOpsi praktikaid oma isiklikes ja tööprojektides.

Allikas: www.habr.com

Lisa kommentaar