Model konsolidace výpočtových prostředků

Azure App Service
Azure Kubernetes Service (AKS)

Umožňuje konsolidaci několika úloh nebo operací do jedné výpočetní jednotky. Může zvýšit využití výpočtových prostředků a snížit náklady a režii na správu, které jsou spojené s prováděním zpracování výpočtů v aplikacích hostovaných v cloudu.

Kontext a problém

Cloudová aplikace často implementuje řadu operací. V některýchřešeních Tato strategie sice může zjednodušit logický návrh řešení, ale nasazení velkého počtu výpočetních jednotek v rámci stejné aplikace může zvýšit náklady hostování modulu runtime a způsobit, že správa systému bude složitější.

Příklad na obrázku znázorňuje zjednodušenou strukturu řešení hostovaného v cloudu, jehož implementace využívá více než jednu výpočetní jednotku. Každá výpočetní jednotka se spouští ve svém vlastním virtuálním prostředí. Jednotlivé funkce jsou implementované jako samostatné úlohy (označené jako Úloha A až Úloha E), které se spouští ve své vlastní výpočetní jednotce.

Spouštění úloh v cloudovém prostředí se sadou vyhrazených výpočetních jednotek

Každá výpočetní jednotka, i když je nečinná nebo málo používaná, využívá prostředky, za které se platí poplatky. Toto řešení proto není vždy nákladově nejvýhodnější.

V Azure se tento problém týká služeb App Services, Container Apps a Virtual Machines. Tyto položky se spouštějí ve vlastním prostředí. Spuštění kolekce samostatných webů, mikroslužeb nebo virtuálních počítačů, které jsou navržené k provádění sady dobře definovaných operací, ale které potřebují komunikovat a spolupracovat v rámci jednoho řešení, může být neefektivním využitím prostředků.

Řešení

Konsolidace více úloh nebo operací do jedné výpočetní jednotky pomáhá snižovat náklady, zvyšovat využití, zvyšovat rychlost komunikace a omezovat potřebu správy.

Úlohy lze seskupovat podle kritérií založených na funkcích poskytovaných prostředím a nákladech spojených s těmito funkcemi. Běžným přístupem je vyhledání úloh, které mají podobný profil z hlediska své škálovatelnosti, životnosti a požadavků na zpracování. Seskupením takových úloh se umožní, aby se daly škálovat jako jednotka. Elasticita, kterou poskytuje řada cloudových prostředí, umožňuje spouštění a zastavování dalších instancí výpočetní jednotky podle zatížení. Azure například poskytuje automatické škálování, které můžete použít pro Služby App Services a škálovací sady virtuálních počítačů. Další informace najdete v pokynech k automatickému škálování.

Jako ukázkový příklad, který znázorňuje, jak lze pomocí škálovatelnosti určit, které operace by se neměly seskupovat, slouží následující dvě úlohy:

  • Úloha 1 zjišťuje málo časté a časově nezávislé zprávy, které se odesílají do fronty.
  • Úloha 2 zpracovává shluky s velkými objemy síťových přenosů.

Druhá úloha vyžaduje elasticitu, která může zahrnovat spouštění a zastavování velkého počtu instancí výpočetní jednotky. Použití stejného škálování u první úlohy by vedlo jen k dalším úlohám zjišťujícím výskyt málo častých zpráv ve stejné frontě a šlo by o plýtvání prostředky.

V řadě cloudových prostředí lze prostředky dostupné pro výpočetní jednotku určit pomocí údajů, jako jsou počet jader procesoru, velikost paměti, velikost místa na disku a podobně. Obecně platí, že čím více prostředků se určí, tím vyšší budou náklady. Pro úsporu finančních prostředků je důležité, abyste nákladnou výpočetní jednotku co nejvíce využívali a nenechávali ji delší dobu v nečinnosti.

Pokud některé úlohy vyžadují velký výkon procesoru jen v krátkých špičkách, zvažte jejich konsolidaci do jedné výpočetní jednotky nabízející potřebný výkon. Při této potřebě udržování nákladných prostředků v činnosti je ale důležité brát v úvahu možnost kolizí, ke kterým může docházet při jejich přetížení. Například dlouho běžící úlohy, které jsou náročné na výpočetní výkon, by neměly sdílet stejnou výpočetní jednotku.

Problémy a důležité informace

Při implementaci tohoto modelu zvažte následující informace:

Škálovatelnost a elasticita: V řadě cloudových řešení se implementuje škálovatelnost a elasticita na úrovni výpočetní jednotky tak, že se instance jednotky spouští a zastavují. Vyhněte se seskupování úloh, které mají konfliktní požadavky na škálovatelnost ve stejné výpočetní jednotce.

Životnost: Cloudová infrastruktura pravidelně recykluje virtuální prostředí, které je hostitelem výpočetní jednotky. Pokud výpočetní jednotka obsahuje mnoho dlouho běžících úloh, může být nutné nakonfigurovat tuto jednotku tak, aby neumožňovala recyklaci, dokud se tyto úlohy nedokončí. Případně můžete úlohy navrhovat pomocí bodového přístupu, při kterém je možné je snadno zastavit a po restartování výpočetní jednotky v nich pokračovat od bodu přerušení.

Četnost změn: Pokud se implementace nebo konfigurační úlohy často mění, může být potřeba zastavit výpočetní jednotku, která hostuje aktualizovaný kód, překonfigurovat tuto jednotku a znovu ji nasadit a pak ji restartovat. Tento proces bude také vyžadovat, aby se všechny ostatní úlohy ve stejné výpočetní jednotce zastavily, znovu nasadily a restartovaly.

Zabezpečení. Úlohy ve stejné výpočetní jednotce můžou sdílet stejný kontext zabezpečení a můžou mít přístup ke stejným prostředkům. Mezi úlohami musí existovat vysoký stupeň důvěryhodnosti, že některá úloha nepoškodí nebo jinak negativně neovlivní jiné úlohy. Zvýšení počtu úloh spouštěných ve výpočetní jednotce zvětšuje prostor pro útoky na jednotku. Každá úloha má jen takové zabezpečení jako úloha s nejvyšším ohrožením zabezpečení.

Odolnost proti chybám: Pokud u některé úlohy ve výpočetní jednotce dojde k chybě nebo k neobvyklému chování, může to ovlivnit ostatní úlohy, které se spouští ve stejné výpočetní jednotce. Pokud se například některou úlohu nepodaří správně spustit, může to způsobit selhání celé spouštěcí logiky výpočetní jednotky a zabránit spuštění dalších úloh ve stejné jednotce.

Kolize: Vyhýbejte se kolizím mezi úlohami, které soutěží o prostředky ve stejné výpočetní jednotce. V ideálním případě by měly úlohy, které sdílejí stejnou výpočetní jednotku, vykazovat různé charakteristiky využití prostředků. Ve stejné výpočetní jednotce by se tedy neměly nacházet třeba dvě úlohy, které jsou náročné na výpočetní výkon, nebo dvě úlohy, které využívají velké množství paměti. Kombinování úlohy náročné na výpočetní výkon s úlohou, která vyžaduje velké množství paměti, je ale funkční kombinace.

Poznámka:

Zvažte konsolidaci výpočetních prostředků pouze pro systém, který je v produkčním prostředí po určitou dobu, aby operátoři a vývojáři mohli systém monitorovat a vytvořit heat mapu , která identifikuje, jak jednotlivé úlohy používají různé prostředky. Pomocí této mapy se dají určit úlohy, které jsou vhodnými kandidáty pro sdílení výpočtových prostředků.

Složitost: Sloučení více úloh do jedné výpočetní jednotky zvyšuje složitost kódu v dané jednotce a následkem toho její testování, ladění a údržba můžou být obtížnější.

Stabilní logická architektura: Navrhujte a implementujte kód v jednotlivých úlohách tak, aby ho nebylo potřeba měnit, a to ani v případě, že se změní fyzické prostředí, ve kterém se příslušná úloha spouští.

Jiné strategie: Konsolidace výpočtových prostředků je jen jedním ze způsobů, jak snižovat náklady související se souběžným spouštěním více úloh. Zajištění efektivity tohoto přístupu vyžaduje pečlivé naplánování a monitorování. Jiné strategie můžou být vhodnější v závislosti na povaze úloh a na umístění uživatelů, kteří tyto úlohy spouštějí. Lepším řešením může být například funkční dekompozice zatížení (podle popisu v tématu Návod k dělení výpočtů).

Kdy se má tento model použít

Tento model se používá pro úlohy, které nejsou nákladově efektivní, když se spouštějí ve svých vlastních výpočetních jednotkách. Pokud je úloha po většinu času nečinná, může být spouštění této úlohy ve vyhrazené jednotce nákladné.

Tento model nemusí být vhodný pro úlohy provádějící kritické operace s odolností proti chybám nebo pro úlohy, které zpracovávají hodně citlivá nebo soukromá data a vyžadují svůj vlastní kontext zabezpečení. Tyto úlohy by se měly spouštět ve vlastním izolovaném prostředí v samostatné výpočetní jednotce.

Návrh úloh

Architekt by měl vyhodnotit způsob použití modelu konsolidace výpočetních prostředků v návrhu úloh k řešení cílů a principů zahrnutých v pilířích architektury Azure Well-Architected Framework. Příklad:

Pilíř Jak tento model podporuje cíle pilíře
Optimalizace nákladů se zaměřuje na udržení a zlepšení návratnosti vašich úloh. Tento model maximalizuje využití výpočetních prostředků tím, že se vyhne nevyužité zřízené kapacitě prostřednictvím agregace komponent nebo dokonce celých úloh ve fondu infrastruktury.

- CO:14 Konsolidace
Efektivita provozu pomáhá poskytovat kvalitu úloh prostřednictvím standardizovaných procesů a týmové soudržnosti. Konsolidace může vést k více homogenní výpočetní platformě, která může zjednodušit správu a pozorovatelnost, snížit různorodé přístupy k provozním úlohám a snížit množství potřebných nástrojů.

- OE:07 Monitorovací systém
- Návrh OE:10 Automatizace
Efektivita výkonu pomáhá vaší úloze efektivně splňovat požadavky prostřednictvím optimalizací škálování, dat a kódu. Konsolidace maximalizuje využití výpočetních prostředků pomocí volné kapacity uzlu a snižuje potřebu nadměrného zřízení. Velké (vertikálně škálované) výpočetní instance se často používají ve fondu zdrojů pro tyto infrastruktury.

- PE:02 Plánování kapacity
- PE:03 Výběr služeb

Stejně jako u jakéhokoli rozhodnutí o návrhu zvažte jakékoli kompromisy proti cílům ostatních pilířů, které by mohly být s tímto vzorem zavedeny.

Volby aplikační platformy

Tento model lze dosáhnout různými způsoby v závislosti na používané výpočetní službě. Podívejte se na následující ukázkové služby:

  • Aplikace Azure Service a Azure Functions: Nasaďte sdílené plány služby App Service, které představují infrastrukturu hostitelského serveru. Jednu nebo více aplikací je možné nakonfigurovat tak, aby běžely na stejných výpočetních prostředcích (nebo ve stejném plánu služby App Service).
  • Azure Container Apps: Nasaďte aplikace kontejnerů do stejných sdílených prostředí, zejména v situacích, kdy potřebujete spravovat související služby nebo potřebujete nasadit různé aplikace do stejné virtuální sítě.
  • Azure Kubernetes Service (AKS): AKS je infrastruktura hostování založená na kontejnerech, ve které je možné nakonfigurovat více aplikací nebo komponent aplikací tak, aby bylo možné spouštět společně umístěné ve stejných výpočetních prostředcích (uzlech) seskupené podle výpočetních požadavků, jako jsou požadavky na procesor nebo paměť (fondy uzlů).
  • Virtuální počítače: Nasadíte jednu sadu virtuálních počítačů pro všechny tenanty, které budou používat, aby se náklady na správu sdílely napříč tenanty. Virtual Machine Scale Sets je funkce, která podporuje správu sdílených prostředků, vyrovnávání zatížení a horizontální škálování virtuálních počítačů.

Při implementaci tohoto modelu můžou být relevantní také následující modely a pokyny: