Kontrolní seznam k DevOps

DevOps je integrace vývoje, zajištění kvality a IT operací do sjednocené kultury a sady procesů pro doručování softwaru. Tento kontrolní seznam použijte jako výchozí bod k vyhodnocení jazykové verze a procesu DevOps.

Kultura

Zajistěte obchodní sladění mezi organizacemi a týmy. Konflikty oproti prostředkům, účelu, cílům a prioritám v rámci organizace můžou být rizikem úspěšných operací. Zajistěte, aby obchodní, vývojové a provozní týmy byly sladěné.

Ujistěte se, že váš tým rozumí životnímu cyklu softwaru. Váš tým potřebuje porozumět celkovému životnímu cyklu vašich aplikací a tomu, kde je každá aplikace v daném životním cyklu. Tyto informace pomáhají všem členům týmu vědět, co by teď měli dělat a na co by se měli připravit v budoucnu.

Zkracujte dobu cyklu. Snažte se minimalizovat dobu potřebnou k přechodu od nápadů k použitelnému vyvinutému softwaru. Omezte velikost a rozsah jednotlivých verzí, abyste udrželi nízkou zátěž testu. Kdykoli je to možné, automatizujte procesy sestavení, testování, konfigurace a nasazení. Vymažte všechny překážky komunikace mezi vývojáři a mezi vývojáři a provozními týmy.

Zkontrolujte a vylepšete procesy. Vaše procesy a postupy, automatizované i ruční, nejsou nikdy konečné. Nastavte pravidelné kontroly aktuálních pracovních postupů, postupů a dokumentace s cílem průběžného vylepšování.

Proaktivní plánování. Proaktivně naplánujte selhání. Mají zavedené procesy pro rychlou identifikaci problémů, když dojde k jejich výskytu, eskalují problémy správným členům týmu, aby opravili a potvrdili jejich řešení.

Seznamte se se se selháními. Selhání jsou nevyhnutelné, ale je důležité se učit od selhání, aby se zabránilo jejich opakování. Pokud dojde k provoznímu selhání, zdokumentujte příčinu a řešení a podělte se o všechny poznatky, které se naučíte. Kdykoli je to možné, aktualizujte procesy sestavení tak, aby v budoucnu automaticky detekují takové chyby.

Optimalizujte rychlost a shromažďujte data. Každé plánované zlepšení je hypotéza. Pracujte v nejmenších přírůstcích, které jsou možné. Zacházejte s novými nápady jako s experimenty. Instrumentujte experimenty, abyste mohli shromažďovat produkční data, abyste mohli vyhodnotit efektivitu experimentu. Buďte připraveni rychle selhat, pokud je hypotéza špatná.

Počkejte čas na učení. Selhání a úspěchy poskytují příležitosti pro výuku. Než přejdete na nové projekty, nechte čas shromáždit důležité lekce a ujistěte se, že váš tým tyto lekce absorbuje. Dejte také týmu čas na vytváření dovedností, experimentování a získávání informací o nových nástrojích a technikách.

Operace s dokumentem Zdokumentujte všechny nástroje, procesy a automatizované úlohy se stejnou úrovní kvality jako kód produktu. Zdokumentujte aktuální návrh a architekturu všech systémů, které podporujete, spolu s procesy obnovení a dalšími postupy údržby. Zaměřte se na kroky, které skutečně děláte, a ne teoreticky optimální procesy. Pravidelně kontrolujte a aktualizujte dokumentaci. Pro kód nezapomeňte zahrnout smysluplné komentáře, zejména ve veřejných rozhraních API. Kdykoli je to možné, použijte nástroje k automatickému vygenerování dokumentace kódu.

Sdílejte znalosti. Dokumentace je užitečná jenom v případě, že lidé vědí, že existuje a může ji najít. Uspořádejte si dokumentaci a uspořádejte ji tak, aby byla snadno zjistitelná. Buďte kreativní: používejte hnědé tašky (neformální prezentace), videa nebo bulletiny ke sdílení znalostí.

Vývoj

Poskytněte vývojářům produkční prostředí. Pokud vývojová a testovací prostředí neodpovídají vašemu produkčnímu prostředí, je obtížné je testovat a diagnostikovat problémy. Udržujte vývojová a testovací prostředí co nejblíže produkčnímu prostředí. Ujistěte se, že testovací data jsou konzistentní s daty, která používáte v produkčním prostředí, i když se jedná o ukázková data, a ne skutečná produkční data (z důvodů ochrany osobních údajů nebo dodržování předpisů). Naplánujte generování a anonymizaci ukázkových testovacích dat.

Zajistěte, aby všichni autorizovaní členové týmu mohli zřizovat infrastrukturu a nasazovat aplikace. Nastavení produkčních prostředků a nasazení aplikace by nemělo zahrnovat složité ruční úlohy ani podrobné technické znalosti systému. Každý, kdo má správná oprávnění, by měl mít možnost vytvářet nebo nasazovat prostředky podobné produkčnímu prostředí, aniž by museli jít do provozního týmu.

Toto doporučení neznamená, že do produkčního nasazení může kdokoli odesílat živé aktualizace. Jedná se o omezení tření pro vývojové týmy a týmy pro kontrolu kvality pro vytváření produkčních prostředí.

Instrumentace jednotlivých aplikací pro přehled Abyste pochopili stav aplikací, potřebujete vědět, jak fungují a jestli na nich dochází k chybám nebo problémům. Vždy zahrňte instrumentaci jako požadavek na návrh a od začátku do každé aplikace zabudujte instrumentaci. Instrumentace musí zahrnovat protokolování událostí pro analýzu původní příčiny, ale také telemetrii a metriky pro monitorování stavu a využití jednotlivých aplikací.

Sledujte svůj technický dluh. Mnoho projektů upřednostňuje plány vydávání verzí oproti kvalitě kódu do jednoho stupně nebo jiného. Vždy dokumentujte, když se používají klávesové zkratky nebo jiné neoptimální implementace, a naplánujte čas, jak se k těmto problémům vrátit.

Zvažte přímé nabízení aktualizací do produkčního prostředí. Pokud chcete zkrátit celkovou dobu vydávání verzí, zvažte přímé nasdílením správně otestovaných potvrzení kódu do produkčního prostředí. Pomocí přepínačů funkcí můžete určit, které funkce povolíte. Potom můžete rychle přejít z vývoje na vydání pomocí přepínačů a povolit nebo zakázat funkce. Přepínače jsou také užitečné při provádění testů, jako jsou kanárské verze, kde nasazujete určitou funkci do podmnožina produkčního prostředí.

Testování

Automatizace testování Ruční testování softwaru je zdlouhavé a náchylné k chybám. Automatizujte běžné úlohy testování a integrujte testy do procesů sestavení. Automatizované testování zajišťuje konzistentní pokrytí a reprodukovatelnost testů. Při spouštění integrovaných testů uživatelského rozhraní použijte také automatizovaný nástroj. Azure nabízí vývojové a testovací prostředky, které vám můžou pomoct s konfigurací a spuštěním testování. Další informace najdete v tématu Vývoj a testování v Azure.

Otestujte selhání. Pokud se systém nemůže připojit ke službě, měl by systém řádně reagovat. A až bude služba opět dostupná, měl by se systém obnovit. Testování injektáže selhání je standardní součástí kontroly testovacích a přípravných prostředí. Pokud jsou vaše testovací procesy a postupy vyspělé, zvažte spuštění těchto testů v produkčním prostředí.

Testování v produkčním prostředí. Proces vydání nekončí nasazením do produkčního prostředí. Máte nasazené testy, abyste zajistili, že nasazený kód funguje podle očekávání. U nasazení, která aktualizujete zřídka, naplánujte produkční testování jako běžnou součást údržby.

Automatizujte testování výkonu, abyste mohli včas identifikovat problémy s výkonem. Dopad závažného problému s výkonem může být stejně závažný jako chyba v kódu. I když automatizované funkční testy můžou zabránit chybám aplikace, nemusí tyto testy detekovat problémy s výkonem. Definujte přijatelné cíle výkonu pro metriky, jako jsou latence, časy načítání a využití prostředků. Do kanálu verze zahrňte automatizované testy výkonu, abyste měli jistotu, že vaše aplikace tyto cíle splňuje.

Proveďte testování kapacity. Aplikace může fungovat v testovacích podmínkách a pak může mít problémy v produkčním prostředí z důvodu omezení škálování nebo prostředků. Vždy definujte maximální očekávané limity kapacity a využití. Otestujte, abyste měli jistotu, že aplikace zvládne tyto limity, ale také otestujte, co se stane, když překročíte tato omezení. Testování kapacity v pravidelných intervalech.

Po počáteční verzi byste měli spustit testy výkonu a kapacity při každé aktualizaci produkčního kódu. Pomocí historických dat můžete vyladit testy a určit, jaké typy testů potřebujete udělat.

Proveďte automatizované penetrační testování zabezpečení. Zajištění zabezpečení aplikace je stejně důležité jako testování všech dalších funkcí. Automatizované penetrační testování je standardní součástí procesu sestavení a nasazení. Naplánujte pravidelné testy zabezpečení a kontrolu ohrožení zabezpečení nasazených aplikací, monitorování otevřených portů, koncových bodů a útoků. Automatizované testování neodebere potřebu hloubkových kontrol zabezpečení v pravidelných intervalech.

Proveďte automatizované testování kontinuity podnikových procesů. Vyvíjejte testy pro zajištění rozsáhlé kontinuity podnikových procesů, včetně obnovení zálohování a převzetí služeb při selhání. Nastavte automatizované procesy pro pravidelné provádění těchto testů.

Verze

Automatizujte nasazení. Automatizace nabízí řadu výhod, mezi které patří:

  • Rychlejší a spolehlivější nasazení
  • Zajištění konzistentních nasazení do libovolného podporovaného prostředí, včetně testování, přípravy a produkčního prostředí
  • Odstranění rizika lidské chyby, kterou může ruční nasazení zavést.
  • Usnadňuje plánování vydávání pro pohodlné časy, což minimalizuje případné dopady potenciálních výpadků.

Automatizujte proces nasazení každé aplikace do testovacího, přípravného a produkčního prostředí. Mějte systémy zavedené k detekci jakýchkoli problémů během zavádění a mají automatizovaný způsob, jak zavést opravy nebo vrátit zpět změny.

Používejte kontinuální integraci. Kontinuální integrace (CI) je postup sloučení veškerého vývojářského kódu do centrálního kódu na základě běžného plánu a automatického provádění standardních procesů sestavení a testování. CI zajišťuje, aby celý tým mohl pracovat na základu kódu současně bez konfliktů. CI vám také pomůže co nejdříve najít vady kódu. Pokud možno, proces CI by se měl spustit při každém potvrzení nebo vrácení kódu se změnami. Měl by běžet alespoň jednou denně.

Zvažte přijetí vývojového modelu založeného na kmenech. V tomto modelu vývojáři potvrdí jednu větev (kmen). Existuje požadavek, aby potvrzení nikdy neporušili sestavení. Tento model usnadňuje CI, protože všechny funkce fungují v kufru a vyřešíte případné konflikty při slučování, když dojde k každému potvrzení.

Zvažte použití průběžného doručování. Průběžné doručování (CD) je postup zajištění toho, aby byl kód vždy připravený k nasazení, a to automatickým sestavováním, testováním a nasazováním kódu do produkčních prostředí. Přidáním CD vytvoříte úplný kanál CI/CD, který vám pomůže co nejdříve detekovat chyby kódu. Zároveň zajistí, že můžete v krátké době vydávat správně otestované aktualizace.

Průběžné nasazování je proces, který automaticky přebírá všechny aktualizace, které prošly kanálem CI/CD, a nasadí je do produkčního prostředí. Průběžné nasazování vyžaduje robustní automatické testování a pokročilé plánování procesů. Nemusí to být vhodné pro všechny týmy.

Proveďte malé přírůstkové změny. Velké změny kódu mají větší potenciál zavést chyby než menší. Kdykoli je to možné, udržujte změny malé. Tím omezíte potenciální účinky každé změny a zjednodušujete úlohu pochopení a ladění problémů.

Řízení expozice změnám Ujistěte se, že máte kontrolu nad tím, kdy se aktualizace zobrazí koncovým uživatelům. Zvažte použití přepínačů funkcí k řízení, kdy zapnete funkce pro koncové uživatele.

Implementujte strategie správy verzí, abyste snížili riziko nasazení. Nasazení aktualizace aplikace do produkčního prostředí vždy znamená určité riziko. Pokud chcete toto riziko minimalizovat, použijte strategie, jako jsou kanárské verze nebo modrá/zelená nasazení , a nasaďte aktualizace do podmnožiny uživatelů. Ověřte, že každá aktualizace funguje podle očekávání, a pak každou aktualizaci zaváděte do zbytku systému.

Zdokumentovat všechny změny Dílčí aktualizace a změny konfigurace můžou být zdrojem nejasnosti a konfliktu verzí. Vždy mějte přehled o všech změnách bez ohledu na to, jak malé. Protokoluje všechny změny, včetně oprav, které jste použili, změn zásad a změn konfigurace. Záznam změn by měl být viditelný pro celý tým. Do těchto protokolů ale nezahrnujte citlivá data. Můžete například zaznamenat, že došlo k aktualizaci přihlašovacích údajů a kdo provedl změnu, ale nezaznamenávejte aktualizované přihlašovací údaje.

Zvažte neměnnou infrastrukturu. Neměnná infrastruktura je založená na principu, že byste neměli upravovat infrastrukturu po nasazení do produkčního prostředí. V opačném případě se můžete dostat do stavu, kdy se použily ad hoc změny, což znesnadňuje přesně to, co se změnilo. Neměnná infrastruktura funguje nahrazením celých serverů v rámci jakéhokoli nového nasazení. Pomocí tohoto přístupu můžete otestovat a nasadit kód a hostitelské prostředí jako blok. Po nasazení neupravujete součásti infrastruktury až do dalšího cyklu sestavení a nasazení.

Sledování

Nastavit systémy jako pozorovatelné Provozní tým by měl mít vždy jasný přehled o stavu a stavu systému nebo služby. Nastavte externí koncové body stavu, abyste mohli monitorovat stav a kódovat aplikace pro instrumentaci metrik operací. Použijte běžné a konzistentní schéma, které pomáhá korelovat události napříč systémy. Standardní metodou sledování stavu a stavu prostředků Azure je použití azure Diagnostics a aplikačních Přehledy. Azure Monitor také poskytuje centralizované monitorování a správu pro cloudová nebo hybridní řešení.

Agregace a korelace protokolů a metrik Správně instrumentovaný telemetrický systém poskytuje velké množství nezpracovaných dat o výkonu a protokolů událostí. Ujistěte se, že systém zpracovává a koreluje telemetrická data a data protokolů rychle, aby provozní pracovníci měli vždy aktuální přehled o stavu systému. Uspořádejte a zobrazte data tak, abyste měli soudržný pohled na problémy a viděli, kdy spolu události souvisejí.

Požadavky na zpracování dat a dobu ukládání dat najdete v zásadách uchovávání informací společnosti.

Implementujte automatizovaná upozornění a oznámení. Nastavte monitorovací nástroje, jako je Monitor , a detekujte vzory nebo podmínky, které označují potenciální nebo aktuální problémy. Pošlete upozornění členům týmu, kteří můžou řešit problémy. Vylaďte upozornění, abyste se vyhnuli falešně pozitivním výsledkům.

Monitorování prostředků a prostředků pro vypršení platnosti Platnost některých prostředků a prostředků, jako jsou certifikáty, vyprší. Nezapomeňte sledovat, které prostředky vyprší, kdy vyprší jejich platnost a jaké služby nebo funkce na nich závisí. K monitorování těchto prostředků použijte automatizované procesy. Informujte provozní tým před vypršením platnosti prostředku a eskalujte situaci, pokud vypršení platnosti vyhrožuje narušení aplikací.

Správa

Automatizujte úlohy operací. Ruční zpracování opakujících se operací je náchylné k chybám. Tyto úlohy můžete automatizovat, kdykoli je to možné, abyste zajistili konzistentní spouštění a kvalitu. Použijte správu zdrojového kódu k kódu verze, který implementuje automatizaci. Stejně jako u jakéhokoli jiného kódu otestujte své automatizační nástroje.

Využijte přístup infrastruktury jako kódu ke zřizování. Minimalizujte množství ruční konfigurace, kterou potřebujete ke zřízení prostředků. Místo toho použijte skripty a šablony Azure Resource Manageru . Udržujte skripty a šablony ve správě zdrojového kódu stejně jako jakýkoli jiný kód, který udržujete.

Zvažte použití kontejnerů. Kontejnery poskytují standardní rozhraní založené na balíčcích pro nasazování aplikací. Když používáte kontejnery, nasadíte aplikaci pomocí samostatných balíčků, které zahrnují veškerý software, závislosti a soubory, které potřebujete ke spuštění aplikace. Tento postup výrazně zjednodušuje proces nasazení.

Kontejnery také vytvářejí abstraktní vrstvu mezi aplikací a základním operačním systémem, která zajišťuje konzistenci napříč prostředími. Tato abstrakce může také izolovat kontejner od jiných procesů nebo aplikací, které běží na hostiteli.

Implementujte odolnost a samoopravení. Odolnost je schopnost aplikace zotavit se ze selhání. Mezi strategie odolnosti patří opakování přechodných selhání a převzetí služeb při selhání sekundární instance nebo dokonce do jiné oblasti. Další informace najdete v tématu Návrh spolehlivých aplikací Azure. Instrumentace aplikací k okamžitému hlášení problémů, abyste mohli spravovat výpadky nebo jiná selhání systému.

Ručně prováděných operací. Provozní příručka nebo runbook dokumentuje postupy a informace o správě, které potřebujete pro provozní pracovníky k údržbě systému. Zdokumentujte také všechny provozní scénáře a plány zmírnění rizik, které se můžou hrát během selhání nebo jiného přerušení vaší služby. Vytvořte tuto dokumentaci během procesu vývoje a potom ji udržujte v aktualizovaném stavu. S těmito zdroji zacházíte jako s živými dokumenty, které potřebujete pravidelně kontrolovat, testovat a zlepšovat.

Sdílená dokumentace je důležitá. Povzbuďte členy týmu, aby přispěli a sdíleli znalosti. Celý tým by měl mít přístup k dokumentům. Usnadníte všem členům týmu udržování dokumentů v aktualizovaném stavu.

Zdokumentovat postupy při volání. Nezapomeňte zdokumentovat povinnosti, plány a postupy na volání a sdílet je se všemi členy týmu. Vždy mějte tyto informace aktuální.

Zdokumentujte postupy eskalace závislostí třetích stran. Pokud vaše aplikace závisí na externích službách třetích stran, které přímo neřídíte, potřebujete plán řešení výpadků. Vytvořte dokumentaci pro plánované procesy zmírnění rizik. Zahrňte kontakty podpory a cesty eskalace.

Použijte správu konfigurace. Naplánujte změny konfigurace, zviditelněte je pro operace a poznamenejte si je. Pro tyto účely můžete použít databázi správy konfigurace nebo přístup s konfigurací jako kód. Pravidelně auditujte konfiguraci, abyste měli jistotu, že jsou skutečně zavedená očekávaná nastavení.

Získejte podpora Azure plán a seznamte se s procesem podpory. Azure nabízí mnoho plánů podpory. Určete správný plán pro vaše potřeby a ujistěte se, že celý tým ví, jak plán používat. Členové týmu by měli porozumět podrobnostem plánu, způsobu fungování procesu podpory a otevření lístku podpory v Azure. Pokud očekáváte událost ve velkém měřítku, podpora Azure vám může pomoct se zvýšením limitů služeb. Další informace najdete v nejčastějších dotazech k plánům podpora Azure.

Při udělování přístupu k prostředkům dodržujte principy nejnižších oprávnění. Pečlivě spravujte přístup k prostředkům. Pokud uživateli explicitně nezadáte přístup k prostředku, odepřete ho ve výchozím nastavení. Udělte uživatelům přístup jenom k tomu, co potřebují k dokončení svých úkolů. Sledujte uživatelská oprávnění a proveďte pravidelné audity zabezpečení.

Použijte řízení přístupu na základě role v Azure. Přiřazení uživatelských účtů a přístupu k prostředkům by nemělo být ruční proces. Pomocí řízení přístupu na základě role v Azure (Azure RBAC) udělte přístup založený na identitách a skupinách Microsoft Entra ID .

Ke sledování problémů použijte systém sledování chyb. Bez dobrého způsobu sledování problémů je snadné vynechat položky, duplikovat práci nebo zavést nové problémy. Nespoléhejte na neformální komunikaci mezi dvěma osobami a sledujte stav chyb. Pomocí nástroje pro sledování chyb můžete zaznamenávat podrobnosti o problémech, přiřazovat prostředky k jejich řešení a poskytovat záznam o průběhu a stavu auditu.

Správa všech prostředků v systému správy změn Pokud do systému správy a správy verzí zahrnete všechny aspekty procesu DevOps, můžete snadno sledovat a auditovat změny. Zahrnuje kód, infrastrukturu, konfiguraci, dokumentaci a skripty. Zacházet se všemi těmito typy prostředků jako s kódem v průběhu procesu testování, sestavování a kontroly.

Použijte kontrolní seznamy. Kontrolní seznamy operací vám můžou pomoct sledovat procesy. V rozsáhlé příručce je snadné něco vynechat, ale sledování kontrolního seznamu může vynutit pozornost na podrobnosti, které byste jinak mohli přehlédnout. Udržujte kontrolní seznamy a průběžně hledejte způsoby automatizace úloh a zjednodušení procesů.

Další kroky