Vysvětlení modro-zeleného nasazení a jeho role v DevOps

Tradiční přístupy „velkého třesku“ k vývoji softwaru jsou neslučitelné s vysokou flexibilitou, agilitou a požadavky na nepřetržité nasazení dnešních cloudových a softwarových platforem DevOps.

Nestačí připravit kontrolní seznam ručních kroků, které je třeba provést během nasazení produkční verze. Pokud tak učiníte, nejste opravdu agilní a ani správný DevOps.

Modro-zelené nasazení: Přehled

Blue-Green deployment je přístup k nasazení softwaru, který snižuje prostoje a riziko nových verzí softwaru tím, že vytváří dvě identická prostředí: aktivní (modrá) a neaktivní (zelená).

Aktivní prostředí je místo, kde běží aktuální verze softwaru a uživatelé generují provozní provoz. V neaktivním prostředí se nasazuje a testuje nová verze softwaru.

Jakmile je nová verze otestována a připravena, provoz se přepne z aktivního prostředí do neaktivního prostředí, čímž se stane novým aktivním prostředím. Tento proces můžete podle potřeby opakovat.

Zdroj: docs.aws.amazon.com

Kontext DevOps

Blue-Green nasazení dobře zapadá do myšlení a procesů DevOps, protože podporuje nepřetržité dodávání a nasazování softwaru a zároveň minimalizuje prostoje pro produkční uživatele a eliminuje riziko selhání produkčního vydání.

Dvě identická prostředí umožňují testovat a nasazovat nové verze softwaru, aniž by to ovlivnilo aktuální produkční prostředí. To znamená rychlejší a častější vydávání, což je klíčový aspekt DevOps.

Schopnost rychle přepínat provoz mezi prostředími je navíc primárním předpokladem pro rychlé vrácení v případě problémů, což je také důležité v prostředí DevOps.

Klíčové principy modro-zeleného nasazení

#1. Dvě identická prostředí

Modro-zelené nasazení vyžaduje vytvoření dvou identických prostředí. To znamená identické z hlediska dat a procesů. Jeden je aktivní (modrý) a druhý neaktivní (zelený).

Modré prostředí je místo, kde produkční uživatelé provozují své každodenní procesy. Zelené prostředí je vždy synchronizováno s modrým, ale testeři tam spouštějí své testovací případy. I když toto prostředí není produkční, testy spouštíte v reálných podmínkách, protože jde o produkční prostředí.

#2. Přepínač provozu

Jakmile je nová verze softwaru otestována a připravena, provoz se přepne z aktivního prostředí do neaktivního prostředí, čímž se z něj stane nové aktivní prostředí.

Přepínač je okamžitý. Veškeré nasazení je nyní minulostí. Neexistuje žádné prostojové okno. Uživatelé nemusí dělat nic, aby se dostali do nového prostředí. Jsou přesměrovány automaticky a všechny současně.

Zdroj: aws.amazon.com

#3. Rychlé vrácení zpět

Schopnost rychle přepínat provoz mezi prostředími také znamená rychlé vrácení v případě problémů. To zajišťuje minimální prostoje a aplikace zůstává vysoce dostupná.

Pokud se se zeleným prostředím něco pokazí, všichni uživatelé se okamžitě přepnou zpět do stabilního původního modrého prostředí bez jakýchkoliv nejasností.

#4. Automatizované testování

Automatizované testování je klíčovým aspektem nasazení Blue-Green. Zajišťuje, že nová verze softwaru je před nasazením do aktivního prostředí důkladně otestována.

  Oprava Sling TV Down na Androidu

Pokud nemáte ve svých systémech značnou část testů automatizovaných (včetně unit testů, funkčních testů a alespoň regresních testů), pak pravděpodobně ani nemá smysl uvažovat o implementaci Blue-Green nasazení.

Absence automatických testů vás dramaticky zpomalí. Doba potřebná k otestování nového (zeleného) prostředí bude tak dlouhá, že v době, kdy budete moci přejít na zelené prostředí, bude již z pohledu životního cyklu vývoje softwaru „příliš staré“.

#5. Nepřetržité doručování

Blue-Green nasazení je součástí kontinuálního dodávacího potrubí, což v konečném důsledku znamená rychlejší a častější vydávání softwaru do výroby.

Přechod můžete provést, jakmile budete připraveni otestovat novou verzi softwaru v zeleném prostředí. Vzhledem k tomu, že nasazení již bylo hotové a stačí provést pouze samotné přepnutí provozu, je to tak rychlé, že to můžete dělat každý den. Samozřejmě za předpokladu, že jste rychlí i v testovacích aktivitách.

Typický životní cyklus

Platforma, která provozuje nasazení Blue-Green, má svůj vlastní specifický životní cyklus kroků a procesů, které je třeba spustit. Z toho se obvykle skládá:

  • Vytvořte novou verzi softwaru. To zahrnuje kompilaci kódu, spuštění automatických testů a vytvoření nasaditelného artefaktu.
  • V další fázi nasadíte novou verzi softwaru do neaktivního (zeleného) prostředí. To zahrnuje nastavení prostředí, nasazení artefaktu a konfiguraci všech nezbytných nastavení.
  • Jakmile je nová verze softwaru nasazena do zeleného prostředí, spusťte automatické testy, abyste zajistili správné fungování nové verze. To zahrnuje funkční testy, regresní testy, integrační testy, a pokud jste vynikající, dokonce i testy výkonu.
  • Přepněte provoz z aktivního (modrého) prostředí do neaktivního (zeleného) prostředí. To zahrnuje aktualizaci nástroje pro vyrovnávání zatížení nebo nastavení DNS, aby byl provoz nasměrován do zeleného prostředí. Samozřejmě to chcete udělat pomocí automatizovaných procesů.
  • Po dokončení přepnutí sledujte aplikaci, abyste se ujistili, že funguje správně. To zahrnuje sledování chyb, problémů s výkonem a dalších problémů.
  • Tento krok je volitelný a ve skutečnosti ho nechcete provádět příliš často. Pokud však někdo zjistí nějaké podstatné problémy, přepněte provoz zpět do modrého prostředí a proveďte okamžité vrácení zpět. Opět bez jakýchkoli prostojů nebo odpojení souvisejících s produkčními uživateli. Stačí aktualizovat nastavení nástroje pro vyrovnávání zatížení nebo DNS, aby byl provoz nasměrován do modrého prostředí.
  • Jakmile tyto problémy vyřešíte a budete připraveni znovu se vrátit k nové verzi, přepněte provoz zpět do zeleného prostředí. Takže znovu – aktualizujte load balancer nebo nastavení DNS, abyste nasměrovali provoz zpět do zeleného prostředí.
  • Nakonec, jakmile bude nová verze softwaru stabilní a správně funguje, vyřaďte z provozu starou verzi softwaru běžící v modrém prostředí. Budete jej potřebovat k vytvoření další nové verze vašeho systému.
  • Implementace CI/CD potrubí

    Implementace Blue-Green nasazení do kanálu DevOps CI/CD bude přirozeným procesem.

    Silným předpokladem je, že tato dvě identická prostředí již máte na svém místě. Protože se jedná o automatizovaný proces, můžete použít infrastrukturu jako nástroj kódu AWS CloudFormation nebo dokonce cloud-agnostik Terraform skripty, které za vás vytvoří/znovu vytvoří/aktualizují prostředí v rámci automatizovaných kanálů.

    Jakmile toto budete mít, je to relativně snadný krok k vytvoření plně automatizovaného procesu nasazení. Pouze znovu použijete již existující potrubí pro vytvoření modrého a zeleného prostředí. Tentokrát je však potřeba zahrnout do potrubí i testovací procesy.

      4 způsoby, jak rychle vytvořit poznámku na iPhonu nebo iPadu

    Proces přepínání provozu můžete automatizovat pomocí nástrojů jako AWS Elastic Load Balancer nebo NGINX. To zahrnuje aktualizaci nástroje pro vyrovnávání zatížení nebo nastavení DNS, aby byl provoz nasměrován do zeleného prostředí, jakmile bude nová verze softwaru otestována a připravena.

    Dalším kouskem skládačky je monitorování. K tomu použijte nástroje jako AWS CloudWatch, Nnová relikvienebo Datadog.

    Konečně znovu použít stávající potrubí i pro vyřazení starého modrého prostředí. Je jen na vás, zda nejprve provedete zničení pro všechny služby a komponenty, než je znovu vytvoříte od začátku, nebo alternativně můžete pouze aktualizovat skripty pro každou službu v řetězci. Obvykle je bezpečnější možnost zničit a znovu vytvořit, protože při aktualizaci musíte zvážit mnohem více rohových pouzder.

    Nejlepší postupy modro-zeleného nasazení

    Zajímá vás, jak co nejlépe využít nasazení Blue-Green? Zde je několik tipů pocházejících z praxe.

    Mějte pevnou strategii migrace databáze

    Při nasazování nové verze softwaru je důležité zajistit správnou aktualizaci schématu databáze. Použijte strategii migrace databáze jako např Průlet nebo Liquibase ke správě změn schématu databáze.

    Použijte nástroj Canary Analysis Tool

    Přestože je nasazení Canary alternativním přístupem, stále můžete použít některé z jeho technik k dokonalosti vašeho modro-zeleného nasazení.

    Použijte nástroj pro analýzu kanárů, jako je např Kayenta nebo Spinakr analyzovat výkon nové verze softwaru v reálném prostředí. To zahrnuje porovnání výkonu nové verze softwaru s výkonem staré verze softwaru.

    Použijte framework pro přepínání funkcí, jako je např Togglz k povolení nebo zakázání funkcí v nové verzi softwaru. To umožňuje postupné zavádění nových funkcí a v případě potřeby umožňuje rychlé vrácení zpět.

    Používejte Load Balancer s kontrolami stavu

    Použijte nástroj pro vyrovnávání zatížení, jako je AWS Elastic Load Balancer nebo NGINX s kontrolami stavu, abyste zajistili, že provoz je směrován pouze do zdravých instancí. To zajišťuje, že aplikace zůstane vysoce dostupná a že prostoje jsou minimalizovány.

    Použijte plán vrácení s automatickým vrácením zpět

    Mějte připravený plán vrácení pro případ problémů a automatizujte proces vrácení pomocí nástroje, jako je AWS CodeDeploy nebo Octopus Deploy. To zajišťuje, že prostoje jsou minimalizovány a aplikace zůstává vysoce dostupná.

    To platí většinou pro zelené prostředí, kdykoli objevíte nějaký významný problém s novou verzí.

    Pro modré prostředí nepotřebujete plán vrácení zpět, protože toto zůstane nedotčeno přepínačem a do tohoto stabilního prostředí se můžete vrátit kdykoli a okamžitě.

    Výzvy s Blue-Green Deployment

    Implementace Blue-Green nasazení může pro vývojové týmy představovat určité výzvy. Zde jsou některé typické výzvy:

  • Nastavení a správa dvou identických prostředí může být složité a časově náročné. To vyžaduje odborné znalosti v infrastruktuře, jako jsou kódové nástroje, jako je Terraform nebo CloudFormation. Musíte mít k dispozici seniorní vývojový tým, který je schopen se s takovými technickými problémy vypořádat.
  • Při nasazování nové verze softwaru je důležité zajistit správnou aktualizaci schématu databáze. To může být náročné, zvláště pokud je schéma databáze složité. Potřebujete pevné procesy nasazení databáze, které dokážou automaticky a spolehlivě zpracovat aktivity aktualizace schématu.
  • Analýza výkonu nové verze softwaru v reálném prostředí může být náročná. To vyžaduje odborné znalosti v nástrojích pro analýzu kanárů, jako je Kayenta nebo Spinnaker.
  • Implementace přepínání funkcí může být náročná, zvláště pokud má aplikace velké množství funkcí. To vyžaduje pečlivé plánování a koordinaci mezi vývojovými týmy.
  • Testování nové verze softwaru v reálném prostředí může být náročné, zvláště pokud má aplikace velký počet uživatelů nebo serverů. Musíte mít testovací případy co nejvíce zautomatizované. Také vaše rutinní procesy budou zahrnovat hodně koordinace mezi vývojovými a testovacími týmy.
  • Mít dobré řešení monitorování je velmi vzácná realita, ale pro správné operace DevOps je to nutnost. Jakmile to bude možné, jděte a investujte čas do budování tohoto řešení s osvědčenými službami (AWS CloudWatch, New Relic, Datadog).
  •   Vysvětlení Cloud Security Posture Management (CSPM).

    Rozdíl mezi modrozeleným a kanárským nasazením

    Zatímco rozdíl oproti tradičním procesům nasazení je zcela zřejmý (v tradičních procesech nasazení neexistují dvě paralelní prostředí s různými verzemi softwaru), rozdíl oproti nasazení Canary může být o něco zajímavější.

    Modro-zelené nasazení znamená dvě prostředí (modré a zelené). Ale zároveň jsou obě prostředí neustále synchronizována, pokud jde o data. Jakmile je nová verze otestována a považována za připravenou, provoz se přepne z aktivního prostředí do neaktivního prostředí, čímž se stane novým aktivním prostředím. Nestrávíte žádný čas nasazováním nového kódu a nevznikají žádné prostoje ve výrobě. Všichni produkční uživatelé neustále pracují na aktuálně aktivním prostředí a ani si nevšimnou přepnutí.

    Nasazení Canary zahrnuje nasazení nové verze softwaru pro malou podmnožinu uživatelů, zatímco většina uživatelů nebo serverů nadále používá aktuální verzi. Jedná se spíše o postupné nasazení než o úplný přechod. Testeři jsou v tomto případě přímými produkčními uživateli, i když jde pouze o jejich definovanou podmnožinu. Tato skupina aktivně testuje novou verzi s produkčními procesy, a až bude konečně stabilní, rozšíří se nová verze mezi ostatní uživatele.

    Který je tedy lepší?

    Odpověď konzultanta „to záleží“ se sem hodí nejvíce, i když to může znít podlé.

    Pokud je prioritou vašeho systému především vysoká dostupnost, pak je vaší volbou nasazení v modro-zelené barvě.

    Pokud je vaší silnou předností spíše rychlejší zpětná vazba a kontrolovanější (i když pomalejší) zavádění nové verze systému, pak má nasazení Canary oproti Blue-Green výhody.

    Důležité je, že oba jsou dostatečně agilní na to, aby se považovali za dostatečně dobré pro seriózní tvorbu systému DevOps.

    Případové studie

    Netflix využívá Blue-Green nasazení k nasazení nových verzí své streamovací služby. Pomocí Blue-Green nasazení může Netflix nasadit nové verze své služby, aniž by to ovlivnilo uživatelskou zkušenost. Netflix ve skutečnosti používá nasazení Canary paralelně i pro jiné případy, takže není nereálné kombinovat různé přístupy k nasazení DevOps pod jednou střechou.

    Amazon a Etsy také používají Blue-Green nasazení k nasazení nových verzí své platformy elektronického obchodování.

    Dalším případem je LinkedIn, který využívá nasazení Blue-Green k nasazení nových verzí své platformy sociálních sítí.

    V neposlední řadě IBM využívá Blue-Green nasazení k nasazení nových verzí své cloudové platformy.

    Tyto společnosti úspěšně implementovaly Blue-Green nasazení do svých infrastruktur platforem a slouží jako dobrý příklad pro ostatní.

    Závěrečná slova

    Stejně jako Canary se i Blue-Green nasazení snaží o nejlepší optimalizaci vašich již existujících agilních procesů a metodologií, aby byl nový software dodáván hladce takovým způsobem, že si toho nikdo nikdy nevšimne. To je konečný cíl takových přístupů. Dodáváte neustále a velmi často, ale nikdo o tom neví, nikdo si toho nevšímá a nakonec to nikoho nezajímá.

    Pro vývojový tým může být trochu frustrující, že kolem společnosti nejsou žádné drby o jejich nejnovějších vydáních. Ale pokud se mě ptáte, je to přesně ta nejlepší služba, kterou můžete poskytnout. Nikdo o tom nemluví, ale každý to používá každý den.

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