Zašto je potreban DevOps i tko su stručnjaci za DevOps?

Kada aplikacija ne radi, posljednje što želite čuti od svojih kolega je fraza “problem je na vašoj strani”. Kao rezultat toga, korisnici trpe - i nije ih briga koji je dio tima odgovoran za kvar. DevOps kultura pojavila se upravo kako bi spojila razvoj i podršku oko zajedničke odgovornosti za krajnji proizvod.

Koje su prakse uključene u koncept DevOps i zašto su potrebne? Što DevOps inženjeri rade i što bi trebali moći? Na ova i druga pitanja odgovaraju stručnjaci iz EPAM-a: Kirill Sergeev, sistemski inženjer i DevOps evangelist, i Igor Boyko, vodeći sistemski inženjer i koordinator jednog od timova tvrtke za DevOps.

Zašto je potreban DevOps i tko su stručnjaci za DevOps?

Zašto je potreban DevOps?

Ranije je postojala barijera između programera i podrške (tzv. operacija). Zvuči paradoksalno, ali imali su različite ciljeve i KPI, iako su radili istu stvar. Cilj razvoja bio je što brže implementirati poslovne zahtjeve i dodati ih proizvodu koji radi. Podrška je bila odgovorna za osiguranje stabilnog rada aplikacije - a sve promjene ugrožavaju stabilnost. Postoji sukob interesa - čini se da ga DevOps rješava.

Što je DevOps?

To je dobro pitanje - i kontroverzno: svijet se oko toga još nije konačno složio. EPAM vjeruje da DevOps kombinira tehnologije, procese i kulturu interakcije unutar tima. Ovo udruženje ima za cilj kontinuirano pružanje vrijednosti krajnjim korisnicima.

Kiril Sergejev: “Razvojni programeri pišu kod, testeri ga pregledavaju, a administratori postavljaju konačni proizvod u proizvodnju. Dugo su ovi dijelovi tima bili pomalo raštrkani, a onda se rodila ideja da ih spojimo zajedničkim procesom. Tako su se pojavile DevOps prakse.”

Došao je dan kada su se programeri i sistemski inženjeri međusobno zainteresirali za rad. Barijera između proizvodnje i podrške počela je nestajati. Tako je nastao DevOps koji uključuje prakse, kulturu i timsku interakciju.

Zašto je potreban DevOps i tko su stručnjaci za DevOps?

Što je bit DevOps kulture?

Činjenica je da odgovornost za konačni rezultat leži na svakom članu tima. Najzanimljivije i najteže u DevOps filozofiji je shvatiti da konkretna osoba nije odgovorna samo za svoju fazu rada, već je odgovorna za to kako će cijeli proizvod funkcionirati. Problem ne leži ni na čijoj strani - on je zajednički, a svaki član tima pomaže u njegovom rješavanju.

Najvažnija stvar u DevOps kulturi je riješiti problem, a ne samo primijeniti DevOps praksu. Štoviše, te se prakse ne provode "na nečijoj strani", već kroz cijeli proizvod. Projekt ne treba DevOps inženjera samog po sebi – potrebno mu je rješenje problema, a uloga DevOps inženjera može se raspodijeliti na nekoliko članova tima s različitim specijalizacijama.

Koje su vrste DevOps praksi?

DevOps prakse pokrivaju sve faze životnog ciklusa softvera.

Igor Boyko: “Idealan slučaj je kada počnemo koristiti DevOps prakse odmah na početku projekta. Zajedno s arhitektima planiramo kakav će arhitektonski krajolik aplikacija imati, gdje će se nalaziti i kako skalirati te biramo platformu. Danas je mikroservisna arhitektura u modi - za nju biramo sustav orkestracije: morate biti u mogućnosti upravljati svakim elementom aplikacije zasebno i ažurirati ga neovisno o ostalima. Druga praksa je "infrastruktura kao kod". Ovo je naziv za pristup u kojem se infrastruktura projekta stvara i upravlja pomoću koda, a ne kroz izravnu interakciju s poslužiteljima.

Zatim prelazimo na fazu razvoja. Jedna od najvećih praksi ovdje je izgradnja CI/CD-a: morate pomoći programerima da integriraju promjene u proizvod brzo, u malim dijelovima, češće i bezbolnije. CI/CD pokriva pregled koda, učitavanje mastera u bazu koda i implementaciju aplikacije u testna i proizvodna okruženja.

U CI/CD fazama, kod prolazi kroz vrata kvalitete. Uz njihovu pomoć provjeravaju ispunjava li kod koji izlazi iz radne stanice programera zadane kriterije kvalitete. Ovdje se dodaje testiranje jedinica i korisničkog sučelja. Za brzu, bezbolnu i fokusiranu implementaciju proizvoda, možete odabrati odgovarajuću vrstu implementacije.

DevOps praktičari također imaju mjesto u fazi podrške gotovom proizvodu. Koriste se za praćenje, povratne informacije, sigurnost i uvođenje promjena. DevOps gleda na sve ove zadatke iz perspektive stalnog poboljšanja. Minimiziramo operacije koje se ponavljaju i automatiziramo ih. To također uključuje migracije, proširenje aplikacija i podršku performansama.”

Koje su prednosti DevOps praksi?

Da pišemo udžbenik o modernim DevOps praksama, na prvoj stranici bile bi tri točke: automatizacija, ubrzavanje izdanja i brza povratna informacija od korisnika.

Kiril Sergejev: “Prva stvar je automatizacija. Možemo automatizirati sve interakcije u timu: napisali kod - izveli ga - provjerili - instalirali - prikupili povratne informacije - vratili se na početak. Sve je to automatski.

Drugi je ubrzavanje izdavanja, pa čak i pojednostavljivanje razvoja. Za kupca je uvijek važno da proizvod uđe na tržište što je prije moguće i počne pružati prednosti ranije od analoga konkurenata. Proces isporuke proizvoda može se beskrajno poboljšati: smanjiti vrijeme, dodati dodatne kontrolne oznake, poboljšati nadzor.

Treće je ubrzanje povratnih informacija korisnika. Ako ima komentara, možemo odmah napraviti prilagodbe i ažurirati aplikaciju.”

Zašto je potreban DevOps i tko su stručnjaci za DevOps?

Kako se povezuju pojmovi "inženjer sustava", "inženjer izgradnje" i "inženjer DevOps"?

Preklapaju se, ali pripadaju malo različitim područjima.

Inženjer sustava u EPAM-u je pozicija. Dolaze u različitim razinama: od juniora do glavnog stručnjaka.

Građevinski inženjer više je uloga koja se može obavljati na projektu. Sada se tako zovu ljudi odgovorni za CI/CD.

DevOps inženjer je stručnjak koji implementira DevOps prakse na projektu.

Ako sve zbrojimo, dobivamo otprilike ovo: osoba na poziciji sistem inženjera igra ulogu build inženjera na projektu i tamo je uključena u implementaciju DevOps praksi.

Što točno radi DevOps inženjer?

DevOps inženjeri sastavljaju sve dijelove koji čine projekt. Poznaju specifičnosti rada programera, testera, sistem administratora i pomažu im pojednostaviti rad. Oni razumiju potrebe i zahtjeve poslovanja, njegovu ulogu u procesu razvoja - i grade proces uzimajući u obzir interese kupaca.

Puno smo razgovarali o automatizaciji - to je ono čime se DevOps inženjeri bave prije svega. To je vrlo velika točka, koja između ostalog uključuje i pripremu okoliša.

Kiril Sergejev: “Prije implementacije ažuriranja u proizvod, potrebno ih je testirati u okruženju treće strane. Pripremaju ga DevOps inženjeri. Oni usađuju DevOps kulturu u projekt kao cjelinu: uvode DevOps prakse na svim razinama svojih projekata. Ova tri principa: automatizacija, pojednostavljenje, ubrzanje – donose gdje god mogu doseći.”

Što bi DevOps inženjer trebao znati?

Uglavnom mora imati znanja iz različitih područja: programiranja, rada s operacijskim sustavima, bazama podataka, asemblerskim i konfiguracijskim sustavima. Oni su dopunjeni sposobnošću rada s infrastrukturom oblaka, orkestracijom i sustavima za nadzor.

1. Programski jezici

Inženjeri DevOps-a poznaju nekoliko osnovnih jezika za automatizaciju i mogu, na primjer, reći programeru: “Kako bi bilo da ne instalirate kod ručno, već pomoću naše skripte, koja sve automatizira? Za to ćemo pripremiti konfiguracijsku datoteku, bit će prikladna za čitanje i vama i nama, a moći ćemo je promijeniti u bilo kojem trenutku. Vidjet ćemo i tko će, kada i zašto to mijenjati.”

DevOps inženjer može naučiti jedan ili više ovih jezika: Python, Groovy, Bash, Powershell, Ruby, Go. Nije potrebno poznavati ih na dubokoj razini - dovoljne su osnove sintakse, OOP principi i sposobnost pisanja jednostavnih skripti za automatizaciju.

2. Operativni sustavi

DevOps inženjer mora razumjeti na kojem će se poslužitelju proizvod instalirati, u kojem će okruženju raditi i s kojim će uslugama komunicirati. Možete odabrati specijalizaciju za Windows ili Linux obitelj.

3. Sustavi kontrole verzija

Bez znanja o sustavu kontrole verzija, DevOps inženjer je nigdje. Git je trenutno jedan od najpopularnijih sustava.

4. Pružatelji usluga u oblaku

AWS, Google, Azure - pogotovo ako govorimo o Windows smjeru.

Kiril Sergejev: “Dobavljači usluga u oblaku daju nam virtualne poslužitelje koji se savršeno uklapaju u CI/CD.

Instalacija deset fizičkih poslužitelja zahtijeva stotinjak ručnih operacija. Svaki poslužitelj je potrebno ručno pokrenuti, instalirati i konfigurirati potrebni operativni sustav, instalirati našu aplikaciju na tih deset poslužitelja, a potom sve još deset puta provjeriti. Cloud servisi zamjenjuju ovu proceduru s deset redaka koda, a dobar DevOps inženjer trebao bi znati s njima raditi. To štedi vrijeme, trud i novac – i za kupca i za tvrtku.”

5. Sustavi orkestracije: Docker i Kubernetes

Kiril Sergejev: “Virtualni poslužitelji podijeljeni su u spremnike, u svaki od njih možemo instalirati svoju aplikaciju. Kada ima puno spremnika, morate njima upravljati: uključiti jedan, isključiti drugi, negdje napraviti sigurnosnu kopiju. Ovo postaje prilično složeno i zahtijeva sustav orkestracije.

Prethodno je svakom aplikacijom upravljao zaseban poslužitelj - sve promjene u njegovom radu mogle su utjecati na ispravnost aplikacije. Zahvaljujući spremnicima, aplikacije postaju izolirane i rade odvojeno – svaka na svom virtualnom računalu. Ako dođe do kvara, nema potrebe gubiti vrijeme na traženje uzroka. Lakše je uništiti stari spremnik i dodati novi.”

6. Konfiguracijski sustavi: Chef, Ansible, Puppet

Kada trebate održavati cijelu flotu poslužitelja, morate obaviti mnogo istih vrsta operacija. Dug je i težak, a ručni rad također povećava mogućnost pogreške. Tu u pomoć dolaze konfiguracijski sustavi. Uz njihovu pomoć stvaraju skriptu koju lako čitaju programeri, DevOps inženjeri i administratori sustava. Ova skripta pomaže u automatskom izvođenju istih operacija na poslužiteljima. Ovo smanjuje ručne operacije (a time i pogreške).

Kakvu karijeru može izgraditi DevOps inženjer?

Možete se razvijati i vodoravno i okomito.

Igor Boyko: „Sa stajališta horizontalnog razvoja, DevOps inženjeri sada imaju najšire izglede. Sve se stalno mijenja i možete izgraditi vještine u raznim područjima: od sustava kontrole verzija do praćenja, od upravljanja konfiguracijom do baza podataka.

Možete postati arhitekt sustava ako je zaposlenik zainteresiran za razumijevanje kako aplikacija funkcionira u svim fazama njezinog životnog ciklusa – od razvoja do podrške.”

Kako postati DevOps inženjer?

  1. Pročitajte The Phoenix Project and DevOps Handbook. To su pravi stupovi DevOps filozofije, a prvi je djelo fikcije.
  2. Naučite tehnologije s gornjeg popisa: sami ili putem online tečajeva.
  3. Pridružite se kao DevOps inženjer za projekt otvorenog koda.
  4. Vježbajte i ponudite DevOps prakse na svojim osobnim i radnim projektima.

Izvor: www.habr.com

Dodajte komentar