Způsoby návrhu v cloudu

Tyto způsoby návrhu jsou užitečné při sestavování spolehlivých, škálovatelných a zabezpečených aplikací v cloudu.

Každý vzor popisuje problém, ke kterému se vztahuje, důležité informace týkající se použití tohoto vzoru a příklad s využitím Microsoft Azure. Většina vzorů zahrnuje ukázky kódu nebo fragmenty kódu, které ukazují, jak implementovat vzor v Azure. Většina vzorů je ale relevantní pro jakýkoli distribuovaný systém, ať už hostovaný v Azure nebo na jiných cloudových platformách.

Cloudové úlohy jsou náchylné k pádům distribuovaného computingu. Mezi příklady fallacií návrhu cloudu patří:

  • Síť je spolehlivá.
  • Latence je nula.
  • Šířka pásma je nekonečná.
  • Síť je zabezpečená.
  • Topologie se nemění.
  • Existuje jeden správce.
  • Správa verzí součástí je jednoduchá.
  • Implementace pozorovatelnosti může být zpožděná.

Vzory návrhu neodstraňuje pojmy, jako jsou tyto, ale můžou pomoct zvýšit povědomí, kompenzace a zmírnění jejich rizik. Každý model cloudu má své vlastní kompromisy. Potřebujete věnovat pozornost tomu, proč vybíráte určitý vzor, než jak ho implementovat.

Výzvy spojené s vývojem pro cloud

Správa dat

Správa dat

Správa dat je klíčovým prvkem cloudových aplikací a ovlivňuje většinu atributů kvality. Data se obvykle hostuje v různých umístěních a na více serverech pro zajištění výkonu, škálovatelnosti nebo dostupnosti. To může představovat různé výzvy. Je například nutné zajistit konzistenci dat a data se musí obvykle synchronizovat napříč různými umístěními.

Návrh a implementace

Návrh a implementace

Dobrý návrh zahrnuje konzistenci a soudržnost v návrhu a nasazení součástí, udržovatelnost pro zjednodušení správy a vývoje a opakované použití komponent a subsystémů v jiných aplikacích a scénářích. Rozhodnutí přijatá během fáze návrhu a implementace významně ovlivňují kvalitu a celkové náklady na vlastnictví aplikací a služeb hostovaných v cloudu.

Ikona zasílání zpráv

Zasílání zpráv

Distribuovaná povaha cloudových aplikací vyžaduje infrastrukturu zasílání zpráv, která propojuje komponenty a služby, ideálně volně svázané s cílem maximalizovat škálovatelnost. Asynchronní zasílání zpráv je široce používáno a poskytuje mnoho výhod, ale přináší také výzvy, jako je řazení zpráv, správa otrávenějších zpráv, idempotenci a další.

Katalog vzorů

Vzor Shrnutí Kategorie
Ambassador Vytvoří služby pomocných rutin, které odesílají síťové požadavky jménem aplikace nebo služby uživatele. Návrh a implementace,
Efektivita provozu
Anti-Corruption Layer Implementuje adaptační vrstvu mezi moderní aplikací a systémem starší verze. Návrh a implementace,
Efektivita provozu
Asynchronní požadavek-odpověď Oddělte back-endové zpracování od front-endového hostitele – back-endové zpracování back-endu musí být asynchronní, ale front-end pořád potřebuje jasnou odpověď. Zasílání zpráv
Backends for Frontends Vytvoří samostatné back-endové služby pro konkrétní front-endové aplikace nebo rozhraní. Návrh a implementace
Bulkhead Izoluje prvky aplikace do fondů, takže pokud jeden selže, ostatní budou i nadále fungovat. Spolehlivost
Cache-Aside Na vyžádání načte data z úložiště dat do mezipaměti. Správa dat,
Efektivita výkonu
Choreografie Zajistěte si nezávislost na centrálním orchestrátoru a dejte každé službě na výběr, kdy a jak se zpracuje obchodní operace. Zasílání zpráv,
Efektivita výkonu
Circuit Breaker Zpracovává chyby, jejichž oprava při připojení ke vzdálené službě nebo prostředku může trvat různě dlouho. Spolehlivost
Kontrola deklarace identity Rozdělte velkou zprávu na kontrolu deklarace identity a datovou část, abyste zabránili zahlcení sběrnice zpráv. Zasílání zpráv
Compensating Transaction Vrátit zpět akce provedené sérii kroků, které společně definují operaci s konečnou konzistencí. Spolehlivost
Competing Consumers Umožňuje několika souběžným příjemcům zpracovávat zprávy přijaté ve stejném kanálu pro zasílání zpráv. Zasílání zpráv
Compute Resource Consolidation Konsoliduje několik úloh nebo operací do jedné výpočetní jednotky. Návrh a implementace
CQRS Odděluje operace, které načítají data, od operací, které aktualizují data, a to s využitím samostatných rozhraní. Správa dat,
Návrh a implementace,
Efektivita výkonu
Stampy nasazení Nasaďte několik nezávislých kopií aplikačních komponent, včetně úložišť dat. Spolehlivost,
Efektivita výkonu
Konfigurace úloh Edge Velký počet systémů a zařízení v obchodě může komplikovat konfiguraci úloh. Návrh a implementace
Event Sourcing Využívá úložiště s možností jenom přidávat pro záznam úplné posloupnosti událostí, které popisují akce s daty v doméně. Správa dat,
Efektivita výkonu
External Configuration Store Přesouvá informace o konfiguraci z balíčku pro nasazení aplikace do centralizovaného umístění. Návrh a implementace,
Efektivita provozu
Federated Identity Deleguje ověřování na externího zprostředkovatele identity. Zabezpečení
Gatekeeper Chrání aplikace a služby pomocí vyhrazené hostitelské instance, která slouží jako zprostředkovatel mezi klienty a aplikací nebo službou, ověřuje a upravuje požadavky a předává mezi nimi požadavky a data. Zabezpečení
Gateway Aggregation Používá bránu k agregaci několika jednotlivých požadavků do jednoho. Návrh a implementace,
Efektivita provozu
Gateway Offloading Přesměrovává zpracování sdílených nebo specializovaných funkcí služby na proxy brány. Návrh a implementace,
Efektivita provozu
Gateway Routing Směruje žádosti na několik služeb s využitím jednoho koncového bodu. Návrh a implementace,
Efektivita provozu
Geody Nasaďte back-endové služby do sady geografických uzlů, z nichž každý může obsloužit jakoukoli žádost klienta v libovolné oblasti. Spolehlivost,
Efektivita provozu
Health Endpoint Monitoring Implementuje v aplikaci funkční kontroly, ke kterým mají externí nástroje v pravidelných intervalech přístup prostřednictvím zveřejněných koncových bodů. Spolehlivost,
Efektivita provozu
Index Table Vytváří indexy přes pole v úložištích dat, na která často odkazují dotazy. Správa dat,
Efektivita výkonu
Leader Election Koordinuje akce prováděné kolekcí instancí spolupracujících úloh v distribuované aplikaci. Zvolí jednu instanci jako vedoucí a ta potom přijme zodpovědnost za správu ostatních instancí. Návrh a implementace,
Spolehlivost
Materialized View Generuje předem vyplněná zobrazení nad daty v jednom nebo několika úložištích dat v případě, že data nejsou pro požadované operace dotazů ideálně naformátovaná. Správa dat,
Efektivita provozu,
Efektivita výkonu
Pipes and Filters Rozdělí úlohu, která provádí komplexní zpracování, do řady samostatných prvků, které je možné využít znovu. Návrh a implementace,
Zasílání zpráv
Priority Queue Určuje prioritu požadavků odeslaných službám, aby se požadavky s vyšší prioritou přijímaly a zpracovávaly rychleji než požadavky s nižší prioritou. Zasílání zpráv,
Efektivita výkonu
Vydavatel/odběratel Umožňuje aplikaci oznamovat události několika příjemcům asynchronně, bez párování odesílatelů s příjemci. Zasílání zpráv
Queue-Based Load Leveling Použije frontu, která funguje jako vyrovnávací paměť mezi úlohou a službou, kterou vyvolá, pro ulehčení občasných velkých zátěží. Spolehlivost,
Zasílání zpráv,
Odolnost,
Efektivita výkonu
Model omezení rychlosti Omezení vzorce, které vám pomůžou vyhnout se nebo minimalizovat chyby omezování související s těmito omezeními omezování a které vám pomůžou přesněji předpovídat propustnost. Spolehlivost
Opakovat Umožňuje aplikaci řešit předpokládaná dočasná selhání při pokusu o připojení k prostředku služby nebo síťovému prostředku, a to transparentním opakováním operace, která původně selhala. Spolehlivost
Sága Správa konzistence dat napříč mikroslužbami ve scénářích distribuovaných transakcí Saga je posloupnost transakcí, které aktualizují každou službu a publikují zprávu nebo událost pro aktivaci dalšího kroku transakce. Zasílání zpráv
Scheduler Agent Supervisor Koordinuje sadu akcí napříč distribuovanou sadu služeb a dalších vzdálených prostředků. Zasílání zpráv,
Spolehlivost
Sequential Convoy Zpracovává sadu souvisejících zpráv v definovaném pořadí, aniž by docházelo k blokování zpracování dalších skupin zpráv. Zasílání zpráv
Sharding Rozděluje úložiště dat do sady horizontálních oddílů. Správa dat,
Efektivita výkonu
Sidecar Nasazuje komponenty aplikace do samostatného procesu nebo kontejneru s cílem poskytnout izolaci a zapouzdření. Návrh a implementace,
Efektivita provozu
Static Content Hosting Nasazuje statický obsah do služby cloudového úložiště, která ho může doručit přímo klientovi. Návrh a implementace,
Správa dat,
Efektivita výkonu
Strangler Fig Přírůstkově migruje starší verzi systému, a to postupným nahrazením jednotlivých konkrétních funkcí novými aplikacemi a službami. Návrh a implementace,
Efektivita provozu
Omezování Řídí spotřebu prostředků používaných instancí aplikace, jednotlivým tenantem nebo celou služby. Spolehlivost,
Efektivita výkonu
Valet Key Používá token nebo klíč, který klientům poskytuje omezený přímý přístup ke konkrétnímu prostředku nebo službě. Správa dat,
Zabezpečení