Upravit

Sdílet prostřednictvím


Blue/green deployments for applications on Azure Spring Apps

Azure Spring Apps
GitHubu
Azure DevOps

Tento článek popisuje řešení modrého/zeleného nasazení s vysokou dostupností pro aplikace v Azure Spring Apps.

Model modrého/zeleného nasazení zahrnuje zachování stávající verze aplikace v provozu (označované jako modrá verze), zatímco se nasadí nová verze aplikace (označuje se jako zelená verze). Toto nasazení umožňuje nezávisle restartovat, zahřát a otestovat novou verzi aplikace. Po spuštění nové verze aplikace na ni můžete přepnout a přesměrovat do ní veškerý nový příchozí provoz. Pro uživatele aplikace se nasazení nové verze provede bez viditelných výpadků. Modré nebo zelené nasazení usnadňuje opuštění nové verze, aniž by to mělo vliv na živou verzi, pokud nové nasazení nefunguje podle očekávání.

Architektura

Následující diagram znázorňuje architekturu pro tento přístup:

Diagram znázorňující architekturu pro modré/zelené nasazení, které používá GitHub, GitHub Actions a Azure Spring Apps

Stáhněte si soubor aplikace Visio s touto architekturou.

Komponenty

Toto řešení používá následující komponenty:

  • Azure Spring Apps je moderní platforma mikroslužeb pro spouštění aplikací Java Spring Boot a Steeltoe .NET Core . Služba eliminuje často používaný kód pro spouštění mikroslužeb a pomáhá rychle vyvíjet robustní aplikace v cloudu. Azure Spring Apps můžete také použít k nasazení kódu pro jednotlivé aplikace.

  • GitHub je platforma pro hostování kódu, která poskytuje správu verzí a spolupráci. GitHub poskytuje správu distribuovaných verzí Gitu, správu zdrojového kódu a další funkce.

  • GitHub Actions pomáhá automatizovat pracovní postupy vývoje a nasazení softwaru z úložiště. Platformu můžete použít k vytvoření plně automatizovaného nastavení kontinuální integrace a průběžného doručování (CI/CD). Pomocí GitHub Actions můžete také vytvářet prostředí, pro která můžete nakonfigurovat pravidla, jako je vyžadování revidujících.

Workflow

Architektura řešení implementuje následující pracovní postup:

  1. Vývojář provede změnu aplikace. Úložiště GitHub obsahuje kód aplikace, který je potřeba nasadit do Azure Spring Apps. Každá změna kódu aplikace probíhá ve správě zdrojového kódu. GitHub dokončí následující úlohy:

    • Zkontrolujte změny.

    • Zabránit nezamýšleným nebo neoprávněným změnám

    • Ujistěte se, že jsou kontroly kvality dokončené.

  2. Úložiště GitHub obsahuje také pracovní postup GitHub Actions pro sestavení změn kódu a dokončení potřebných kontrol kvality. Po kompilaci kódu nasadí pracovní postup GitHub Actions nejnovější verzi kódu aplikace do Azure Spring Apps. Pracovní postup GitHub Actions zahrnuje následující kroky:

    1. Určete aktuální aktivní produkční prostředí.

    2. Nasaďte kód do neprodukčního prostředí. Pokud neprodukční prostředí neexistuje, vytvořte prostředí.

      V tomto okamžiku v nasazení bude stará (modrá) verze aplikace v produkčním nasazení nadále přijímat veškerý produkční provoz.

    3. Počkejte na kontrolu nasazení a schválení nové aplikace.

      Tento krok dává nově nasazené aplikaci (zelenou verzi) čas na spuštění a zahřátí.

      Před schválením můžete pomocí neprodukční adresy URL aplikace ověřit novou verzi a ujistit se, že je připravená.

    4. Po schválení přepněte produkční nasazení a neprodukční nasazení.

      Veškerý produkční provoz se teď směruje do nové verze aplikace.

      Poznámka:

      Pokud nové nasazení odmítnete, GitHub nepřepne prostředí. Předchozí verze nadále přijímá produkční provoz.

    5. Po schválení a přepnutí provozu odstraňte původní produkční nasazení.

      Tento krok čištění vytvoří nákladově efektivnější nastavení.

Alternativy

Toto řešení využívá GitHub Actions k automatizaci nasazení. Jako alternativu můžete použít také Službu Azure Pipelines nebo jakýkoli jiný systém automatizace CI/CD. Ukázka uvedená v části Nasazení scénáře používá co nejvíce příkazy Azure CLI, takže toto nastavení můžete snadno přeložit na jiný nástroj pro automatizaci. Pomocí nástroje CI/CD nastavte prostředí a vytvořte na něm tok schválení.

Tato architektura používá Azure Spring Apps s nasazeními jako cílovou službu. Jako alternativu můžete použít přípravné sloty služby Aplikace Azure Service. Slot obsahuje novou verzi aplikace, kterou je možné znovu načíst, zahřát a otestovat před provedením prohození slotu. Prohození slotů umístí novou verzi do produkčního prostředí. Tento proces je integrovaný do služby, takže nastavení je snadné.

Jako další alternativu můžete umístit jakoukoli službu Azure, která hostuje webové koncové body za řešení vyrovnávání zatížení. Pokud použijete tento přístup, můžete aktivovat druhou instanci služby Azure, kde můžete nasadit novou verzi aplikace. V dalším kroku můžete vytvořit nasazení nulového výpadku přepnutím provozu v řešení vyrovnávání zatížení na službu Azure, která obsahuje novou verzi aplikace. Mějte na paměti, že tento přístup k modrému/zelenému nasazení vyžaduje značné režijní náklady na správu.

Podrobnosti scénáře

U některých cloudových aplikací je zajištění provozuschopnosti co nejvíce důležité. Jedním zřešeních Dalším řešením je plán zotavení po havárii, který aplikaci znovu vyvolá v jiné oblasti po výpadku. Náklady na tuto možnost můžou být nižší, ale opětovné uvedení celé aplikace do online režimu trvá delší dobu.

Tento článek popisuje proces zajištění vysoké dostupnosti během nasazení nové verze aplikace. V tradiční konfiguraci se nové bity aplikace nasadí do služby, která je hostitelem aplikace. Tato konfigurace často vede k opětovnému načtení a restartování aplikace. Během tohoto procesu není aplikace k dispozici.

Toto řešení využívá Azure Spring Apps k implementaci modrého/zeleného nasazení a řeší automatizaci nasazení aplikací.

Potenciální případy použití

Toto řešení může těžit z jakékoli organizace, která vyžaduje vysokou dostupnost. Řešení je zvláště vhodné pro odvětví, jako je elektronické obchodování a hry, kde výpadky můžou vést ke ztrátě podnikání a výnosů.

Dostupnost můžete dále vylepšit implementací nasazení s nulovými výpadky. Další informace najdete v části Alternativy tohoto článku.

Důležité informace

Následující aspekty řešení implementují pilíře architektury Azure Well-Architected Framework. Tato architektura je sada hlavních principů, které lze použít ke zlepšení kvality úlohy. Další informace naleznete v tématu Microsoft Azure Well-Architected Framework.

Dostupnost

Toto řešení pomáhá udržovat dostupnost aplikace během nasazování nové verze. Nezvyšuje celkovou smlouvu SLA, kterou poskytuje Azure Spring Apps. Selhání služeb na platformě můžou i nadále ovlivnit vaši aplikaci.

Pokud chcete, aby řešení zvýšilo celkovou smlouvu SLA vaší konfigurace, podívejte se na nastavení služby Azure Spring Apps s vysokou dostupností v několika oblastech. V tomto přístupu se před konfigurací předčítá globální řešení vyrovnávání zatížení.

Škálovatelnost

Toto řešení funguje na základě jednotlivých aplikací, takže je vhodné pro aplikace mikroslužeb. Umožňuje také týmům aplikací pracovat nezávisle na jiných aplikačních týmech, aniž by ovlivnily dobu provozu celkového řešení.

Toto řešení funguje nejlépe na základě jednotlivých aplikací, kde každá aplikace má vlastní pracovní postup nasazení s modrou/zelenou barvou. Pokud zkombinujete aplikace ve stejném pracovním postupu, tato konfigurace se rychle změní na složité, takže tento přístup nedoporučujeme.

Zabezpečení

Zabezpečení poskytuje záruky proti záměrným útokům a zneužití cenných dat a systémů. Další informace najdete v tématu Přehled pilíře zabezpečení.

Kromě nastavení oprávnění úložiště zvažte implementaci následujících bezpečnostních opatření v úložištích Git, která obsahují kód, který chcete nasadit do Azure Spring Apps:

  • Ochrana větví. Chraňte větve, které představují provozní stav vaší aplikace, před přímým vložením změn. Požadovat, aby se každý návrh změn odeslal jako žádost o přijetí změn (PR). K automatické kontrole použijte žádosti o přijetí změn. Kontroly můžou zahrnovat sestavení veškerého kódu a spouštění testů jednotek na kódu, který žádost o přijetí změn vytvoří nebo upraví.

  • Kontrola žádosti o přijetí změn. Aby bylo možné vynutit zásadu čtyř očí, je nutné, aby žádosti o přijetí změn měly alespoň jeden kontrolor. Pomocí funkce vlastníci kódu GitHubu můžete také definovat jednotlivce nebo týmy zodpovědné za kontrolu konkrétních souborů v úložišti.

  • Neměnná historie. Povolit pouze nová potvrzení nad existujícími změnami. Neměnná historie je zvláště důležitá pro účely auditování.

  • Další bezpečnostní opatření. Vyžadovat, aby uživatelé GitHubu aktivovali vícefaktorové ověřování. Povolte také jenom podepsaná potvrzení, která není možné později změnit.

Doporučujeme také nasadit pouze do jedné služby Azure Spring Apps. V produkčním nastavení byste měli nejprve otestovat kód v jiných prostředích, než ho nasadíte do produkčního prostředí. Produkční prostředí by mělo být ideálně v jiném prostředí než ve vývojovém a testovacím prostředí.

Informace o dodatečném zabezpečení služby Azure Spring Apps najdete v tématu Nasazení služby Azure Spring Apps ve virtuální síti. Pokud implementujete doporučené nasazení, nemůžete používat spouštěče hostované na GitHubu. Pro pracovní postup nasazení musíte použít vlastní spouštěč.

DevOps

Automatizace tohoto nastavení prostřednictvím pracovních postupů GitHub Actions zvyšuje produktivitu DevOps. Jednou z nejužitečnějších funkcí je schopnost rychle vrátit změny, které se chovají neočekávaně. Stačí odmítnout nové nasazení.

Týmy často spravují více prostředí pro stejnou aplikaci. Je typické mít několik verzí aplikace nasazených do různých služeb Azure Spring Apps. Úložiště Git, což je jediný zdroj pravdy, ukazuje, které verze aplikací jsou aktuálně nasazené do clusteru.

Optimalizace nákladů

Optimalizace nákladů zahrnuje hledání způsobů, jak snížit zbytečné výdaje a zlepšit efektivitu provozu. Další informace najdete v tématu Přehled pilíře optimalizace nákladů.

K odhadu nákladů použijte cenovou kalkulačku Azure.

Azure Spring Apps má úroveň Basic a úroveň Standard. Podrobnosti najdete v tématu s cenami služby Azure Spring Apps. Když použijete strategii modrého/zeleného nasazení, platíte za dodatečné virtuální jednotky SPU jen krátkou dobu, zatímco vaše nasazení běží.

GitHub nabízí bezplatnou službu. Pokud ale chcete používat pokročilé funkce související se zabezpečením, jako jsou vlastníci kódu nebo požadované revidujícím, potřebujete týmový plán. Další informace najdete na stránce s cenami GitHubu.

Nasazení scénáře

Ukázku této konfigurace najdete v tématu Automatizované modré/zelené nasazení aplikací Azure Spring Apps v úložišti GitHub. Úložiště obsahuje také kroky pro nastavení služby Azure Spring Apps pomocí šablony Bicep.

Přispěvatelé

Microsoft udržuje tento obsah. Následující přispěvatel vyvinul původní obsah.

Hlavní autor:

Pokud chcete zobrazit nepublikované profily LinkedIn, přihlaste se na LinkedIn.

Další kroky