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 datSprá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 implementaceDobrý 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. |
|
Zasílání zprávDistribuovaná 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í |