Blog

Čo robí DevOps Engineer?

Learn2Code tím - 16.11.2021 - Vzdelávanie

Na základe niektorých štatistík sa predpokladá, že dopyt po softvérových inžinieroch do roku 2029 narastie o 22%. Tento dopyt po softvérových inžinieroch a webových či mobilných aplikáciách, ktoré vytvárajú, viedol k mnohým novým pracovným pozíciám a inovatívnym, efektívnejším vývojovým procesom – ako napríklad DevOps. 

Zaujíma ťa, čo je to DevOps, čo robí taký DevOps Engineer (inžinier), koľko zarába a aké zručnosti potrebuje? Čítaj ďalej a dozvieš sa viac.

Čo je DevOps?

DevOps je spojenie slov Development (vývoj) a Operations (prevádzka). Je to špeciálna metóda vývoja softvéru, ktorá spája procesy, ľudí a technológie, vďaka čomu môžu firmy produkovať kvalitný softvér, služby a produkty.

DevOps-áci používajú nástroje, procesy a metódy vývoja na zabezpečenie efektívneho vývoja aplikácií. Zohrávajú dôležitú úlohu v každej fáze procesu vývoja, od nápadu až po implementáciu a údržbu.

DevOps označuje spôsob vývoja softvéru, ktorý zaisťuje, že všetko beží hladko v každej fáze vývoja. Pred predstavením DevOps v roku 2009 vývojárske tímy zvyčajne zostavovali každú časť aplikácie nezávisle. Jeden tím by sa napríklad zaoberal štruktúrou databázy, zatiaľ čo iný vytvoril frontend alebo bezpečnostné prvky. Aj keď to bolo efektívne, často to viedlo k problémom, keď boli tieto rôzne časti spojené do jedného celku.

DevOps sa snaží tento problém vyriešiť tým, že všetkých účastníkov vývoja spojí dokopy. Môžeš si to ľahko predstaviť ako stavbu domu. Štandardne by si mal rôznych dodávateľov, ktorí by robili rôzne práce: murári, elektrikári, inštalatéri, maliari atď. Pri DevOps modeli však títo dodávatelia spolupracujú, diskutujú o každej fáze vývoja a pracujú spolu a ťahajú za jeden povraz.

Výsledkom je, že konečný produkt je efektívnejší, kvalitnejší a ušetrí aj čas, pretože každá zložka sa spája s ostatnými. DevOps Engineer zaisťuje, že sa to všetko deje hladko a konzistentne počas celého životného cyklu vývoja. DevOps špecialisti teda používajú rôzne nástroje, procesy a metódy vývoja, aby zabezpečili efektívny vývoj aplikácií. V každej fáze procesu vývoja (od nápadu až po implementáciu a údržbu) zohrávajú významnú úlohu.

Keďže celý vývoj aplikácie je v rámci jedného tímu, vývojári sú schopní rýchlejšie komunikovať medzi sebou, ale aj kolaborovať so zákazníkom, čo znamená častejšie vydávanie nových verzií vyvíjaného softvéru.

Funkcie DevOps

DevOps špecialista podporuje komunikáciu, spoluprácu a zdieľanie zodpovednosti naprieč všetkými stranami počas životného cyklu vývoja. Hlavnou výzvou, ktorej čelia DevOps-áci, je zjednotiť všetkých účastníkov vývoja, čo sú frontend a backend developeri, UI/UX dizajnéri, testeri, ľudia zodpovední za bezpečnosť produktu, ale aj obchodníci, zákaznícky servis či ďalšie kľúčové osoby. 

V DevOps kultúre sú všetci títo účastníci rovnako dôležití a ich vstupy do vývoja majú rovnakú hodnotu. DevOps-ák musí zabezpečiť, že je s tým celý tím stotožnený, podporuje to a samozrejme najmä praktizuje. 

Aké techniky používajú DevOps-áci?

Najčastejšie sú využívané nasledovné postupy či technológie:

  • continuous integration, continuous deployment (CI/CD),
  • kontajnerizácia,
  • monitorovanie.

V skratke si povedzme o každej z vyššie uvedených technológií.

CI/CD

Zavádza automatizáciu do softvérového vývoja. Pomocou skupiny rôznych nástrojov tak je možné zabezpečiť automatické zostavovanie verzií, ich kontrolu a reporting kvalít konkrétnej verzie. Po zostavení a otestovaní je možné nasadiť verziu do produkčného prostredia. To je technika Continuous Integration. Inými slovami, zmeny sa vykonajú a integrujú okamžite.

"CD" sa môže vzťahovať aj na Continuous Delivery. Zmeny vykonané v aplikácii sa pred odoslaním do úložiska (napr. GitHub) testujú na chyby. Následne sú umiestnené do živej produkcie. Continuous Deployment znamená automatické odosielanie zmien vykonaných vývojárom z úložiska ako napr. GitHub do produkcie, kde ho môžu koncoví používatelia používať.

Kontajnery

Kontajnery poskytujú spôsob izolácie procesov od zvyšku softvéru. Každý kontajner funguje v podstate ako virtuálny stroj, ktorý spúšťa jednu časť celkového procesu. Pretože kontajnery sa dajú veľmi rýchlo zapnúť a vypnúť, kontajnerizácia uľahčuje vytváranie, nasadzovanie a spúšťanie aplikácií. DevOps engineer musí rozumieť kontajnerizácii, pretože má vplyv na to, ako sa produkt vytvára, upravuje a testuje.

Pri vytváraní kontajnera by malo platiť pravidlo, že jeden kontajner je jedna služba. Na to, aby sme docielili tieto vlastnosti kontajnerov, musíme dodržať 3 hlavné princípy kontajnerizácie: štandardnosť (Standard), jednoduchosť (Lightweight) a izolovanosť (Isolated).

V dnešnej dobe je veľmi populárny prechod na mikroservisovo orientovanú architektúru. Pri tejto architektúre je funkcionalita softvéru rozdelená do menších častí - mikroservisov. Cieľom je vytvorenie aplikácie, ktorá bude čo najviac modulárna. Bude to znamenať jej zjednodušenie, udržiavateľnosť a tiež škálovateľnosť. Funkcionalita aplikácie sa rozdelí do jednotlivých mikroservisov, kde každý má na starosti iba jednu, oddelenú časť softvéru. Ak bude potrebná zmena aplikácie, tieto mikroservisy je relatívne jednoduché upraviť. Vykoná sa len požadovaná zmena, upraví sa daný mikroservis a opätovne je nasadený. Pri takomto prístupe sa vyskytuje menej chýb, výpadkov a má to kladný vplyv na testovanie a hľadanie chýb v softvéri.

Monitorovanie

Monitorovanie zahŕňa používanie systému, ktorý umožňuje sledovať celý vývojový ekosystém a upozorní ťa, ak sa niečo pokazí. S dobre nastaveným monitorovaním môžeš rýchlo riešiť problémy pomocou analýzy základných príčin, ktorá presne určí, kde problém začal. Monitorovanie ti tiež umožňuje zistiť, ako sa rôzne systémy navzájom ovplyvňujú, či už bežia súčasne alebo postupne.

Tvoja práca ako DevOps špecialistu bude takmer nemožná bez komplexného monitorovacieho riešenia. Riešenie problémov bude rýchlejšie a efektívnejšie.

DASA DevOps Competency model (zdroj: DASA)
DASA DevOps Competency model (zdroj: DASA)

Zručnosti DevOps špecialistu

Technické zručnosti sú nevyhnutnosťou. Aj keď sa v DevOps prostredí a IT všeobecne neustále objavujú nové technológie a nástroje, dobrý DevOps inžinier by mal mať kvalitné znalosti v týchto oblastiach:

  • verziovanie, systém správy verzií (ako Git, Github, Bitbucket, Svn atď.),
  • Continuous integration (Jenkins, Bamboo, VSTS),
  • koncepty kontajnerov (Docker),
  • orchestrácia kontajnerov (Kubernetes, Swarm, Openshift),
  • cloud (AWS, Azure, GoogleCloud, Openstack),
  • základy sietí, Linux (základy OS), Bash,
  • základy programovania (napr. Python, Design Patterns).

DevOps inžinieri musia byť schopní písať bezpečný kód na ochranu aplikácií pred útokmi, ako aj na obranu pred bežnými zraniteľnosťami kybernetickej bezpečnosti. Rovnako ako v iných technických prostrediach, kľúčovým prvkom DevOps je tiež automatizácia. Veľa opakujúcich sa a manuálnych úloh vykonávaných tradičnejšími systémovými administrátormi možno automatizovať pomocou jazykov ako Python, Ruby, Bash či Shell.

Nezabúdaj ani na soft skill zručnosti ako komunikačné zručnosti, dobrú organizáciu, ochotu spolupracovať, flexibilitu, prezentačné zručnosti alebo to, že zákazník je na prvom mieste.

Mzda DevOps špecialistu sa podľa portálu platy.sk pohybuje v závislosti od regiónu a seniority na úrovni od 2.000 Eur vyššie. Jedná sa o veľmi žiadanú pozíciu, dopyt po DevOps inžinieroch v ostatných rokoch značne vzrástol.

Ako sa stať DevOps špecialistom

Aby si sa stal DevOps špecialistom, musíš získať znalosti a skúsenosti potrebné na prácu s rôznymi technológiami. Kľúčom je naučiť sa zručnosti, aplikovať ich a vybudovať si portfólio, ktorým sa vieš odprezentovať.

Náš zoznam vyššie v článku sa zdá byť vyčerpávajúci a nekonečný. Ako sme už spomínali, v jednej oblasti môžeš byť expertom a o iných vieš toho málo. To je úplne v poriadku. Základné znalosti z každej oblasti sú dobrým začiatkom. Napríklad, ak si softvérový inžinier, určite si dobrý v programovaní. Nemalo by byť pre teba ťažké zvládnuť prácu admina, pretože niektoré činnosti si už určite mohol vykonávať vo svojej práci.

Rovnako, ak si sieťový inžinier, nebudeš mať problém naučiť sa viac o bezpečnosti, virtualizácii a správe infraštruktúry. Každá z týchto zručností spolu súvisí. Cesta k tomu, aby ste sa stali DevOps špecialistom je dlhá, ale stojí za to. A neexistujú žiadne skratky.



Logo facebook

Learn2Code tím

Učíme ľudí dizajnovať, robiť webstránky a programovať. Naše prezenčné kurzy nájdeš vo viacerých mestách na Slovensku a pomocou online kurzov sa môžeš vzdelávať z pohodlia domova.


8 populárnych IDE a editorov kódu

Vzdelávanie

Keď absolvuješ naše online kurzy programovania, budeš používať textový editor. Keď študuješ kurz HTML a CSS, vystačíš si aj textový editor ako napr....

Čo je testovanie softvéru?

Vzdelávanie

Softvér je potrebné testovať počas jeho vývoja aj po každom update. Ak sa chceš dozvedieť, čo je súčasťou testovania softvéru, prečo je testovanie...

10 programátorských C++ úloh pre začiatočníkov

Vzdelávanie

Naučiť sa C ++ nie je ľahká úloha, keď si však chceš uchovať svoje znalosti v dobrej forme, vyžaduje si to prax. Jedna vec je naučiť sa základy...