5 dovedností, které by měl mít každý inženýr DevOps

Být moderním inženýrem DevOps je z technologického hlediska vážně složitá role.

Vyžaduje, abyste byli obeznámeni s běžnými programovacími jazyky, jako je Node.JS, dávkové skripty, Python nebo dávkové skriptování. Dalším očekáváním je pochopení toho, jak začlenit automatizaci testování do procesů nasazení.

Jako integrátor kódu do automatizovaných pipelines musíte znát alespoň základní funkcionalitu různých cloudových služeb.

Navzdory této technologické složitosti nejsou technické dovednosti vždy v popředí dovedností, které inženýři DevOps postrádají. I když by se dalo předpokládat, že zvládnutí technických dovedností je klíčem, různé poznatky získané od skutečných praktiků DevOps ukazují, že jejich měkké dovednosti jsou často ještě důležitější.

Důležité dovednosti DevOps

Zdroj: devopsuniversity.org

Sledovat interakci inženýra DevOps uvnitř týmu Scrum je často docela zajímavý postřeh. Většinu času mají velmi málo podrobností o konkrétním obsahu příběhů, které zbytek týmu implementuje, jen kvůli technickým informacím o konkrétních funkcích uvnitř příběhů pro tým.

Přesto musí být schopni začlenit výstupy týmu do jednoho funkčního kanálu nasazení spolu s prováděním a ověřováním různých automatických testů.

Tady už nestačí být technickým expertem na nízké úrovni. Komunikace se stává klíčovou součástí úspěchu. Pojďme se tedy podívat na nejdůležitější požadované dovednosti DevOps.

Jemné dovednosti

Je to skutečně spolupráce a diskuse uvnitř agilního týmu, co je hlavním důvodem, proč nedostatek měkkých dovedností ovládl seznam dovedností DevOps. Pokud vás stále zajímá proč, zde jsou některé z nejzdravějších argumentů:

  • Inženýři DevOps nemohou být efektivní bez adaptability na zbytek vývojového týmu. Tento tým buduje základy softwaru nebo funkcí platformy. Je na inženýrovi DevOps, aby pro to všechno vytvořil živé prostředí a aby to fungovalo.
  • Kromě toho, že jsou v synchronizaci s vlastním vývojovým týmem, jsou klíčovým kontaktním bodem pro externí zúčastněné strany, které se snaží získat přístup k softwarové platformě. Musí být schopni porozumět takovým požadavkům a převést veškerou technickou složitost automatizovaného cloudového prostředí do netechnických ekvivalentů tak, aby jim zúčastněné strany skutečně porozuměly. A být konečným middlewarem mezi vývojovým týmem a externími zainteresovanými stranami.
  • I když si obvykle můžete vytvořit výukový systém, abyste získali specifické technické dovednosti, zrání ve správných měkkých dovednostech vyžaduje, abyste šli mnohem hlouběji do své integrity a osobnosti. Naučit se, jak se na sebe dívat z jiné perspektivy v čase a identifikovat oblasti růstu. To není něco, co může udělat každý snadno.

vytváření sítí

Když se podíváte na technologickou krajinu moderních cloudových platforem, není potřeba mnoho, abyste se ztratili. Potřebujete se vypořádat se službami souborového systému, více databázovými službami, backendovými API, serverovými nebo bezserverovými architekturami, front-endovými službami, modely strojového učení, hybridními prostředími, virtuálními privátními sítěmi, nástroji pro vyrovnávání zátěže s vysokou dostupností, různými streamovacími službami v reálném čase a mnoho dalších.

Je nemožné vědět všechno o všem. Je však naprosto nezbytné, aby inženýři DevOps věděli, jak to vše propojit do jedné funkční softwarové platformy. Vybudování silné síťové komunity je nutností.

Nalezení optimální rovnováhy mezi jednoduchostí a efektivitou komunikace distribuovaných systémů je výzvou, kterou si musí být vědomi a připraveni dát týmu řešení.

Obvykle víte, že infrastruktura, kterou budujete, je dostatečně vyspělá, až když se začnete vážněji zabývat bezpečnostními otázkami a výzvami platformy. A hádejte co – je to opět doména inženýra DevOps.

Místo toho, abyste se drželi starých osvědčených kontaktů, musíte neustále hledat nové, abyste pokryli novou službu, kterou si váš tým právě vyžádal.

Softwarové testy

Zejména v agilním světě je flexibilita ve verzích softwaru kritická. Můžete mít nastavení scrumu s dvoutýdenními sprinty. Očekává se tedy, že každý druhý týden vyjde nové produkční vydání.

Pokud se zamyslíte nad celým životním cyklem projektu, který zahrnuje plánování, odhadování, vývoj, testování a uvolňování, nemůžete toho dosáhnout bez seriózní automatizace na co největším počtu těchto kroků.

Hlavním předpokladem úspěchu v tomto nastavení (a v konečném důsledku umožnit rychlejší nasazení do výroby) je velké zaměření na automatizaci testování. Rychlejší nasazení spolu s automatizovanými testy má za následek kratší dobu pro zpětnou vazbu uživatelů směrem k vývojářům.

Pro inženýra DevOps to znamená integraci výstupů různých testovacích týmů do potrubí CI/CD:

  • Povolit spuštění skriptu testu jednotky po každém potvrzení úložiště. Pokud neexistují, domluvte se s vývojáři na jejich vytvoření.
  • Zahrňte testovací případy integrace do kanálů CI/CD s nasazením do plně integrovaného a konzistentního testovacího prostředí. Nemá smysl spouštět integrační testy v každém vývojovém prostředí, které vývojový tým používá. Testovací případy integrace musí bezchybně běžet v prostředí, kde jsou nasazeny všechny služby a kde jsou data konzistentní.
  • Začleňte do potrubí CI/CD komplexní testovací případy z reálného světa. Udělejte z něj povinné spuštění pro každé nasazení hlavního kódu do prostředí integračního testu nebo uživatelského akceptačního testu. To zajišťuje, že všechny důležité a kritické obchodní procesy mohou běžet bez selhání.

Psaní efektivních testovacích případů tak, abyste to nepřeháněli, ale zároveň pokryli všechny kritické procesy, je další výzvou, kterou musíte zvládnout. Inženýři DevOps tu nemusí nutně být sami.

Obchodní analytici nebo manažeři zajištění kvality mohou být součástí sítě (pokud nejsou přímo součástí týmu), aby s tím pomohli a definovali přesné kroky. Ale pak je úlohou inženýra DevOps, aby to převedl do automatizovaného spustitelného kódu.

CI/CD a Infrastruktura jako kód

Už jsme se toho dotkli na několika místech. Přesto nelze popřít, že IaC (a následně jeho provádění prostřednictvím potrubí CI/CD) jsou hlavními výstupy inženýrů DevOps. Zde jsou všechny vstupy od vývojářského týmu (ve formě různých funkcí služeb) propojeny s některými reálnými prostředími infrastruktury. Poté tvoří použitelný software jako výstup služby, který lze opakovaně nasazovat do různých prostředí.

Není divu, že je to jedna z hlavních výzev pro každého inženýra DevOps. Ještě více, pokud je požadavkem zůstat cloud-agnostik, obvykle to znamená napsat IaC v jazyce Terraform a zajistit, aby kód neobsahoval nuance specifické pro poskytovatele cloudu. Zkušenosti to jasně ukazují. Přechod na skripty kódu infrastruktury agnostické pro cloud může být velmi obtížný úkol, a to i pro zkušené inženýry.

Je zcela nemožné udržovat cloudovou infrastrukturu pouze pomocí ručních kroků pro nasazení. Během on-premise časů to byl standard. Ale stejně tak to byl skálopevný standard dodávat prostřednictvím vodopádových způsobů práce. S manuálním nasazením v agilním prostředí není šance na přežití. Přechod musí být proveden, což je téměř vždy bolestivé.

Ale jakmile to uděláte správně, jste tam.

  • Potřebujete produkční nasazení? Stačí spustit kanál vydání obsahující nasazení kódu do produkce.
  • Požadujete další vývojové prostředí, aby se nepřekrývalo s další vývojovou prací uvnitř týmu? Poté najděte vývojový kanál a stiskněte tlačítko Spustit. Veškerá vývojová infrastruktura bude spuštěna a vytvořena automaticky, včetně testovacích dat.
  • Jakmile pomine potřeba existence prostředí, stejný vývojový kanál může provádět příkazy k ničení pro všechny služby dříve nasazené do prostředí.

Pro úspěšný agilní tým je nevyhnutelné implementovat infrastrukturu jako kód a umístit ji do kanálů CI/CD, které mohou tuto práci provést kdykoli a kdykoli. Inženýři společnosti DevOps jsou zde, aby to dodali.

Kontejnerizace

Zdroj: aws.amazon.com

U rozsáhlých projektů je klíčová možnost rychlé replikace. Vytváření stovek kopií stejných prostředí současně by skutečně nebylo možné bez kontejnerizovaných prostředí. Kontejnerizace je dovednost, která vyžaduje strmou křivku učení. To je také důvod, proč ji jen několik projektů skutečně používá vážně.

Kontejnerový server je šablona, ​​kterou lze použít tak často, jak je potřeba, a výstup bude vždy stejný. Identická infrastruktura a identická data. Je to vlastnost, kterou pro tým mohou postavit pouze inženýři DevOps. Musí se naučit, jak to vytvořit pomocí různých nástrojů.

Kontejnery jsou navrženy tak, aby se daly snadno vytvořit a zničit. Inženýři DevOps implementují nástroje pro orchestraci kontejnerů, jako je Kubernetes nebo Docker Swarm, které mohou automaticky spravovat nasazení, škálování a obnovu kontejnerů.

Kontejnery sdílejí stejný hostitelský operační systém. Pokud je ohrožen jeden kontejner, může to potenciálně kompromitovat další kontejnery na stejném hostiteli. Pokud jsou kontejnery vytvořeny z obrázků třetích stran, mohou obsahovat chyby zabezpečení uvnitř kódu. Inženýři DevOps se budou snažit implementovat bezpečnostní funkce, jako je izolace kontejnerů, řízení přístupu a skenování zranitelnosti, aby tato rizika zmírnili.

Škálovatelnost je další nativní vlastností kontejnerů. Můžete je snadno horizontálně škálovat, abyste zvládli zvýšené pracovní zatížení. To může vést ke sporům o zdroje a problémům s výkonem. Inženýři DevOps implementují nástroje pro správu zdrojů, jako jsou cgroups nebo kvóty zdrojů Kubernetes, které mohou omezit počet zdrojů, které může každý kontejner spotřebovat.

Inženýři DevOps musí přistupovat ke kontejnerizaci s ohledem na bezpečnost, škálovatelnost a odolnost. Kromě všech ostatních technických dovedností vyžaduje zvládnutí kontejnerizace obzvláště strmou křivku učení. Složitost je prostě příliš vysoká. To je také důvod, proč ji jen několik projektů skutečně používá vážně.

Závěr

DevOps praktik je jedinečným členem vašeho agilního týmu. Můžete mít jen jeden nebo dva z nich pro celý projekt, ale i tak budou rozhodující pro úspěch.

Očekávání od inženýrů DevOps jsou vysoká, protože musí být v mnoha rolích současně:

  • Musí to být silní techničtí vývojáři,
  • týmoví hráči plní empatie, porozumění a připraveni na spolupráci,
  • efektivní middleware mezi vývojovým týmem a netechnickými externími zainteresovanými stranami,
  • propojení celého týmu na automatizaci a ověřování testů kódu,
  • umožnění pravidelného vydávání projektu,
  • a důsledné budování sítě odborníků, která se mění ze dne na den.

Přes veškerou technickou složitost hraje klíčovou roli v úspěchu jakékoli iniciativy DevOps právě lidský prvek. Pokud jste na pokraji stát se jedním z nich, máte plné právo být na své rozhodnutí hrdí a pojmout vzdělávací přístup z mnohem širší perspektivy, neomezovat se pouze na technické znalosti.

Dále se podívejte na často kladené otázky a odpovědi na rozhovory s DevOps.