Vysvětlení Canary Deployment a jeho role v DevOps

Nasazení Canary je technika vývoje a nasazení softwaru, která provádí postupné uvolňování nových funkcí nebo aktualizací pro malou podskupinu uživatelů, než se rozšíří na celou uživatelskou základnu.

Tento přístup zahrnuje vytvoření nové verze softwaru a její nasazení pro malou skupinu uživatelů, zatímco pro ostatní uživatele zůstane stará verze spuštěna. Vývojový tým pečlivě sleduje novou verzi, aby zajistil, že je stabilní a funguje podle očekávání.

Pokud vše půjde dobře, nová verze se rozšíří pro více uživatelů, dokud nakonec nezasáhne celou uživatelskou základnu. Tímto způsobem projektový tým minimalizuje riziko zavedení chyb nebo jiných problémů, které by mohly mít dopad na všechny uživatele najednou.

Účelem nasazení Canary je snížit riziko zavádění nových funkcí velké uživatelské základně. Postupným zaváděním změn pro uživatele mohou vývojáři sledovat výkon a stabilitu nové verze. Před nasazením do celé uživatelské základny provedou veškeré nezbytné úpravy. Přechod na novou verzi je proto mnohem plynulejší.

Klíčové principy a výhody

Zdroj: martinfowler.com

Mezi klíčové principy nasazení Canary patří následující:

  • Nasaďte novou verzi nejprve malé podskupině uživatelů a poté ji postupně zavádějte dalším uživatelům.
  • Pečlivě sledujte novou verzi, abyste se ujistili, že je stabilní a funguje podle očekávání.
  • Pokud se vyskytnou nějaké problémy, rychle a snadno vraťte nasazení na předchozí verzi.
  • Automatizujte proces nasazení co nejvíce, abyste snížili riziko lidské chyby.
  • Mezi výhody nasazení Canary v DevOps patří:

  • Postupným zaváděním změn minimalizujete riziko zavlečení chyb nebo jiných problémů, které by mohly mít dopad na všechny uživatele najednou.
  • Vývojáři mohou rychleji obdržet zpětnou vazbu k nové verzi, což jim umožní provést nezbytné úpravy před nasazením na celou uživatelskou základnu.
  • Sledováním výkonu a stability nové verze mohou vývojáři zajistit, aby splňovala nezbytné standardy kvality před nasazením na celou uživatelskou základnu.
  • Nasazení Canary pomáhá zvýšit důvěru vývojářů a zúčastněných stran v proces nasazení, protože snižuje riziko zavedení problémů, které by mohly ovlivnit uživatelskou zkušenost.
  • Canary Deployment na základě koncepce a terminologie

    Zdroj: cncf.io

    Pojďme si projít typickým životním cyklem procesu.

    Vše začíná u Canary, tedy u „ranných uživatelů“ nové verze systému. Paralelně s tím existuje skupina Baseline. Sem patří všichni ostatní uživatelé mimo Kanárské ostrovy.

    Protože uživatelé Canary i nadále používají novou verzi, rozšiřuje se nasazení Canary na stále více uživatelů. Toto je Traffic Shifting. Skupina Canary roste, zatímco skupina Baseline se zmenšuje, takže systém provádí postupné zavádění.

    Během toho proces monitorování zaznamenává všechny aktivity a výsledky používání a generuje metriky, které vývojáři potřebují jako zpětnou vazbu. Vývojáři pak zareagují a opraví, co je potřeba. Nebo se vrátí na základní linii, pokud v tuto chvíli nemohou vyřešit problémy.

    Automatizujte všechny aktivity monitorování a nasazení. To dává vývojářům výhradní zaměření na řešení problémů.

    Je možné, že skupina Canary zjistí, že některé funkce nové verze jsou špatné, zatímco jiné jsou skvělé. Vývojáři tedy označí funkce, které mají problémy, aby je zakázali z procesů nasazení.

    Vývojáři sledují obě skupiny současně – Canary a Baseline. Uživatelé generují výsledky A/B testování. To je chování starého systému a nového systému za stejných podmínek. Na nové verzi systému ale také neustále běží automatické testy, aby bylo zajištěno, že je kontrola stavu skupiny Canary stabilní.

    Jak se liší od tradičních strategií nasazení

    Po pochopení procesu životního cyklu na vysoké úrovni jsou rozdíly mezi tímto a tradičními procesy nasazení zcela zřejmé.

    • Nasazujete postupně a s lepší kontrolou, než abyste nasazovali všechny najednou a čekali na problémy ovlivňující celou produkci.
    • Omezíte riziko chyb nové verze pouze na skupinu Canary a vystavíte tak problémům celý svět současně.
    • Budete monitorovat novou verzi dříve, než ji budou mít uživatelé, místo abyste ji sledovali poté a investovali značné množství času a zdrojů do fáze hyper-péče procesu vydání.
    • Než novou verzi zcela nasadíte do produkce, můžete se rozhodnout o způsobu vrácení. Na druhé straně je naplánováno další okno vydání, aby se produkce vrátila zpět těsně po dokončení produkčního vydání.
    • Nasazení Canary vás přirozeně nutí investovat do automatizovaných nástrojů a procesů, kde je to možné. Na druhou stranu, lpění na tradičních strategiích nasazení přirozeně snižuje prioritu všech automatizačních iniciativ až na konec seznamu nevyřízených.

    CI/CD potrubí v nasazení na Kanárských ostrovech

    Zdroj: aws.amazon.com

    V typickém kanálu CI/CD se změny automaticky sestavují, testují a nasazují do pracovního prostředí pro další testování před nasazením do produkce. A také je to perfektní případ použití v kanárském nasazení.

    Jakmile budou změny nasazeny do pracovního prostředí a projdou všemi nezbytnými testy, kanál CI/CD automaticky nasadí verzi canary pro malou podmnožinu uživatelů v produkčním prostředí.

    Pokud se něco pokazí, stačí spustit jiný kanál pro vrácení zpět. Nebo označte problematické funkce a už se nikdy neobjeví v procesu nasazení kanálu nasazení. Vše automaticky a už se o to nemusíte starat.

    Vzhledem k tomu, že verze Canary je plná automatických testů zdravotní kontroly, všechny jsou přirozeně začleněny do základních funkcí CI/CD Pipelines. Každopádně jsou nezbytnou součástí každého dobrého CI/CD potrubí.

    Pracovní postup a fáze nasazení Kanárských ostrovů

    Shrneme-li informace dohromady, jedná se o obvyklý pracovní postup typického nasazení Canary, který můžete ve svém projektu použít.

    #1. Plánování a příprava

    V této fázi vývojový tým plánuje a připravuje nasazení kanárků. To zahrnuje identifikaci změn nebo aktualizací, které mají být provedeny, vytvoření nové verze softwaru a definování metrik a kontrol stavu, které budou použity ke sledování výkonu nové verze. Tým také identifikuje podmnožinu uživatelů, kteří obdrží novou verzi jako první, a definuje plán zavádění.

    #2. Implementace směrování a monitorování provozu

    Nová verze softwaru je nasazena podskupině uživatelů identifikovaných ve fázi plánování. Směrování provozu je implementováno tak, aby nasměrovalo část uživatelského provozu na novou verzi, zatímco pro ostatní uživatele ponechá starou verzi spuštěnou. Výkon a stabilita nové verze jsou pečlivě sledovány pomocí metrik a kontrol stavu, aby bylo zajištěno, že funguje podle očekávání.

    #3. Analýza a vyhodnocení výkonu nasazení

    Výkon nové verze je analyzován a hodnocen na základě metrik a zdravotních kontrol definovaných ve fázi plánování. Pokud si nová verze vede dobře, postupné zavádění se postupně rozšíří na více uživatelů. Pokud se s novou verzí vyskytnou nějaké problémy, nasazení lze rychle vrátit zpět na předchozí verzi.

    #4. Podpora nebo vrácení zpět nasazení

    Vývojový tým rozhodne, zda propagovat novou verzi celé uživatelské základně, nebo se vrátit k předchozí verzi. Pokud si nová verze vede dobře a splňuje potřebné standardy kvality, propagujte ji celé uživatelské základně. Pokud se s novou verzí vyskytnou nějaké problémy, rychle a snadno vraťte nasazení na předchozí verzi.

    Zdroj: aws.amazon.com

    Nejlepší postupy a strategie

    Při implementaci Canary Deployment do vaší platformy začněte definováním jasných cílů a toho, jak vypadá úspěch na konci. Zde můžete pomoci s věcmi, jako jsou metriky výkonu, kritéria zpětné vazby od uživatelů a dopad na podnikání.

    Vytvořte malou podskupinu uživatelů, kteří budou testovat novou (Canary) verzi softwaru. Větší skupina na začátku opravdu není výhodou. Hlavně na začátku chcete být maximálně flexibilní.

    Jak již bylo několikrát zmíněno, sledujte výkon a stabilitu nové verze pomocí metrik a kontrol stavu. Reagujte, kdykoli uvidíte něco podezřelého. Když jde o postupné zavádění, je lepší reagovat přehnaně než nedostatečně.

    Postupně postupem času zvyšujte zavádění nové verze pro více uživatelů. To zajišťuje hladší přechod na novou verzi.

    Kde je to možné, používejte automatizační nástroje a procesy, abyste zefektivnili proces nasazení a monitorování. Zahrňte je do kanálů CI/CD a nechte je automaticky spouštět procesy plánovaného nasazení. To snižuje riziko lidské chyby a zajišťuje, že proces nasazení je konzistentní a opakovatelný.

    Implementujte příznaky funkcí pro povolení nebo zakázání konkrétních funkcí v softwaru. Získáte kontrolu nad budoucími procesy nasazení, aniž byste je museli vždy ručně upravovat nebo aktualizovat. Vývojářům se více zaměříte na oblasti, na kterých záleží – opravování chyb.

    Použijte A/B testování k porovnání výkonu dvou různých verzí softwaru. Přiřaďte náhodné uživatele k jedné nebo druhé verzi. Identifikujte, která verze funguje lépe, a reagujte na to při budoucích rozhodnutích o vývoji.

    Ujistěte se, že můžete nasazení rychle a kdykoli vrátit, pokud se s novou verzí vyskytnou nějaké problémy. Sníží dopad jakýchkoli problémů a umožní rychlé zotavení.

    Výzvy a případové studie

    Stále existují určité problémy, které jsou spojeny s nasazením na Kanárských ostrovech, navzdory jeho jasným výhodám.

    Jednou z výzev Canary Deployment je latence sítě, která může ovlivnit výkon nové verze softwaru. K řešení tohoto problému mohou vývojáři použít nástroje, jako jsou nástroje pro vyrovnávání zatížení a sítě pro doručování obsahu, aby zlepšili výkon sítě. Nejde jen o latenci systému z externího použití. Ale také latence pro interní procesy, jako jsou implementace nebo provádění CI/CD Pipelines. Ty musí být dokončeny co nejrychleji. V opačném případě budete mít řadu vývojářů v nečinném stavu, kteří čekají, až potrubí dokončí svůj běh.

    Další výzvou je zajištění konzistence dat mezi starou a novou verzí softwaru. K řešení tohoto problému mohou vývojáři použít techniky, jako je replikace a synchronizace databáze, aby zajistili, že data budou konzistentní ve všech verzích. To, že produkční uživatelé pracují ve starých i nových verzích současně, zvyšuje očekávání, že zajistíte, že obě verze budou po celou dobu totálně synchronizované a uživatelé nepřijdou o žádná produkční data jen proto, že jsou ve skupině Canary/Baseline. . Splnění tohoto očekávání může být opravdu náročné, takže se držte solidních procesů na pozadí.

    Netflix je dobře známým příkladem společnosti, která využívá Canary Deployment k zavedení změn ve své streamovací službě. Společnost používá kombinaci automatického testování, příznaků funkcí a A/B testování k pomalému zavádění změn.

    Google je dalším příkladem společnosti, která využívá Canary Deployment k zavádění změn do svých cloudových služeb. Podobně společnost využívá výhod automatizovaného testování, rozdělování provozu a začlenění monitorování k postupnému zavádění změn pro malou podskupinu uživatelů před nasazením všem uživatelům. Tento přístup pomohl Googlu zlepšit kvalitu a stabilitu jeho služeb.

    Závěrečná slova

    Stejně jako u všech procesů, přístupů nebo strategií není nasazení na Canary řešením pro každý problém světa. Existují případy, kdy je to téměř nemožné implementovat kvůli environmentálním omezením, znalostem lidí nebo obecnému nedostatku koncepčního porozumění. já

    je mnohem vhodnější pro projekty nové doby. Tam, kde je agilní způsob myšlení pevnou základní vlastností, je automatizace každého procesu nepochybnou prioritou a zainteresované strany silně očekávají maximální úroveň spolehlivosti.

    V takovém případě je nasazení Canary určitým způsobem další úrovní agilních vývojových postupů. Může povýšit týmy na území, kterým projekt nikdy předtím nebyl.

    Dále se podívejte na škálování a optimalizaci CI/CD.