Co jsou vzory nasazení?

Dokončeno

Model nasazení je automatizovaný způsob, jak uživatelům hladce zavést nové funkce aplikací. Vhodný model nasazení vám pomůže minimalizovat výpadky. Některé vzory také umožňují postupně zavádět nové funkce. Díky tomu můžete nové funkce ověřit pomocí vybraných uživatelů, než tyto funkce zpřístupníte všem.

V této části se dozvíte o některých běžných vzorech nasazení. Dozvíte se také, jak azure App Service pomůže implementovat model, který tým Tailspin zvolí.

Ranní schůzka

Tým Tailspin se cítí dobře. Jejich kanál urychlil proces. Tým má vývojové prostředí, ve kterém může webovou aplikaci integrovat s databází. Tim i Amita jsou rádi, že mají automatizované testy, které zjednodušují jejich úlohy. Obecně platí, že dochází k menšímu zpoždění a menšímu počtu chyb.

Ale jako vždy je problém. Pusťme se do týmové schůzky, kde Tim mluví.

Tim: Je tak těžké udržet všechny šťastné. Irwin si myslí, že vydání nových funkcí trvá příliš dlouho. Nemůžu nic dělat, dokud vedení neschválí vydání, a v tuto chvíli neexistuje žádný hladký způsob, jak zavést funkce po udělení OK. Tento proces není jen dlouhý, ale i chaotický. Je to ruční a dochází k výpadkům. Celý proces může trvat pět dní. Vím, že je to moc dlouhé, ale co mám dělat? Možná, že kdybych jen pít více kávy, řešení mi přijde.

Andy: Káva je nezbytná k účinnému řešení problémů, a to bez pochyb.

Myslím, že řešení, které potřebujeme, je dobrým vzorem nasazení. Model nasazení je automatizovaný způsob, jak provést přepnutí. Tento software přesuneme z konečné předprodukční fáze do ostrého provozu.

Výběr správného vzoru by vám určitě pomohl, například minimalizací výpadků. Další výhodou modelu nasazení je, že nám dává šanci spustit testy, které by se měly skutečně provést v produkčním prostředí.

Andy začne psát na tabuli.

Tady jsou možnosti, které bychom měli zvážit:

  • Nasazení modro-zeleného prostředí
  • Kanárské verze
  • Přepínače funkcí
  • Utajené uvedení
  • Testování A/B
  • Postupné zavádění

Pojďme se krátce podívat na jednotlivé vzory.

Modrozelené nasazení

modrozeleného nasazení snižuje riziko a prostoje provozem dvou identických prostředí. Tato prostředí se nazývají modrá a zelená. V každém okamžiku je aktivní jenom jedno z prostředí. Modré nasazení obvykle zahrnuje směrovač nebo nástroj pro vyrovnávání zatížení, který pomáhá řídit tok provozu.

diagram vyrovnávače zatížení, který distribuuje provoz v modro-zeleném nasazení.

Řekněme, že modrá je živá. Při přípravě nové verze provádíme konečné testy v zeleném prostředí. Jakmile software pracuje v zeleném prostředí, jednoduše přepneme směrovač tak, aby všechny příchozí požadavky přešly do zeleného prostředí.

Nasazení modrého a zeleného také poskytuje rychlý způsob, jak provést rollback. Pokud se v zeleném prostředí něco nepovede, jednoduše přepneme směrovač zpět do modrého prostředí.

Kanárské verze

kanárské vydání představuje způsob, jak včas identifikovat potenciální problémy, aniž by tomuto problému byli vystaveni všichni uživatelé. Myšlenka spočívá v tom, že novou funkci zpřístupníme pouze malé podmnožině uživatelů, než ji zpřístupníme všem.

Diagram vyrovnávače zatížení odesílajícího provoz do kanárské verze

V kanárské verzi sledujeme, co se stane, když funkci uvolníme. Pokud má verze problémy, použijeme opravu. Jakmile je kanárská verze známá jako stabilní, pak ji přesuneme do skutečného produkčního prostředí.

Přepínače funkcí

Pomocí přepínačů funkce překlopte přepínač za běhu. Můžeme nasadit nový software, aniž bychom našim uživatelům museli vystavit žádné jiné nové nebo změněné funkce.

V tomto vzoru nasazení Mara a já vytváříme nové funkce za přepínačem. Když dojde k vydání verze, funkce je vypnutá, aby neměla vliv na produkční software. V závislosti na tom, jak přepínač nakonfigurujeme, můžeme překlopit přepínač na zapnuto a zobrazit požadovanou funkci.

diagram kódovaného příkazu if pro funkci on-off.

Mohli bychom například nejprve zpřístupnit funkci několika uživatelům, abychom viděli, jak reagují. Tento náhodný vzorek uživatelů vidí tuto funkci. Nebo bychom tuto funkci mohli zpřístupnit všem.

Tento model nasazení ale může Maru a mně přinést víc, než kdokoliv jiný. Velkou výhodou patternu přepínání funkcí je, že nám pomáhá vyhnout se přílišnému větvení. Slučování větví může být bolestné.

Skryté spuštění

Skryté spuštění se podobá testovací verzi nebo aktivaci funkčního přepínače. Místo toho, abychom všem zpřístupnili novou funkci, uvolníme ji ve tmavém spuštění pro malou sadu uživatelů.

diagram nástroje pro vyrovnávání zatížení odesílajícího provoz do nové funkce

Tito uživatelé neví, že pro nás tuto funkci testují. Novou funkci jim ani nezmiňujeme. Proto se tomu říká tiché spuštění. Software je uživatelům uvolňováno postupně nebo nenápadně, abychom mohli získat zpětnou vazbu a otestovat výkon.

Testování A/B

testování A/B porovnává dvě verze webové stránky nebo aplikace a zjišťuje, která z nich funguje lépe. Testování A/B je jako klasický experiment.

diagram dvou aplikací a jejich analýz.

V testování A/B náhodně zobrazujeme uživatele se dvěma nebo více variantami stránky. Pak použijeme statistickou analýzu k rozhodnutí, která varianta pro naše cíle funguje lépe.

Postupné zavádění

Nasazení postupného vystavení se někdy nazývá kruhové nasazení. Je to jiný způsob, jak omezit, jak změny ovlivňují uživatele a zároveň zajistit, aby tyto změny byly platné v produkčním prostředí.

Kruhy jsou v podstatě rozšířením kanárské fáze. Kanárské vydání se nasadí do fáze pro posouzení účinků. Přidání dalšího kruhu je v podstatě stejná myšlenka.

diagram průběhu větších skupin

Při nasazení založeném na prstencích nejprve nasazujeme změny u zákazníků, kteří jsou odolní vůči rizikům. Pak postupně rozšíříme nasazení na větší skupinu zákazníků.

Implementace nasazení typu "blue-green"

Andy se dívá na Tima.

Andy: To je hodně, vím. Chcete si vzít čas, abyste se nad tím zamysleli? Nebo ty a já bychom mohli ...

Tim: modrá-zelená.

Všichni v místnosti se směje.

Mara: To mluví ta káva?

Tim: přepínače funkcí zahrnují změnu způsobu, jakým ty a Andy pracujete. Pojďme najednou udělat jednu věc. Metody, které funkci postupně zveřejňují, vyžadují statistické analýzy nebo přepínače funkcí.

Modro-zelené nasazení je něco, co mohu kontrolovat. Přepnutí směrovače je jednoduché. Je to snadné a zní bezpečně. Při nasazení typu blue-green má správa prostředí k vyhodnocení. Když ok dávají, můžeme snadno přepnout. Začněme tam.

Otázkou tedy je, jak v našem pipeline implementujeme modré-zelené nasazení?

Co jsou sloty nasazení?

Andy: Protože používáme Azure App Service, můžeme využít nasazovacích slotů. Sloty nasazení používají aplikace, které mají vlastní názvy hostitelů.

Vím, že zatím nejsme připraveni nasadit web Space Game do produkčního prostředí jako součást automatizovaného procesu. Jako test můžeme ale do našeho přípravného prostředí přidat nasazovací slot.

Místo nastavení nástroje pro vyrovnávání zatížení nebo směrovače můžeme do instance služby App Service přidat druhý slot, který používáme v našem stávajícím přípravném prostředí. Můžeme pojmenovat primární slot modrý a sekundární slot zelený.

Diagram aplikací měnících IP adresy.

Tímto způsobem můžeme nasadit nové funkce bez jakýchkoli výpadků. Prohodíme aplikaci a její konfiguraci mezi těmito dvěma sloty nasazení. V podstatě vyměníme IP adresy těchto dvou slotů.

Tim, se mi to líbí! Tuto variantu modro-zeleného nasazení můžete označit jako nasazení bez výpadků.

Andy: Skvělé! Tim a já budu pracovat na implementaci tohoto modelu nasazení. Všechny se můžeme setkat později, abychom viděli výsledky.

Doporučení pro používání funkčních přepínačů

Vývojové vlajky byly jednou z metod řízení vydávání, které tým zvážil. Tým se rozhodl nepoužívat feature flagy, ale mnoho lidí je považovalo za užitečné. Tato část poskytuje více informací o funkčních příznacích.

Vlajky funkcí, někdy nazývané přepínače funkcí, umožňují změnit způsob fungování systému beze změny kódu. Tyto příznaky umožňují nasdílení nového kódu do centrální vývojové větve a nasazení kódu, ale nemusí nutně fungovat. Příznaky se běžně implementují jako hodnota proměnných, které řídí podmíněnou logiku.

Představte si, že váš tým pracuje v centrální vývojové větvi bankovní aplikace. Rozhodli jste se provést veškerou práci v hlavní větvi, abyste se vyhnuli komplikovaným operacím sloučení později. Ale setkáte se s problémem. Podstatně měníte výpočty úroků a lidé na tom každý den spoléhají. Ještě horší je, že dokončení změn bude trvat týdny. Nemůžete nechat hlavní kód tak dlouho rozbitý.

V tomto scénáři může být vhodným řešením přepínač funkce. Kód můžete změnit tak, aby uživatelé, kteří nemají nastavený příznak funkce, mohli dál používat kód pro výpočet původního úroku. Váš tým mezitím má nastavený příznak funkce, aby viděl kód, který mění.

Dalším typem příznaku funkce je příznak verze. Představte si, že po dokončení práce na kódu výpočtu úroku ho chcete vyzkoušet, než ho veřejně uvolníte. Máte skupinu uživatelů, která je dobře připravena řešit nový kód a jakékoli možné problémy. Nejdřív je necháte vyzkoušet funkci. Změníte konfiguraci tak, aby měli také nastavený příznak funkce a mohli otestovat nový kód. Pokud dojde k problémům, můžete příznak rychle zakázat.