Prečo je potrebné DevOps a kto sú špecialisti DevOps?

Keď aplikácia nefunguje, posledná vec, ktorú chcete od svojich kolegov počuť, je veta „problém je na vašej strane“. V dôsledku toho používatelia trpia – a je im jedno, ktorá časť tímu je zodpovedná za poruchu. Kultúra DevOps vznikla práve preto, aby spojila vývoj a podporu okolo spoločnej zodpovednosti za konečný produkt.

Aké postupy sú zahrnuté v koncepte DevOps a prečo sú potrebné? Čo robia inžinieri DevOps a čo by mali vedieť? Na tieto a ďalšie otázky odpovedajú experti z EPAM: Kirill Sergeev, systémový inžinier a evanjelista DevOps, a Igor Bojko, popredný systémový inžinier a koordinátor jedného z tímov DevOps spoločnosti.

Prečo je potrebné DevOps a kto sú špecialisti DevOps?

Prečo je potrebný DevOps?

Predtým existovala bariéra medzi vývojármi a podporou (tzv. operácie). Znie to paradoxne, ale mali iné ciele a KPI, hoci robili to isté. Cieľom vývoja bolo čo najrýchlejšie implementovať obchodné požiadavky a pridať ich do funkčného produktu. Podpora bola zodpovedná za zabezpečenie stabilného fungovania aplikácie – a akékoľvek zmeny ohrozovali stabilitu. Existuje konflikt záujmov – zdá sa, že DevOps to vyrieši.

Čo je DevOps?

Je to dobrá otázka – a zároveň kontroverzná: svet sa na tom ešte definitívne nezhodol. EPAM verí, že DevOps spája technológie, procesy a kultúru interakcie v rámci tímu. Cieľom tohto združenia je neustále poskytovať hodnotu koncovým používateľom.

Kirill Sergejev: „Vývojári píšu kód, testeri ho kontrolujú a správcovia nasadzujú finálny produkt do produkcie. Dlho boli tieto časti tímu akosi rozlietané a potom vznikla myšlienka spojiť ich spoločným postupom. Takto sa objavili praktiky DevOps.“

Nastal deň, keď sa vývojári a systémoví inžinieri začali zaujímať o prácu toho druhého. Bariéra medzi výrobou a podporou začala miznúť. Takto vznikol DevOps, ktorý zahŕňa postupy, kultúru a tímovú interakciu.

Prečo je potrebné DevOps a kto sú špecialisti DevOps?

Čo je podstatou kultúry DevOps?

Faktom je, že zodpovednosť za konečný výsledok nesie každý člen tímu. Najzaujímavejšie a najťažšie na filozofii DevOps je pochopiť, že konkrétny človek nie je zodpovedný len za svoju vlastnú fázu práce, ale je zodpovedný za to, ako bude fungovať celý produkt. Problém neleží na žiadnej strane – je zdieľaný a každý člen tímu ho pomáha riešiť.

Najdôležitejšou vecou v kultúre DevOps je vyriešiť problém, nielen aplikovať postupy DevOps. Navyše tieto praktiky nie sú implementované „na niečej strane“, ale v rámci celého produktu. Projekt sám osebe nepotrebuje DevOps inžiniera – potrebuje riešenie problému a rola DevOps inžiniera môže byť rozdelená medzi viacerých členov tímu s rôznymi špecializáciami.

Aké sú typy postupov DevOps?

Postupy DevOps pokrývajú všetky fázy životného cyklu softvéru.

Igor Bojko: „Ideálny prípad je, keď začneme používať postupy DevOps hneď na začiatku projektu. Spolu s architektmi plánujeme, akú architektonickú krajinu bude aplikácia mať, kde sa bude nachádzať a ako sa bude škálovať, a zvolíme platformu. V súčasnosti je v móde architektúra mikroservisov - na to volíme systém orchestrácie: musíte byť schopní spravovať každý prvok aplikácie samostatne a aktualizovať ho nezávisle od ostatných. Ďalšou praxou je „infraštruktúra ako kód“. Toto je názov pre prístup, v ktorom sa infraštruktúra projektu vytvára a riadi pomocou kódu, a nie prostredníctvom priamej interakcie so servermi.

Ďalej prejdeme do fázy vývoja. Jednou z najväčších praktík je tu vytváranie CI/CD: musíte pomôcť vývojárom integrovať zmeny do produktu rýchlo, po malých častiach, častejšie a bezbolestne. CI/CD pokrýva kontrolu kódu, nahrávanie hlavného kódu do základne kódu a nasadenie aplikácie do testovacích a produkčných prostredí.

Vo fázach CI/CD kód prechádza bránami kvality. S ich pomocou skontrolujú, či kód, ktorý vychádza z pracovnej stanice vývojára, spĺňa špecifikované kritériá kvality. Tu je pridané testovanie jednotiek a používateľského rozhrania. Pre rýchle, bezbolestné a cielené nasadenie produktu si môžete vybrať vhodný typ nasadenia.

Praktici DevOps majú svoje miesto aj v štádiu podpory hotového produktu. Používajú sa na monitorovanie, spätnú väzbu, zabezpečenie a zavádzanie zmien. DevOps sa na všetky tieto úlohy pozerá z perspektívy neustáleho zlepšovania. Minimalizujeme opakované operácie a automatizujeme ich. To zahŕňa aj migrácie, rozšírenie aplikácií a podporu výkonu.“

Aké sú výhody postupov DevOps?

Ak by sme písali učebnicu o moderných postupoch DevOps, na prvej strane by boli tri body: automatizácia, zrýchlenie vydaní a rýchla spätná väzba od používateľov.

Kirill Sergejev: „Prvá vec je automatizácia. Všetky interakcie v tíme dokážeme zautomatizovať: napísať kód – zaviesť ho – skontrolovať – nainštalovať – získať spätnú väzbu – vrátiť sa na začiatok. Toto všetko je automatické.

Druhým je zrýchlenie vydania a dokonca zjednodušenie vývoja. Pre zákazníka je vždy dôležité, aby produkt vstúpil na trh čo najskôr a začal poskytovať výhody skôr ako analógy konkurentov. Proces dodávania produktu možno donekonečna zlepšovať: skrátiť čas, pridať ďalšie kontrolné značky, zlepšiť monitorovanie.

Tretím je zrýchlenie spätnej väzby od používateľov. Ak má pripomienky, môžeme okamžite vykonať úpravy a aplikáciu okamžite aktualizovať.“

Prečo je potrebné DevOps a kto sú špecialisti DevOps?

Ako súvisia pojmy „systémový inžinier“, „stavebný inžinier“ a „devOps inžinier“?

Prekrývajú sa, ale patria do trochu iných oblastí.

Systémový inžinier v EPAM je pozícia. Prichádzajú na rôznych úrovniach: od juniora až po hlavného špecialistu.

Stavebný inžinier je skôr úlohou, ktorú možno vykonávať na projekte. Teraz sa takto nazývajú ľudia zodpovední za CI/CD.

Inžinier DevOps je špecialista, ktorý implementuje postupy DevOps na projekte.

Ak si to všetko zhrnieme, dostaneme asi toto: človek na pozícii systémového inžiniera hrá na projekte úlohu stavača a podieľa sa tam na implementácii praktík DevOps.

Čo presne robí inžinier DevOps?

Inžinieri DevOps dali dokopy všetky časti, ktoré tvoria projekt. Poznajú špecifiká práce programátorov, testerov, systémových administrátorov a pomáhajú im zjednodušiť prácu. Rozumejú potrebám a požiadavkám podniku, jeho úlohe v procese vývoja – a budujú proces s prihliadnutím na záujmy zákazníka.

Veľa sme hovorili o automatizácii – tým sa inžinieri DevOps zaoberajú predovšetkým. Ide o veľmi rozsiahly bod, ktorý okrem iného zahŕňa aj prípravu prostredia.

Kirill Sergejev: „Pred implementáciou aktualizácií do produktu je potrebné ich otestovať v prostredí tretej strany. Pripravujú ho inžinieri DevOps. Projektu ako celku vštepujú kultúru DevOps: zavádzajú postupy DevOps na všetkých úrovniach svojich projektov. Tieto tri princípy: automatizácia, zjednodušenie, zrýchlenie – prinášajú všade tam, kde môžu dosiahnuť.“

Čo by mal vedieť inžinier DevOps?

Vo všeobecnosti musí mať znalosti z rôznych oblastí: programovanie, práca s operačnými systémami, databázami, montážnymi a konfiguračnými systémami. Tie sú doplnené o možnosť práce s cloudovou infraštruktúrou, orchestráciou a monitorovacími systémami.

1. Programovacie jazyky

Inžinieri DevOps poznajú niekoľko základných jazykov pre automatizáciu a môžu napríklad povedať programátorovi: „Čo keby ste nenainštalovali kód ručne, ale pomocou nášho skriptu, ktorý všetko automatizuje? Pripravíme k nemu konfiguračný súbor, ktorý sa vám aj nám bude pohodlne čítať a budeme ho môcť kedykoľvek zmeniť. Uvidíme tiež, kto, kedy a prečo v ňom urobí zmeny.“

Inžinier DevOps sa môže naučiť jeden alebo viacero z týchto jazykov: Python, Groovy, Bash, Powershell, Ruby, Go. Nie je potrebné ich poznať na hlbokej úrovni – stačia základy syntaxe, princípy OOP a schopnosť písať jednoduché skripty pre automatizáciu.

2. Operačné systémy

Inžinier DevOps musí pochopiť, na aký server bude produkt nainštalovaný, v akom prostredí bude bežať a s akými službami bude interagovať. Môžete si vybrať špecializáciu na Windows alebo Linux.

3. Systémy kontroly verzií

Bez znalosti systému správy verzií nie je inžinier DevOps nikde. Git je v súčasnosti jedným z najpopulárnejších systémov.

4. Poskytovatelia cloudu

AWS, Google, Azure – najmä ak hovoríme o smerovaní Windows.

Kirill Sergejev: „Poskytovatelia cloudu nám poskytujú virtuálne servery, ktoré dokonale zapadajú do CI/CD.

Inštalácia desiatich fyzických serverov vyžaduje približne sto manuálnych operácií. Každý server je potrebné manuálne spustiť, nainštalovať a nakonfigurovať požadovaný operačný systém, nainštalovať našu aplikáciu na týchto desať serverov a potom všetko desaťkrát skontrolovať. Cloudové služby nahrádzajú tento postup desiatimi riadkami kódu a dobrý inžinier DevOps by s nimi mal vedieť pracovať. To šetrí čas, námahu a peniaze – pre zákazníka aj pre spoločnosť.“

5. Orchestračné systémy: Docker a Kubernetes

Kirill Sergejev: “Virtuálne servery sú rozdelené do kontajnerov, do každého z nich môžeme nainštalovať našu aplikáciu. Keď je kontajnerov veľa, musíte ich spravovať: jeden zapnúť, druhý vypnúť, niekde zálohovať. To sa stáva pomerne zložitým a vyžaduje si to systém orchestrácie.

Predtým bola každá aplikácia obsluhovaná samostatným serverom - akékoľvek zmeny v jej prevádzke mohli ovplyvniť prevádzkyschopnosť aplikácie. Vďaka kontajnerom sa aplikácie izolujú a bežia samostatne – každá na svojom virtuálnom stroji. Ak dôjde k poruche, nie je potrebné strácať čas hľadaním príčiny. Je jednoduchšie zničiť starý kontajner a pridať nový.“

6. Konfiguračné systémy: Chef, Ansible, Puppet

Keď potrebujete udržiavať celú flotilu serverov, musíte robiť veľa rovnakých operácií. Je zdĺhavá a náročná a ručná práca tiež zvyšuje možnosť chyby. Tu prichádzajú na pomoc konfiguračné systémy. S ich pomocou vytvoria skript, ktorý je ľahko čitateľný pre programátorov, inžinierov DevOps a správcov systému. Tento skript pomáha vykonávať rovnaké operácie na serveroch automaticky. To znižuje ručné operácie (a tým aj chyby).

Aký druh kariéry si môže vybudovať inžinier DevOps?

Môžete rozvíjať horizontálne aj vertikálne.

Igor Bojko: „Z pohľadu horizontálneho vývoja majú teraz inžinieri DevOps najširšie vyhliadky. Všetko sa neustále mení a zručnosti si môžete budovať v rôznych oblastiach: od systémov správy verzií po monitorovanie, od správy konfigurácie po databázy.

Systémovým architektom sa môžete stať, ak má zamestnanec záujem pochopiť, ako aplikácia funguje vo všetkých fázach jej životného cyklu – od vývoja až po podporu.“

Ako sa stať inžinierom DevOps?

  1. Prečítajte si príručku The Phoenix Project and DevOps Handbook. Toto sú skutočné piliere filozofie DevOps, pričom prvým z nich je fikcia.
  2. Naučte sa technológie z vyššie uvedeného zoznamu: sami alebo prostredníctvom online kurzov.
  3. Pripojte sa ako inžinier DevOps pre projekt s otvoreným zdrojovým kódom.
  4. Praktizujte a ponúkajte postupy DevOps na svojich osobných a pracovných projektoch.

Zdroj: hab.com

Pridať komentár