Sdílet prostřednictvím


Doporučení pro postupy bezpečného nasazení

Platí pro toto doporučení kontrolního seznamu provozní efektivity architektury Azure Well-Architected Framework:

OE:11 Jasně definujte postupy bezpečného nasazení vaší úlohy. Zvýrazněte ideální postupy pro malé, přírůstkové a vyměněné verze. K řízení rizik používejte moderní vzory nasazení a progresivní techniky expozice. Účet pro rutinní nasazení a tísňové nasazení nebo opravy hotfix

Tato příručka popisuje doporučení pro používání postupů bezpečného nasazení (SDP). Procesy a postupy bezpečného nasazení definují, jak bezpečně provádět a nasazovat změny vašich úloh. Implementace protokolu SDP vyžaduje, abyste se nad nasazeními zamysleli prostřednictvím správy rizik. Můžete minimalizovat riziko lidské chyby ve vašich nasazeních a omezit účinky problematických nasazení na uživatele implementací protokolu SDP.

Klíčové strategie návrhu

Při implementaci postupů bezpečného nasazení je potřeba mít na paměti čtyři důležité pokyny:

  • Bezpečnost a konzistence: Všechny změny produkční úlohy jsou ze své podstaty rizikové a musí být provedeny se zaměřením na bezpečnost a konzistenci.

  • Progresivní expozice: Můžete minimalizovat potenciální poloměr výbuchu problémů způsobených nasazením tím, že přijmete model postupného nasazení expozice.

  • Modely stavu: Nasazení musí před zahájením každé fáze progresivní expozice projít kontrolami stavu.

  • Detekce problémů: Při zjištění problémů by se mělo nasazení okamžitě zastavit a zahájit obnovení.

V následujících částech najdete podrobná doporučení pro každý z těchto bodů.

Zajištění bezpečnosti a konzistence nasazení

Ať už nasazujete aktualizaci do kódu aplikace, infrastruktury jako kódu (IaC), příznaku funkce nebo aktualizace konfigurace, představujete riziko pro úlohy. Neexistují žádná nasazení s nízkým rizikem do produkčního prostředí. Každé nasazení musí dodržovat standardní vzor a mělo by být automatizované, aby bylo možné vynutit konzistenci a minimalizovat riziko lidské chyby. Je důležité, aby byl váš dodavatelský řetězec úloh a kanály nasazení spolehlivé, zabezpečené a jasně definované standardy nasazení. Zacházejte s každým nasazením jako s možným rizikem a zacházejte s každým nasazením na stejnou úroveň správy rizik. Navzdory rizikům byste měli i nadále nasazovat pravidelné změny úloh. Nasazení pravidelných aktualizací představuje další rizika, jako jsou ohrožení zabezpečení, která je potřeba řešit prostřednictvím nasazení. Další informace najdete v tématu Doporučení pro návrh dodavatelského řetězce vývoje úloh.

Časté malé nasazení je vhodnější než zřídkakdy velká nasazení. Malé změny se snadněji vyřeší, když dojde k problémům a často se nasadí, což pomůže vašemu týmu v procesu nasazení lépe důvěřovat. Je také důležité, abyste se z produkčního prostředí dozvěděli kontrolou procesů úloh, když během nasazování narazíte na anomálii. V návrhu infrastruktury nebo zavedení můžete najít slabá místa. Pokud během nasazení dojde k problémům, ujistěte se, že součástí procesu SDP jsou bezobvižné postmortemy, abyste zachytili poznatky o incidentu.

Přechod na model progresivní expozice

Pokud dojde k problémům s nasazením, cílem je co nejdříve je zachytit, aby se minimalizoval dopad na koncové uživatele. Pro dosažení tohoto cíle implementujte model postupného zavedení, označovaný také jako model progresivní expozice. Canary deployments are a common example of progressive exposure. V tomto modelu nasazení obdrží jako první novou funkci malá skupina interních nebo externích uživatelů. Jakmile první skupina spustí novou verzi bez problému, funkce se nasadí do postupně větších skupin, dokud nebude nová verze spuštěna celá populace uživatelů. Příznaky funkcí se obvykle používají k povolení nové verze pro cílové uživatele v kanárských nasazeních.

Dalším běžným modelem nasazení je modrý-zelený přístup. V tomto modelu se nasadí dvě identické sady nebo fondy infrastruktury úloh. Oba fondy dokážou zpracovat plné produkční zatížení. První (modrý) fond spouští aktuální verzi nasazení, ve které přistane všichni uživatelé. Druhý (zelený) fond se aktualizuje o novou funkci a interně testuje. Po interním testování se podmnožina produkčního provozu směruje z modrého fondu do zeleného fondu. Stejně jako kanárské nasazení je zavedení progresivní, protože přesouváte větší objem provozu do zeleného fondu v následných větších vlnách zavedení. Po dokončení zavedení se fond aktualizací stane modrým fondem a zelený fond je připravený pro další nasazení. Oba fondy jsou logicky oddělené od sebe, aby se chránily před poruchami. Variantu modrého modelu můžete nasadit v úloze, která používá vzor návrhu razítka nasazení, nasazením na jedno razítko najednou.

V obou těchto modelech by měl být čas mezi jednotlivými fázemi zavedení dostatečně dlouhý, abyste mohli monitorovat metriky stavu úlohy. Měli byste poskytnout dostatek času, času mezi skupinami zavedení, abyste zajistili, že uživatelé z různých oblastí nebo uživatelů, kteří provádějí různé úlohy, mají čas použít úlohu v jejich normální kapacitě. Časy pečení by se měly měřit v hodinách a dnech, nikoli minutách. Časy pečení by se také měly pro každou skupinu uvedení zvýšit, abyste mohli v průběhu dne počítat s různými časovými pásmy a vzory využití.

Vývoj robustních modelů stavu úloh

Vytvořte robustní model stavu jako součást strategie pozorovatelnosti a spolehlivosti. Váš model stavu by měl poskytovat podrobný přehled o komponentách a celkovém stavu úlohy. Pokud během zavádění obdržíte upozornění na změnu stavu týkající se koncového uživatele, mělo by se zavedení okamžitě zastavit a provést šetření příčiny výstrahy, aby bylo možné určit další průběh akce. Pokud koncoví uživatelé neoznamují žádné problémy a všechny indikátory stavu zůstanou po celou dobu pečení zelené, mělo by zavedení pokračovat. Nezapomeňte do modelu stavu zahrnout metriky využití, které vám pomůžou zajistit, aby se problém neskrýval kvůli chybějícím problémům nahlášeným uživatelem a negativním signálům stavu. Další informace naleznete v tématu Sestavení modelu stavu.

Implementace mechanismů detekce selhání

Pokud vaše nasazení způsobí problém v některé ze skupin uvedení, musí se zavedení okamžitě zastavit. Šetření příčiny problému a závažnost účinků se musí provést ihned po přijetí výstrahy. Obnovení z problému může zahrnovat:

  • Vrácením nasazení zpět zpět vrácením změn provedených v nasazení a vrácením zpět k poslední známé pracovní konfiguraci.

  • Vyřešte problém uprostřed zavádění. Problémy v polovině zavedení můžete vyřešit použitím opravy hotfix nebo jinak minimalizací problému.

  • Nasazení nové infrastruktury pomocí poslední známé pracovní konfigurace

Vrácení změn zpět, zejména změn databáze, schématu nebo jiných stavových změn součástí, může být složité. Pokyny pro SDP by měly poskytovat jasné pokyny, jak řešit změny dat v závislosti na návrhu datových aktiv pro vaši úlohu. Podobně je potřeba zajistit, aby se opravy hotfix nebo jiné minimalizace úsilí prováděly bezpečně, aby se zajistilo, že se protokol SDP nezanedbává.

Vytvoření protokolů pro tísňová nasazení

  • Implementujte správu verzí napříč artefakty sestavení, abyste měli jistotu, že se v případě potřeby můžete vrátit zpět a vrátit dopředu.

  • Použijte tok vydávání verzí nebo strukturu větvení na základě kmenů, která vynucuje úzce synchronizovanou spolupráci napříč vývojovým týmem místo struktury větvení založené na Gitflowu nebo prostředí.

  • Automatizujte co nejvíce Z vašeho SDP. Podrobné pokyny k automatizaci procesů kontinuální integrace a průběžného doručování aplikací (CI/CD) a IaC najdete v tématu Doporučení pro implementaci automatizace.

  • Používejte postupy CI k pravidelné integraci změn kódu do úložišť. Postupy CI vám můžou pomoct identifikovat konflikty integrace a snížit pravděpodobnost velkých a rizikových sloučení. Další informace najdete v průvodci kontinuální integrací.

  • Pomocí příznaků funkcí můžete selektivně povolit nebo zakázat nové funkce nebo změny v produkčním prostředí. Příznaky funkcí vám můžou pomoct řídit vystavení nového kódu a rychle vrátit zpět nasazení, pokud dojde k problémům.

  • Nasaďte změny do přípravných prostředí, která zrcadlí vaše produkční prostředí. Praktická prostředí umožňují otestovat změny v řízeném nastavení před nasazením do živého prostředí.

  • Vytvořte kontroly předběžného nasazení, včetně kontroly kódu, kontrol zabezpečení a kontrol dodržování předpisů, které vám pomůžou zajistit bezpečné nasazení změn.

  • Implementujte jističe, které automaticky zastaví provoz do služby, u které dochází k problémům. To může pomoct předejít dalšímu snížení výkonu systému.

Protokoly SDP tísňového volání

Vytvořte preskriptivní protokoly, které definují, jak lze protokol SDP upravit pro opravu hotfix nebo pro nouzové problémy, jako je porušení zabezpečení nebo ohrožení zabezpečení. Například vaše protokoly SDP pro tísňové volání můžou zahrnovat:

  • Akcelerace fáze povýšení a schválení

  • Orientační testování a zrychlení integračního testování

  • Zkrácení doby pečení.

V některých případech může nouzový stav omezit kvalitu a testovací brány, ale brány by stále měly být spuštěny co nejrychleji jako mimo pásmové cvičení. Ujistěte se, že definujete, kdo může schválit akceleraci protokolu SDP v nouzovém stavu, a kritéria, která musí být splněna pro schválení akcelerace. Srovnejte protokoly SDP tísňového volání s plánem reakce na tísňové volání, abyste zajistili, že se všechny mimořádné situace zpracovávají podle stejných protokolů.

Důležité informace

Vytváření a udržování postupů bezpečného nasazení je složité. Váš úspěch při plném implementaci robustních standardů závisí na vyspělosti vašich postupů v mnoha oblastech vývoje softwaru. Použití automatizace, jen IaC pro změny infrastruktury, konzistence ve strategiích větvení, použití příznaků funkcí a mnoho dalších postupů může pomoct zajistit bezpečné nasazení. Tento průvodce vám pomůže optimalizovat úlohy a informovat vaše plány o vylepšení při vývoji vašich postupů.

Usnadnění azure

  • Azure Pipelines a GitHub Actions podporují vícefázová nasazení pomocí schvalovacích bran, které vám můžou pomoct při návrhu postupného zavedení expozice pro nasazení.

  • Pomocí přípravných slotů služby Aplikace Azure můžete snadno přepínat mezi verzemi kódu. Přípravné sloty jsou užitečné pro testování v přípravných prostředích a je možné je použít pro nasazení s modrou zelenou barvou.

  • Ukládejte a spravujte příznaky funkcí webové aplikace v konfiguraci Aplikace Azure. Pomocí této služby můžete vytvářet, měnit a nasazovat funkce v jednotné rovině správy.

  • Nasaďte aplikace úloh ve virtuálním počítači pomocí aplikací virtuálních počítačů.

  • Pomocí nástrojů pro vyrovnávání zatížení Azure implementujte strategie nasazení a zpřístupněte stav aplikací úloh pomocí nativních prostředků.

  • Pomocí rozšíření Stav aplikace můžete hlásit stav aplikace z instance škálovací sady virtuálních počítačů. Rozšíření testuje místní koncový bod aplikace a aktualizuje stav na základě odpovědí TCP/HTTP(S) přijatých z aplikace.

  • Pomocí Azure Logic Apps můžete vytvořit novou verzi aplikace při každé aktualizaci. Azure udržuje historii verzí aplikací a může se vrátit k jakékoli předchozí verzi nebo ji zvýšit.

  • Mnoho služeb Azure Database poskytuje funkce obnovení k určitému bodu v čase, které vám můžou pomoct vrátit zpět. Mezi služby, které podporují obnovení k určitému bodu v čase, patří:

Příklad

Příklad použití tohoto modelu nasazení najdete v průvodci architekturou clusterů Azure Kubernetes Service (AKS) s modrou zelenou barvou.

Kontrolní seznam pro efektivitu provozu

Projděte si kompletní sadu doporučení.