Proč je potřeba DevOps a kdo jsou specialisté na DevOps?

Když aplikace nefunguje, poslední věc, kterou chcete od svých kolegů slyšet, je věta „problém je na vaší straně“. V důsledku toho uživatelé trpí – a je jim jedno, která část týmu je za poruchu odpovědná. Kultura DevOps vznikla právě proto, aby spojila vývoj a podporu kolem sdílené odpovědnosti za konečný produkt.

Jaké postupy jsou součástí konceptu DevOps a proč jsou potřebné? Co dělají inženýři DevOps a co by měli umět? Na tyto a další otázky odpovídají odborníci z EPAM: Kirill Sergeev, systémový inženýr a evangelista DevOps, a Igor Bojko, přední systémový inženýr a koordinátor jednoho z týmů společnosti DevOps.

Proč je potřeba DevOps a kdo jsou specialisté na DevOps?

Proč je potřeba DevOps?

Dříve existovala bariéra mezi vývojáři a podporou (tzv. operace). Zní to paradoxně, ale měli jiné cíle a KPI, ačkoli dělali totéž. Cílem vývoje bylo co nejrychleji implementovat obchodní požadavky a přidat je do funkčního produktu. Podpora byla zodpovědná za zajištění stabilního fungování aplikace – a jakékoli změny ohrožovaly stabilitu. Dochází ke střetu zájmů – zdálo se, že to řeší DevOps.

Co je DevOps?

Je to dobrá otázka – a kontroverzní: svět se na tom ještě definitivně neshodl. EPAM věří, že DevOps kombinuje technologie, procesy a kulturu interakce v týmu. Cílem tohoto sdružení je neustále přinášet hodnotu koncovým uživatelům.

Kirill Sergejev: „Vývojáři píší kód, testeři jej kontrolují a administrátoři nasazují konečný produkt do produkce. Dlouhou dobu byly tyto části týmu poněkud roztěkané a pak vznikl nápad spojit je společným postupem. Takto se objevily praktiky DevOps.“

Nastal den, kdy se vývojáři a systémoví inženýři začali zajímat o práci toho druhého. Bariéra mezi výrobou a podporou začala mizet. Tak vznikl DevOps, který zahrnuje postupy, kulturu a týmovou interakci.

Proč je potřeba DevOps a kdo jsou specialisté na DevOps?

Co je podstatou kultury DevOps?

Faktem je, že odpovědnost za konečný výsledek nese každý člen týmu. Nejzajímavější a nejobtížnější věcí na filozofii DevOps je pochopit, že konkrétní člověk není zodpovědný pouze za svou vlastní fázi práce, ale je zodpovědný za to, jak bude celý produkt fungovat. Problém neleží na žádné straně – je sdílený a každý člen týmu ho pomáhá řešit.

Nejdůležitější věcí v kultuře DevOps je vyřešit problém, ne jen aplikovat postupy DevOps. Navíc tyto praktiky nejsou implementovány „na něčí straně“, ale v celém produktu. Projekt sám o sobě nepotřebuje inženýra DevOps – potřebuje řešení problému a roli inženýra DevOps lze rozdělit mezi několik členů týmu s různými specializacemi.

Jaké jsou typy postupů DevOps?

Postupy DevOps pokrývají všechny fáze životního cyklu softwaru.

Igor Bojko: „Ideální případ je, když postupy DevOps začneme používat hned na začátku projektu. Společně s architekty naplánujeme, jakou architektonickou krajinu aplikace bude mít, kde bude umístěna a jak se bude škálovat, a vybereme platformu. V současné době je v módě architektura mikroslužeb - pro ni volíme orchestrační systém: musíte umět spravovat každý prvek aplikace samostatně a aktualizovat jej nezávisle na ostatních. Další praxí je „infrastruktura jako kód“. Toto je název pro přístup, ve kterém je infrastruktura projektu vytvořena a spravována pomocí kódu, spíše než prostřednictvím přímé interakce se servery.

Dále se přesuneme do fáze vývoje. Jednou z největších praktik je zde vytváření CI/CD: potřebujete pomoci vývojářům integrovat změny do produktu rychle, po malých částech, častěji a bezbolestně. CI/CD pokrývá kontrolu kódu, nahrání hlavního serveru do základny kódu a nasazení aplikace do testovacích a produkčních prostředí.

Na stupních CI/CD kód prochází branami kvality. S jejich pomocí kontrolují, zda kód, který vychází z pracovní stanice vývojáře, splňuje zadaná kritéria kvality. Zde je přidáno testování jednotek a uživatelského rozhraní. Pro rychlé, bezbolestné a cílené nasazení produktu si můžete vybrat vhodný typ nasazení.

Praktici DevOps mají také své místo ve fázi podpory hotového produktu. Používají se pro monitorování, zpětnou vazbu, zabezpečení a zavádění změn. DevOps se na všechny tyto úkoly dívá z perspektivy neustálého zlepšování. Minimalizujeme opakované operace a automatizujeme je. To také zahrnuje migrace, rozšíření aplikací a podporu výkonu.“

Jaké jsou výhody postupů DevOps?

Pokud bychom psali učebnici moderních postupů DevOps, na první stránce by byly tři body: automatizace, zrychlení vydání a rychlá zpětná vazba od uživatelů.

Kirill Sergejev: „První věcí je automatizace. Můžeme zautomatizovat všechny interakce v týmu: napsat kód - zavést ho - zkontrolovat - nainstalovat - shromáždit zpětnou vazbu - vrátit se na začátek. To vše je automatické.

Druhým je urychlení vydání a dokonce zjednodušení vývoje. Pro zákazníka je vždy důležité, aby produkt vstoupil na trh co nejdříve a začal přinášet výhody dříve než konkurenční analogy. Proces dodávání produktu lze donekonečna zlepšovat: zkrátit čas, přidat další kontrolní značky, zlepšit monitorování.

Třetí je zrychlení zpětné vazby uživatelů. Pokud má připomínky, můžeme okamžitě provést úpravy a aplikaci okamžitě aktualizovat.“

Proč je potřeba DevOps a kdo jsou specialisté na DevOps?

Jak spolu souvisí pojmy „systémový inženýr“, „stavební inženýr“ a „DevOps inženýr“?

Překrývají se, ale patří do trochu jiných oblastí.

Systémový inženýr ve společnosti EPAM je pozice. Přicházejí na různých úrovních: od juniorů až po hlavního specialistu.

Stavební inženýr je spíše role, kterou lze na projektu vykonávat. Nyní se takto nazývají lidé zodpovědní za CI/CD.

Inženýr DevOps je specialista, který implementuje postupy DevOps na projektu.

Když to všechno shrneme, dostaneme asi toto: člověk na pozici systémového inženýra zastává roli build inženýra na projektu a podílí se tam na zavádění DevOps praktik.

Co přesně dělá inženýr DevOps?

Inženýři DevOps dali dohromady všechny části, které tvoří projekt. Znají specifika práce programátorů, testerů, systémových administrátorů a pomáhají jim zjednodušit práci. Chápou potřeby a požadavky podniku, jeho roli v procesu vývoje – a budují proces s ohledem na zájmy zákazníka.

Hodně jsme mluvili o automatizaci – tím se inženýři DevOps zabývají především. Jedná se o velmi rozsáhlý bod, který mimo jiné zahrnuje přípravu prostředí.

Kirill Sergejev: „Před implementací aktualizací do produktu je třeba je otestovat v prostředí třetí strany. Připravují jej inženýři DevOps. Projektu jako celku vštěpují kulturu DevOps: zavádějí postupy DevOps na všech úrovních svých projektů. Tyto tři principy: automatizace, zjednodušení, zrychlení – přinášejí všude, kam dosáhnou.“

Co by měl technik DevOps vědět?

Celkově musí mít znalosti z různých oblastí: programování, práce s operačními systémy, databázemi, montážními a konfiguračními systémy. Ty jsou doplněny o schopnost pracovat s cloudovou infrastrukturou, orchestrací a monitorovacími systémy.

1. Programovací jazyky

Inženýři z DevOps znají několik základních jazyků pro automatizaci a mohou například říci programátorovi: „Co takhle nainstalovat kód ne ručně, ale pomocí našeho skriptu, který vše automatizuje? Připravíme pro něj konfigurační soubor, bude se vám i nám pohodlně číst a budeme ho moci kdykoli změnit. Uvidíme také, kdo, kdy a proč v něm provede změny.“

Inženýr DevOps se může naučit jeden nebo více z těchto jazyků: Python, Groovy, Bash, Powershell, Ruby, Go. Není nutné je znát na hluboké úrovni – stačí základy syntaxe, OOP principy a schopnost psát jednoduché skripty pro automatizaci.

2. Operační systémy

Inženýr DevOps musí rozumět tomu, na jaký server bude produkt nainstalován, v jakém prostředí poběží a s jakými službami bude interagovat. Můžete si vybrat, zda se budete specializovat na rodinu Windows nebo Linux.

3. Systémy kontroly verzí

Bez znalosti systému správy verzí není technik DevOps nikde. Git je v současnosti jedním z nejpopulárnějších systémů.

4. Poskytovatelé cloudu

AWS, Google, Azure – zvláště pokud se bavíme o směru Windows.

Kirill Sergejev: „Poskytovatelé cloudu nám poskytují virtuální servery, které dokonale zapadají do CI/CD.

Instalace deseti fyzických serverů vyžaduje asi stovku manuálních operací. Každý server je nutné ručně spustit, nainstalovat a nakonfigurovat požadovaný operační systém, nainstalovat naši aplikaci na těchto deset serverů a poté vše desetkrát znovu zkontrolovat. Cloudové služby nahrazují tento postup deseti řádky kódu a dobrý inženýr DevOps by s nimi měl umět pracovat. To šetří čas, úsilí a peníze – jak pro zákazníka, tak pro společnost.“

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

Kirill Sergejev: „Virtuální servery jsou rozděleny do kontejnerů, do každého z nich můžeme nainstalovat naši aplikaci. Když je kontejnerů hodně, je potřeba je spravovat: jeden zapnout, druhý vypnout, někde zálohovat. To se stává poměrně složitým a vyžaduje systém orchestrace.

Dříve byla každá aplikace spravována samostatným serverem - jakékoli změny v jeho provozu mohly ovlivnit provozuschopnost aplikace. Díky kontejnerům se aplikace izolují a běží samostatně – každá na svém virtuálním stroji. Pokud dojde k poruše, není třeba ztrácet čas hledáním příčiny. Je snazší zničit starý kontejner a přidat nový."

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

Když potřebujete udržovat celou flotilu serverů, musíte dělat spoustu stejných operací. Je to dlouhé a obtížné a ruční práce také zvyšuje šanci na chybu. Zde přicházejí na pomoc konfigurační systémy. S jejich pomocí vytvoří skript, který je snadno čitelný pro programátory, inženýry DevOps a systémové administrátory. Tento skript pomáhá provádět stejné operace na serverech automaticky. To snižuje ruční operace (a tedy chyby).

Jakou kariéru si může inženýr DevOps vybudovat?

Můžete rozvíjet jak horizontálně, tak vertikálně.

Igor Bojko: „Z pohledu horizontálního vývoje mají nyní inženýři DevOps nejširší vyhlídky. Vše se neustále mění a dovednosti můžete budovat v různých oblastech: od systémů správy verzí po monitorování, od správy konfigurace po databáze.

Systémovým architektem se můžete stát, pokud má zaměstnanec zájem porozumět tomu, jak aplikace funguje ve všech fázích jejího životního cyklu – od vývoje po podporu.“

Jak se stát inženýrem DevOps?

  1. Přečtěte si příručku The Phoenix Project and DevOps Handbook. To jsou skutečné pilíře filozofie DevOps, přičemž první z nich je fikcí.
  2. Naučte se technologie z výše uvedeného seznamu: sami nebo prostřednictvím online kurzů.
  3. Připojte se jako inženýr DevOps pro projekt s otevřeným zdrojovým kódem.
  4. Procvičujte a nabídněte postupy DevOps na svých osobních a pracovních projektech.

Zdroj: www.habr.com

Přidat komentář