Zakaj je DevOps potreben in kdo so strokovnjaki za DevOps?

Ko aplikacija ne deluje, je zadnja stvar, ki bi jo želeli slišati od svojih sodelavcev, besedna zveza »težava je na vaši strani«. Zaradi tega trpijo uporabniki – in jim je vseeno, kateri del ekipe je odgovoren za okvaro. Kultura DevOps se je pojavila ravno zato, da bi združila razvoj in podporo okoli skupne odgovornosti za končni izdelek.

Katere prakse so vključene v koncept DevOps in zakaj so potrebne? Kaj počnejo inženirji DevOps in kaj bi morali znati? Na ta in druga vprašanja odgovarjata strokovnjaka iz EPAM-a: Kirill Sergeev, sistemski inženir in evangelist DevOps, in Igor Boyko, vodilni sistemski inženir in koordinator ene od ekip podjetja DevOps.

Zakaj je DevOps potreben in kdo so strokovnjaki za DevOps?

Zakaj je DevOps potreben?

Prej je obstajala ovira med razvijalci in podporo (tako imenovano operacijo). Sliši se paradoksalno, vendar so imeli različne cilje in KPI, čeprav so počeli isto. Cilj razvoja je bil čim hitrejša implementacija poslovnih zahtev in dodajanje delujočemu izdelku. Podpora je bila odgovorna za zagotavljanje, da je aplikacija delovala stabilno – vse spremembe pa ogrožajo stabilnost. Obstaja navzkrižje interesov – zdi se, da ga DevOps rešuje.

Kaj je DevOps?

To je dobro vprašanje – in kontroverzno: svet se o tem še ni dokončno strinjal. EPAM verjame, da DevOps združuje tehnologije, procese in kulturo interakcije znotraj ekipe. Cilj tega združenja je nenehno zagotavljanje vrednosti končnim uporabnikom.

Kiril Sergejev: »Razvijalci napišejo kodo, preizkuševalci jo pregledajo, skrbniki pa postavijo končni izdelek v proizvodnjo. Dolgo časa so bili ti deli ekipe nekoliko razpršeni, nato pa se je porodila ideja, da bi jih združili skozi skupen proces. Tako so se pojavile prakse DevOps.”

Prišel je dan, ko so se razvijalci in sistemski inženirji začeli zanimati za delo drug drugega. Ovira med proizvodnjo in podporo je začela izginjati. Tako je nastal DevOps, ki vključuje prakse, kulturo in timsko interakcijo.

Zakaj je DevOps potreben in kdo so strokovnjaki za DevOps?

Kaj je bistvo DevOps kulture?

Dejstvo je, da odgovornost za končni rezultat nosi vsak član ekipe. Najbolj zanimivo in težko v filozofiji DevOps je razumeti, da določena oseba ni odgovorna samo za svojo fazo dela, ampak je odgovorna za to, kako bo celoten izdelek deloval. Težava ni na nikogaršnji strani - je skupna in vsak član ekipe jo pomaga rešiti.

Najpomembnejša stvar v kulturi DevOps je rešiti problem, ne le uporabiti prakse DevOps. Poleg tega se te prakse ne izvajajo »na strani nekoga«, temveč skozi celoten izdelek. Projekt sam po sebi ne potrebuje inženirja DevOps – potrebuje rešitev problema, vlogo inženirja DevOps pa je mogoče porazdeliti med več članov ekipe z različnimi specializacijami.

Kakšne so vrste praks DevOps?

Prakse DevOps pokrivajo vse faze življenjskega cikla programske opreme.

Igor Bojko: »Idealen primer je, ko začnemo uporabljati prakse DevOps takoj na začetku projekta. Skupaj z arhitekti načrtujemo, kakšno arhitekturno krajino bo imela aplikacija, kje se bo nahajala in kako se bo merilo ter izbrali platformo. Danes je v modi mikrostoritvena arhitektura, zanjo izberemo sistem orkestracije: vsak element aplikacije moraš znati upravljati posebej in ga posodabljati neodvisno od ostalih. Druga praksa je »infrastruktura kot koda«. To je ime za pristop, pri katerem je projektna infrastruktura ustvarjena in upravljana s kodo, namesto z neposredno interakcijo s strežniki.

Nato preidemo na fazo razvoja. Ena največjih praks tukaj je izgradnja CI/CD: razvijalcem morate pomagati, da spremembe v izdelek vključijo hitro, v majhnih delih, pogosteje in neboleče. CI/CD zajema pregled kode, nalaganje masterja v bazo kode in uvajanje aplikacije v testna in produkcijska okolja.

Na stopnjah CI/CD gre koda skozi vrata kakovosti. Z njihovo pomočjo preverijo, ali koda, ki pride iz razvijalčeve delovne postaje, ustreza podanim kriterijem kakovosti. Tukaj je dodano testiranje enot in uporabniškega vmesnika. Za hitro, nebolečo in osredotočeno uvedbo izdelka lahko izberete ustrezno vrsto uvedbe.

DevOps praktiki imajo tudi mesto v fazi podpore končnemu izdelku. Uporabljajo se za spremljanje, povratne informacije, varnost in uvajanje sprememb. DevOps gleda na vse te naloge z vidika nenehnih izboljšav. Minimiziramo ponavljajoče se operacije in jih avtomatiziramo. To vključuje tudi migracije, razširitev aplikacij in podporo za zmogljivost.«

Kakšne so prednosti praks DevOps?

Če bi pisali učbenik o sodobnih praksah DevOps, bi bile na prvi strani tri točke: avtomatizacija, pospešitev izdaj in hitre povratne informacije uporabnikov.

Kiril Sergejev: »Prva stvar je avtomatizacija. Avtomatiziramo lahko vse interakcije v ekipi: napisali kodo - razvili jo - preverili - namestili - zbrali povratne informacije - vrnili na začetek. Vse to je samodejno.

Drugi je pospešitev izdaje in celo poenostavitev razvoja. Za stranko je vedno pomembno, da pride izdelek čim prej na trg in začne prinašati koristi prej kot konkurenti. Proces dostave izdelkov je mogoče neskončno izboljševati: skrajšati čas, dodati dodatne kontrolne oznake, izboljšati nadzor.

Tretjič je pospešitev povratnih informacij uporabnikov. Če ima pripombe, lahko takoj prilagodimo in aplikacijo takoj posodobimo.”

Zakaj je DevOps potreben in kdo so strokovnjaki za DevOps?

Kako se povezujejo pojmi "sistemski inženir", "inženir gradnje" in "inženir DevOps"?

Prekrivajo se, a pripadajo nekoliko različnim področjem.

Sistemski inženir pri EPAM je položaj. Prihajajo v različnih ravneh: od mlajšega do glavnega specialista.

Gradbeni inženir je bolj vloga, ki jo lahko opravlja na projektu. Zdaj se tako imenujejo ljudje, odgovorni za CI/CD.

Inženir DevOps je strokovnjak, ki izvaja prakse DevOps na projektu.

Če vse skupaj povzamemo, dobimo nekaj takega: oseba na položaju sistemskega inženirja igra vlogo gradbenega inženirja na projektu in je tam vključena v implementacijo DevOps praks.

Kaj točno počne inženir DevOps?

Inženirji DevOps sestavijo vse dele, ki sestavljajo projekt. Poznajo posebnosti dela programerjev, testerjev, sistemskih administratorjev in jim pomagajo poenostaviti delo. Razumejo potrebe in zahteve podjetja, njegovo vlogo v razvojnem procesu – in gradijo proces ob upoštevanju interesov stranke.

Veliko smo govorili o avtomatizaciji – s tem se ukvarjajo predvsem DevOps inženirji. To je zelo velika točka, ki med drugim vključuje pripravo okolja.

Kiril Sergejev: »Pred uvedbo posodobitev v izdelek jih je treba preizkusiti v okolju tretje osebe. Pripravljajo ga inženirji DevOps. Kulturo DevOps vnašajo v projekt kot celoto: prakse DevOps uvajajo na vseh ravneh svojih projektov. Ta tri načela: avtomatizacija, poenostavitev, pospešek – prinašajo kamorkoli lahko dosežejo.”

Kaj mora vedeti inženir DevOps?

V glavnem mora imeti znanja iz različnih področij: programiranja, dela z operacijskimi sistemi, bazami podatkov, montažnimi in konfiguracijskimi sistemi. Ti vključujejo sposobnost dela z infrastrukturo v oblaku, orkestracijo in sisteme za spremljanje.

1. Programski jeziki

Inženirji DevOps poznajo več osnovnih jezikov za avtomatizacijo in lahko na primer rečejo programerju: »Kaj če kode ne namestite ročno, ampak z uporabo našega skripta, ki avtomatizira vse? Zanj bomo pripravili konfiguracijsko datoteko, ki bo priročna za branje tako vam kot nam, in jo bomo lahko kadar koli spremenili. Videli bomo tudi, kdo, kdaj in zakaj bo to spreminjal.”

Inženir DevOps se lahko nauči enega ali več teh jezikov: Python, Groovy, Bash, Powershell, Ruby, Go. Ni jih potrebno poznati na globoki ravni - dovolj so osnove sintakse, načela OOP in sposobnost pisanja preprostih skriptov za avtomatizacijo.

2. Operacijski sistemi

Inženir DevOps mora razumeti, na kateri strežnik bo izdelek nameščen, v kakšnem okolju se bo izvajal in s katerimi storitvami bo sodeloval. Izberete lahko specializacijo za Windows ali družino Linux.

3. Sistemi za nadzor različic

Brez znanja o sistemu za nadzor različic DevOps inženir ni nikjer. Git je trenutno eden najbolj priljubljenih sistemov.

4. Ponudniki v oblaku

AWS, Google, Azure - še posebej, če govorimo o smeri Windows.

Kiril Sergejev: »Ponudniki oblakov nam zagotavljajo virtualne strežnike, ki se popolnoma prilegajo CI/CD.

Namestitev desetih fizičnih strežnikov zahteva približno sto ročnih operacij. Vsak strežnik je treba ročno zagnati, namestiti in konfigurirati zahtevani operacijski sistem, namestiti našo aplikacijo na teh deset strežnikov in nato vse skupaj desetkrat dvakrat preveriti. Oblačne storitve nadomeščajo ta postopek z desetimi vrsticami kode in dober DevOps inženir bi moral znati z njimi operirati. To prihrani čas, trud in denar – tako za stranko kot za podjetje.”

5. Sistemi orkestracije: Docker in Kubernetes

Kiril Sergejev: »Virtualni strežniki so razdeljeni na vsebnike, v vsakega od njih lahko namestimo svojo aplikacijo. Ko je vsebnikov veliko, jih morate upravljati: enega vklopite, drugega izklopite, nekje naredite varnostne kopije. To postane precej zapleteno in zahteva sistem orkestracije.

Prej je vsako aplikacijo obravnaval ločen strežnik - kakršne koli spremembe v njegovem delovanju so lahko vplivale na uporabnost aplikacije. Zahvaljujoč vsebnikom postanejo aplikacije izolirane in delujejo ločeno – vsaka na svojem virtualnem računalniku. Če pride do okvare, ni treba izgubljati časa z iskanjem vzroka. Lažje je uničiti staro posodo in dodati novo.«

6. Konfiguracijski sistemi: Chef, Ansible, Puppet

Ko morate vzdrževati celotno floto strežnikov, morate opraviti veliko istih vrst operacij. Je dolgo in težko, ročno delo pa poveča tudi možnost napake. Tu priskočijo na pomoč konfiguracijski sistemi. Z njihovo pomočjo ustvarijo skripto, ki je lahko berljiva za programerje, DevOps inženirje in sistemske skrbnike. Ta skript pomaga pri samodejnem izvajanju istih operacij na strežnikih. To zmanjša ročne operacije (in s tem napake).

Kakšno kariero lahko zgradi inženir DevOps?

Lahko se razvijate vodoravno in navpično.

Igor Bojko: »Z vidika horizontalnega razvoja imajo inženirji DevOps zdaj najširše možnosti. Vse se nenehno spreminja in veščine lahko razvijate na različnih področjih: od sistemov za nadzor različic do spremljanja, od upravljanja konfiguracije do baz podatkov.

Sistemski arhitekt lahko postaneš, če zaposlenega zanima, kako deluje aplikacija v vseh fazah njenega življenjskega cikla – od razvoja do podpore.«

Kako postati DevOps inženir?

  1. Preberite Priročnik o projektu Phoenix in DevOps. To so resnični stebri filozofije DevOps, pri čemer je prvi le fikcija.
  2. Naučite se tehnologij z zgornjega seznama: sami ali prek spletnih tečajev.
  3. Pridružite se kot inženir DevOps za odprtokodni projekt.
  4. Vadite in ponudite prakse DevOps na svojih osebnih in delovnih projektih.

Vir: www.habr.com

Dodaj komentar