Zakaj je DevOps pomemben in kdo so DevOps strokovnjaki

Ko aplikacija ne deluje, najmanj si želimo slišati od kolegov besedo »težava je na vaši strani«. Posledično trpijo uporabniki – njim je vseeno, katera ekipa nosi odgovornost za okvaro. Kultura DevOps se je pojavila prav zato, da združi razvoj in podporo ter ju poveže okoli skupne odgovornosti za končni izdelek.

Katere prakse vključuje pojem DevOps in zakaj so pomembne? S čim se ukvarjajo DevOps inženirji in kaj morajo znati? Na ta in druga vprašanja odgovarjajo strokovnjaki iz EPAM-a: Kirill Sergeev, sistemski inženir in DevOps evangelist, ter Igor Bojko, vodilni sistemski inženir in koordinator ene izmed DevOps ekip podjetja.

Zakaj je DevOps pomemben in kdo so DevOps strokovnjaki

Zakaj je DevOps potreben?

V preteklosti je med razvijalci in podporo (t. i. operations) obstajal zid. Zveni paradoksalno, a imeli so različne cilje in KPI-je, čeprav so opravljali skupno delo. Cilj razvoja je bil čim hitrejša uresničitev poslovnih zahtev in njihovo vključitev v delujoč izdelek. Podpora je skrbela, da aplikacija stabilno deluje – vsaka sprememba pa ogroža stabilnost. Videti je konflikt interesov – DevOps se je pojavil, da bi ga rešil.

Kaj je DevOps?

Vprašanje je dobro – in sporno: o tem se še niso dokončno dogovorili. V EPAM-u menijo, da DevOps združuje tehnologije, procese in kulturo sodelovanja znotraj ekipe. To združevanje je usmerjeno v neprekinjeno dostavo vrednosti končnim uporabnikom.

Kirill Sergeev: »Razvijalci pišejo kodo, testniki jo preverjajo, administratorji pa nameščajo končni izdelek v produkcijsko okolje. Dolgo časa so bili ti deli ekipe nekoliko razdrobljeni, potem pa se je pojavila ideja, da jih združimo s skupnim procesom. Tako so nastale DevOps prakse.«

Prišel je dan, ko so se razvijalci in sistemski inženirji začeli zanimati za delo drug drugega. Zid med proizvodnjo in podporo se je začel brišeti. Tako je nastal DevOps, ki vključuje prakse, kulturo in red sodelovanja v ekipi.

Zakaj je DevOps pomemben in kdo so DevOps strokovnjaki

V čem je bistvo DevOps kulture?

V tem, da odgovornost za končni rezultat leži na vsakem članu ekipe. Najbolj zanimivo in zapleteno v filozofiji DevOps je razumeti, da posameznik ne odgovarja le za svoj del dela, ampak nosi odgovornost za delovanje celotnega izdelka. Težava ni na strani nekoga – je skupna, in vsak član ekipe prispeva k njenemu reševanju.

Najpomembnejša točka DevOps kulture je prav reševanje težav, ne le uporaba DevOps praks. Poleg tega te prakse niso uvedene »na strani nekoga«, ampak v celotnem izdelku. Projekt ne potrebuje samo DevOps inženirja – potrebuje rešitev težave, vlogo DevOps inženirja pa lahko razdelimo med več članov ekipe z različnimi specializacijami.

Kakšne so DevOps prakse?

DevOps prakse pokrivajo vse faze življenjskega cikla programske opreme.

Igor Boiko: »Idealni primer je, ko začnemo uporabljati DevOps prakse takoj ob iniciaciji projekta. Skupaj z arhitekti načrtujemo, kakšna bo arhitekturna podoba aplikacije, kje bo locirana in kako se bo povečevala, izberemo platformo. Zdaj je v modi mikroservisna arhitektura – zanje izberemo sistem orkestracije: potrebno je znati upravljati vsak element aplikacije posamično in ga neodvisno posodobiti. Še ena praksa je 'infrastruktura kot koda'. To je pristop, pri katerem se infrastruktura projekta ustvarja in upravlja s pomočjo kode, ne pa s neposrednim delovanjem s strežniki.

Nato preidemo na fazo razvoja. Tukaj je ena največjih praks – postavitev CI/CD: potrebno je pomagati razvijalcem hitro integrirati spremembe v izdelek, v manjših količinah, pogosteje in brez bolečin. CI/CD pokriva tako preverjanje kode, nalaganje glavne veje v kodeksno bazo kot tudi uvajanje aplikacije v testna in produkcijska okolja.

V fazah CI/CD koda prehaja skozi quality gates. Z njihovo pomočjo preverjamo, da koda, ki je prišla z delovne postaje razvijalca, ustreza določenim kriterijem kakovosti. Tukaj se doda enotsko in UI testiranje. Za hitro, brez težav in osredotočeno uvajanje izdelka lahko izberemo ustrezen tip uvajanja.

V DevOps praksah je prostor tudi v fazi podpore dokončanega produkta. Uporabljajo se za spremljanje, povratne informacije, varnost in uvajanje sprememb. Na vse te naloge DevOps gleda z vidika nenehnega izboljševanja. Minimiziramo ponavljajoče se operacije, jih avtomatiziramo. Sem sodijo tudi migracije, širitev aplikacij in podpora delovanju.

Kakšne koristi prinašajo DevOps prakse?

Če bi pisali učbenik o sodobnih DevOps praksah, bi na njegovi prvi strani zapisali tri točke: avtomatizacija, pospeševanje izdajanja in hitra povratna informacija od uporabnikov.

Kirill Sergeev: „Prva je avtomatizacija. Vse interakcije znotraj ekipe lahko avtomatiziramo: napisali kodo – izdali – preverili – namestili – zbrali povratne informacije – vrnili se na začetek. Vse to je avtomatsko.

Druga točka je pospeševanje izhoda različice in celo poenostavljanje razvoja. Za naročnika je vedno pomembno, da izdelek pride na trg čim prej in začne prinašati koristi prej kot njegovi konkurenti. Proces dostave produkta lahko nenehno izboljšujemo: skrajšujemo čas, dodajamo dodatne kontrolne točke, izboljšujemo spremljanje.

Tretja točka je pospeševanje povratnih informacij od uporabnikov. Če ima uporabnik pripombe, lahko takoj vnesemo popravke in takoj posodobimo aplikacijo.

Zakaj je DevOps pomemben in kdo so DevOps strokovnjaki

Kako se povezujejo pojmi 'sistemski inženir', 'build inženir' in 'DevOps inženir'?

Prekrivajo se, vendar se nanašajo na nekoliko različna področja.

Sistemski inženir v EPAM-u je naziv. Obstajajo različnih nivojev: od junior do chief strokovnjaka.

Build inženir je bolj vloga, ki jo lahko opravljaš na projektu. Danes tako imenujemo ljudi, odgovorne za CI/CD.

DevOps inženir je strokovnjak, ki na projektu uvaja DevOps prakse.

Če to vse skupaj povzamemo, dobimo približno naslednje: oseba, ki je na položaju sistemskega inženirja, v projektu igra vlogo build inženirja in se ukvarja z uvajanjem DevOps praks.

Kaj pravzaprav počne DevOps inženir?

DevOps inženirji povezujejo vse dele projekta. Razumejo specifike dela programerjev, testerjev in sistemskih administratorjev ter pomagajo poenostaviti njihovo delo. Razumejo potrebe in zahteve podjetja ter njegovo vlogo v procesu razvoja ter gradijo proces ob upoštevanju interesov naročnika.

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

Kirill Sergeev«Preden uvedemo nadgradnje v izdelek, jih je treba testirati na zunanjem okolju. To pripravljajo DevOps inženirji. Oni uvajajo DevOps kulturo v projektu kot celoti: implementirajo DevOps prakse na vseh nivojih svojih projektov. Ti trije principi: avtomatizacija, poenostavitev, pospešitev – jih prinašajo povsod, kjer lahko dosežejo».

Kaj mora znati DevOps inženir?

Na splošno bi moral imeti znanje iz različnih področij: programiranje, delo z operacijskimi sistemi, bazami podatkov, sistemi za sestavljanje in konfiguracijo. Dodati je treba tudi sposobnost dela z oblačno infrastrukturo, sistemi za orkestracijo in nadzor.

1. Programski jeziki

DevOps inženirji poznajo nekaj osnovnih jezikov za avtomatizacijo in lahko, na primer, rečejo programerju: «Zakaj ne bi namesto ročne namestitve kode uporabili našega skripte, ki vse avtomatizira? Pripravili bomo config datoteko, ki jo bo lahko lahko brati tako ti kot mi – in katero bomo lahko kadarkoli spremenili. Poleg tega bomo videli, kdo, kdaj in zakaj je v njej opravil spremembe».

DevOps inženir se lahko nauči enega ali več od teh jezikov: Python, Groovy, Bash, PowerShell, Ruby, Go. Poznavanje teh jezikov na globoki ravni ni potrebno – zadostujejo osnove sintakse, principi OOP in sposobnost pisanja enostavnih skript za avtomatizacijo.

2. Operacijski sistemi

DevOps inženir mora razumeti, na katerem strežniku bo izdelek nameščen, v katerem okolju bo zagnan in s katerimi storitvami bo sodeloval. Lahko se specializira za Windows ali družino Linux.

3. Sistemi za nadzor različic

Brez poznavanja sistemov za nadzor različic DevOps inženirju ne bo uspelo. Git je eden izmed najbolj priljubljenih sistemov v tem trenutku.

4. Oblačni ponudniki

AWS, Google, Azure – še posebej, če govorimo o usmeritvi Windows.

Kirill Sergeev: «Oblačne storitve nam zagotavljajo se zelo razlikujejo po značilnostih, ter za boljšo reproducibilnost so tukaj, ki se odlično ujemajo s CI/CD cevmi.

Namestitev desetih fizičnih strežnikov zahteva približno sto ročnih operacij. Vsak strežnik je treba ročno zagnati, namestiti in konfigurirati ustrezni operacijski sistem, namestiti našo aplikacijo na teh desetih strežnikih in nato desetkrat vse preveriti. Oblak storitve to proceduro nadomestijo z desetimi vrsticami kode, dober DevOps inženir pa se mora znati z njimi služiti. S tem prihrani čas, trud in denar – tako za naročnika kot za podjetje».

5. Orkestracijski sistemi: Docker in Kubernetes

Kirill Sergeev: «Virtualni strežniki so razdeljeni na vsebnike, v katere lahko namestimo našo aplikacijo. Ko je vsebnikov veliko, jih je treba upravljati: enega vklopiti, drugega izklopiti, nekje narediti varnostne kopije. To postane zelo zapleteno opravilo, za katero potrebujemo sistem orkestracije.

Prej je vsak program upravljal ločen strežnik – kakršne koli spremembe v njegovem delovanju so lahko vplivale na delovanje programa. Zaradi vsebnikov programi postanejo izolirani in se izvajajo ločeno – vsak na svojem virtualnem stroju. Če pride do okvare, ni treba izgubljati časa z iskanjem vzroka. Lažje je uničiti star vsebnik in dodati novega».

6. Konfiguracijski sistemi: Chef, Ansible, Puppet

Ko je treba vzdrževati cel park strežnikov, je treba narediti veliko enakih operacij. To traja dolgo in je zapleteno, ročno delo pa povečuje možnost napake. Tu na pomoč priskočijo konfiguracijski sistemi. Z njihovo pomočjo ustvarijo skript, ki ga je enostavno brati tako programerjem, kot DevOps inženirjem in sistemskim skrbnikom. Ta skript omogoča izvajanje enakih operacij na strežnikih samodejno. Tako se zmanjša število ročnih operacij (in posledično napak).

Kako kariero lahko ustvari DevOps inženir?

Razvijati se je mogoče tako horizontalno kot vertikalno.

Igor Boiko: «Glede horizontalnega razvoja imajo DevOps inženirji trenutno široke možnosti. Vse se nenehno spreminja, in veščine je mogoče razvijati v najrazličnejših smereh: od sistemov za nadzor različic do spremljanja, od upravljanja s konfiguracijami do zbirk podatkov.

Možete postati sistemski arhitekt ako vas zanima kako aplikacija funkcioniše u svim fazama svog životnog ciklusa – od razvoja do podrške.

Kako postati DevOps inženjer?

  1. Pročitajte knjige „Projekt 'Feniks'“ i DevOps Handbook. Ovo su pravi stubovi filozofije DevOps, a prva je umetnički roman.
  2. Istražujte tehnologije sa gornjeg popisa: samostalno ili putem online kurseva.
  3. Pridružite se kao DevOps inženjer na open source projektu.
  4. Vežbajte i predložite DevOps prakse u svojim ličnim i radnim projektima.

Izvor: habr.com

Kupite zanesljivo gostovanje za spletne strani z zaščito pred DDoS, VPS VDS strežniki 🔥 Kupite zanesljivo gostovanje za spletne strani z zaščito pred DDoS, VPS VDS strežniki | ProHoster