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

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

Koje prakse su uključene u koncept DevOps-a i zašto su potrebne? Šta rade DevOps inženjeri i šta bi trebali biti u stanju da urade? Stručnjaci iz EPAM-a odgovaraju na ova i druga pitanja: Kirill Sergeev, sistemski inženjer i DevOps evanđelista, i Igor Boyko, vodeći sistem inženjer i koordinator jednog od DevOps timova kompanije.

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

Zašto je DevOps potreban?

Ranije je postojala barijera između programera i podrške (tzv. operacije). Zvuči paradoksalno, ali oni su imali različite ciljeve i KPI, iako su radili istu stvar. Cilj razvoja je bio što brže implementirati poslovne zahtjeve i dodati ih u radni proizvod. Podrška je bila odgovorna da osigura da aplikacija radi stabilno - a sve promjene su dovele stabilnost u opasnost. Postoji sukob interesa - DevOps je to riješio.

Šta je DevOps?

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

Kirill Sergeev: „Programeri pišu kod, testeri ga pregledavaju, a administratori postavljaju finalni proizvod u proizvodnju. Dugo su ti dijelovi tima bili pomalo raštrkani, a onda se pojavila ideja da se ujedine kroz zajednički proces. Tako su se pojavile DevOps prakse.”

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

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

Šta je suština DevOps kulture?

Činjenica je da odgovornost za konačni rezultat leži na svakom članu tima. Najzanimljivija i najteža stvar u DevOps filozofiji je shvatiti da određena 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 se dijeli, 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 prakse. Štaviše, ove prakse se ne primjenjuju „na nečijoj strani“, već kroz cijeli proizvod. Projektu nije potreban DevOps inženjer sam po sebi – potrebno mu je rješenje problema, a uloga DevOps inženjera može se podijeliti 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 imati aplikacija, gdje će se nalaziti i kako će se skalirati, te biramo platformu. Danas je mikroservisna arhitektura u modi - za nju biramo sistem orkestracije: potrebno je da budete u mogućnosti da upravljate svakim elementom aplikacije posebno i da ga ažurirate nezavisno od ostalih. Druga praksa je „infrastruktura kao kod“. Ovo je naziv za pristup u kojem se infrastruktura projekta kreira i upravlja pomoću koda, a ne kroz direktnu interakciju sa serverima.

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

U CI/CD fazama, kod prolazi kroz kapije kvaliteta. Uz njihovu pomoć, oni provjeravaju da li kod koji izlazi iz razvojne radne stanice ispunjava navedene kriterije kvalitete. Ovdje se dodaje testiranje jedinica i korisničkog sučelja. Za brzu, bezbolnu i fokusiranu implementaciju proizvoda, možete odabrati odgovarajući tip 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 posmatra sve ove zadatke iz perspektive kontinuiranog poboljšanja. Minimiziramo operacije koje se ponavljaju i automatiziramo ih. Ovo također uključuje migracije, proširenje aplikacija i podršku za performanse.”

Koje su prednosti DevOps praksi?

Kada bismo pisali udžbenik o modernim DevOps praksama, na prvoj stranici bi bile tri tačke: automatizacija, ubrzanje izdanja i brze povratne informacije od korisnika.

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

Drugi je ubrzanje izdavanja, pa čak i pojednostavljenje razvoja. Kupcu 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 komentare, možemo odmah izvršiti prilagođavanja i ažurirati aplikaciju.”

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

Kako su povezani koncepti „inženjer sistema“, „inženjer izgradnje“ i „inženjer za razvoj DevOps“?

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

Sistemski inženjer u EPAM-u je pozicija. Dolaze na različitim nivoima: od juniora do glavnog specijaliste.

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

DevOps inženjer je specijalista koji implementira DevOps prakse na projektu.

Ako sve sumiramo, dobijamo nešto ovako: osoba na poziciji sistem inženjera igra ulogu build inženjera na projektu i tamo je uključena u implementaciju DevOps praksi.

Šta tačno radi DevOps inženjer?

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

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

Kirill Sergeev: “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 projektu u cjelini: uvode DevOps prakse na svim slojevima svojih projekata. Ova tri principa: automatizacija, pojednostavljenje, ubrzanje – donose svuda gdje mogu doći.”

Šta DevOps inženjer treba da zna?

Uglavnom, mora imati znanja iz različitih oblasti: programiranje, rad sa operativnim sistemima, bazama podataka, asemblerskim i konfiguracionim sistemima. Oni su dopunjeni sposobnošću rada sa infrastrukturom u oblaku, orkestracijom i sistemima za praćenje.

1. Programski jezici

DevOps inženjeri znaju nekoliko osnovnih jezika za automatizaciju i mogu, na primjer, reći programeru: „Kako bi bilo da instalirate kod ne ručno, već pomoću naše skripte, koja sve automatizira? Pripremićemo konfiguracioni fajl za njega, biće zgodan za čitanje i vama i nama, a moći ćemo da ga promenimo u bilo kom trenutku. Također ćemo vidjeti ko, kada i zašto to mijenja.”

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

2. Operativni sistemi

DevOps inženjer mora razumjeti na kojem serveru će proizvod biti instaliran, u kakvom će okruženju raditi i sa kojim uslugama će komunicirati. Možete odabrati da se specijalizujete za Windows ili Linux porodicu.

3. Sistemi kontrole verzija

Bez znanja o sistemu kontrole verzija, DevOps inženjer je nigdje. Git je jedan od najpopularnijih sistema u ovom trenutku.

4. Cloud provajderi

AWS, Google, Azure – posebno ako govorimo o Windows smjeru.

Kirill Sergeev: „Provajderi u oblaku nam pružaju virtuelne servere koji se savršeno uklapaju u CI/CD.

Instaliranje deset fizičkih servera zahtijeva oko stotinu ručnih operacija. Svaki server se mora ručno pokrenuti, instalirati i konfigurirati potrebni operativni sistem, instalirati našu aplikaciju na ovih deset servera, a zatim sve provjeriti deset puta. Usluge u oblaku zamjenjuju ovu proceduru sa deset linija koda, a dobar DevOps inženjer bi trebao biti u stanju da radi s njima. Ovo štedi vrijeme, trud i novac – i za kupca i za kompaniju.”

5. Sistemi orkestracije: Docker i Kubernetes

Kirill Sergeev: “Virtualni serveri su podijeljeni u kontejnere, u svaki od kojih možemo instalirati našu aplikaciju. Kada ima puno kontejnera, trebate upravljati njima: uključite jedan, isključite drugi, napravite sigurnosne kopije negdje. Ovo postaje prilično složeno i zahtijeva sistem orkestracije.

Ranije je svakom aplikacijom upravljao poseban server - sve promjene u njenom radu mogle su utjecati na upotrebljivost aplikacije. Zahvaljujući kontejnerima, aplikacije postaju izolovane i rade odvojeno - svaka na svojoj virtuelnoj mašini. Ako dođe do kvara, nema potrebe gubiti vrijeme tražeći uzrok. Lakše je uništiti stari kontejner i dodati novi.”

6. Sistemi konfiguracije: Chef, Ansible, Puppet

Kada trebate održavati čitavu flotu servera, morate obaviti mnogo operacija iste vrste. Dug je i težak, a ručni rad takođe povećava mogućnost greške. Tu u pomoć priskaču konfiguracijski sistemi. Uz njihovu pomoć, kreiraju skriptu koja je laka za čitanje za programere, DevOps inženjere i sistem administratore. Ova skripta pomaže da se iste operacije na serverima izvrše automatski. Ovo smanjuje ručne operacije (a samim tim i greške).

Kakvu karijeru može izgraditi DevOps inženjer?

Možete se razvijati i horizontalno i vertikalno.

Igor Boyko: „S tačke gledišta horizontalnog razvoja, DevOps inženjeri sada imaju najširu perspektivu. Sve se stalno mijenja, a vi možete izgraditi vještine u raznim oblastima: od sistema kontrole verzija do nadzora, od upravljanja konfiguracijom do baza podataka.

Možete postati sistemski arhitekta ako je zaposlenik zainteresiran da razumije kako aplikacija funkcionira u svim fazama njenog životnog ciklusa – od razvoja do podrške.”

Kako postati DevOps inženjer?

  1. Pročitajte Phoenix Project i DevOps priručnik. Ovo su pravi stubovi DevOps filozofije, a prvi je delo fikcije.
  2. Naučite tehnologije sa gornje liste: samostalno ili putem online kurseva.
  3. Pridružite se kao DevOps inženjer za projekat otvorenog koda.
  4. Vježbajte i ponudite DevOps prakse na vašim ličnim i poslovnim projektima.

izvor: www.habr.com

Dodajte komentar