Způsoby návrhu v clouduCloud Design Patterns

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.These design patterns are useful for building reliable, scalable, secure applications in the cloud.

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.Each pattern describes the problem that the pattern addresses, considerations for applying the pattern, and an example based on Microsoft Azure. Většina vzorů zahrnuje ukázky nebo fragmenty kódu, které ukazují, jak tento vzor implementovat v Azure.Most of the patterns include code samples or snippets that show how to implement the pattern on Azure. Většina vzorů je ale relevantní pro libovolný distribuovaný systém bez ohledu na to, jestli je hostovaný v Azure nebo na jiných cloudových platformách.However, most of the patterns are relevant to any distributed system, whether hosted on Azure or on other cloud platforms.

Výzvy spojené s vývojem pro cloudChallenges in cloud development

Availability

DostupnostAvailability

Dostupnost je podíl času, po který je systém je funkční a běží, a obvykle se měří v procentech doby provozu.Availability is the proportion of time that the system is functional and working, usually measured as a percentage of uptime. Může být ovlivněna chybami systému, problémy s infrastrukturou, útoky se zlými úmysly a zatížením systému.It can be affected by system errors, infrastructure problems, malicious attacks, and system load. Cloudové aplikace obvykle uživatelům poskytují smlouvu o úrovni služeb (SLA), takže aplikace musí být navržené pro zajištění maximální dostupnosti.Cloud applications typically provide users with a service level agreement (SLA), so applications must be designed to maximize availability.

Data Management

Správa datData Management

Správa dat je klíčovým prvkem cloudových aplikací a ovlivňuje většinu atributů kvality.Data management is the key element of cloud applications, and influences most of the quality attributes. Z důvodů, jako je například výkon, škálovatelnost nebo dostupnost, se data obvykle hostují v různých umístěních a napříč několika servery. To s sebou může nést řadu problémů.Data is typically hosted in different locations and across multiple servers for reasons such as performance, scalability or availability, and this can present a range of challenges. Je například nutné zajistit konzistenci dat a data se musí obvykle synchronizovat napříč různými umístěními.For example, data consistency must be maintained, and data will typically need to be synchronized across different locations.

Design and Implementation

Návrh a implementaceDesign and Implementation

Dobrý návrh zahrnuje faktory, jako je konzistence a koherence návrhu a nasazení komponent, udržovatelnost pro zjednodušení správy a vývoje a možnost opakovaného využití, která umožňuje využití komponent a subsystémů v jiných aplikacích a scénářích.Good design encompasses factors such as consistency and coherence in component design and deployment, maintainability to simplify administration and development, and reusability to allow components and subsystems to be used in other applications and in other scenarios. Rozhodnutí ve fázi návrhu a implementace mají velký dopad na kvalitu a celkové náklady na vlastnictví služeb a aplikací hostovaných v cloudu.Decisions made during the design and implementation phase have a huge impact on the quality and the total cost of ownership of cloud hosted applications and services.

Messaging

Zasílání zprávMessaging

Distribuovaná povaha cloudových aplikací vyžaduje infrastrukturu zasílání zpráv, která připojuje komponenty a služby, a to v ideálním případě volně, aby se maximalizovala škálovatelnost.The distributed nature of cloud applications requires a messaging infrastructure that connects the components and services, ideally in a loosely coupled manner in order to maximize scalability. Často se využívá asynchronní zasílání zpráv, které poskytuje řadu výhod, ale přináší také problémy, jako je například řazení zpráv, správa nezpracovatelných zpráv, idempotence a další.Asynchronous messaging is widely used, and provides many benefits, but also brings challenges such as the ordering of messages, poison message management, idempotency, and more

Management and Monitoring

Správa a monitorováníManagement and Monitoring

Cloudové aplikace běží ve vzdáleném datovém centru, u kterého nemáte úplnou kontrolu nad infrastrukturou a v některých případech ani nad operačním systémem.Cloud applications run in in a remote datacenter where you do not have full control of the infrastructure or, in some cases, the operating system. Z tohoto důvodu může být správa a monitorování obtížnější než u místního nasazení.This can make management and monitoring more difficult than an on-premises deployment. Aplikace musí zveřejnit běhové informace, které správci a operátoři mohou použít ke správě a sledování systému a také podpoře měnících se obchodních požadavků a vlastního nastavení bez nutnosti aplikaci zastavit nebo nasadit znovu.Applications must expose runtime information that administrators and operators can use to manage and monitor the system, as well as supporting changing business requirements and customization without requiring the application to be stopped or redeployed.

Performance and Scalability

Výkon a škálovatelnostPerformance and Scalability

Výkon je indikací schopnosti systému na provedení libovolné akce v daném časovém intervalu, zatímco škálovatelnost je schopnost systému zpracovat nárůst zatížení bez dopadu na výkon nebo snadno navýšit dostupné prostředky.Performance is an indication of the responsiveness of a system to execute any action within a given time interval, while scalability is ability of a system either to handle increases in load without impact on performance or for the available resources to be readily increased. Cloudové aplikace se obvykle setkávají s různorodými úlohami a špičkami v aktivitě.Cloud applications typically encounter variable workloads and peaks in activity. Jejich předpovídání, zejména v případě více tenantů, je téměř nemožné.Predicting these, especially in a multi-tenant scenario, is almost impossible. Aplikace by místo toho měly být schopné v rámci omezení horizontálně navýšit kapacitu a zajistit tak špičky v poptávce a po snížení poptávky kapacitu zase snížit.Instead, applications should be able to scale out within limits to meet peaks in demand, and scale in when demand decreases. Škálovatelnost se netýká jenom výpočetních instancí, ale i dalších prvků, jako jsou úložiště dat, infrastruktura zasílání zpráv a další.Scalability concerns not just compute instances, but other elements such as data storage, messaging infrastructure, and more.

Resiliency

OdolnostResiliency

Odolnost je schopnost systému elegantně zpracovat selhání a zotavit se z nich.Resiliency is the ability of a system to gracefully handle and recover from failures. Povaha hostování v cloudu, kdy aplikace jsou často víceklientské, používají služby sdílené platformy, vzájemně soupeří o prostředky a šířky pásma, komunikují přes internet a spouštějí se na běžně dostupném hardwaru, znamená vyšší pravděpodobnost, že dojde k přechodným i trvalým chybám.The nature of cloud hosting, where applications are often multi-tenant, use shared platform services, compete for resources and bandwidth, communicate over the Internet, and run on commodity hardware means there is an increased likelihood that both transient and more permanent faults will arise. Pro zajištění odolnosti je proto nutná detekce selhání a efektivní a rychlé obnovení.Detecting failures, and recovering quickly and efficiently, is necessary to maintain resiliency.

Security

ZabezpečeníSecurity

Zabezpečení je schopnost systému zabránit škodlivým nebo náhodným akcím mimo navržený způsob využití a zabránit zveřejnění nebo ztrátě informací.Security is the capability of a system to prevent malicious or accidental actions outside of the designed usage, and to prevent disclosure or loss of information. Cloudové aplikace jsou zveřejněné na internetu vně důvěryhodných místních hranic, jsou často otevřené pro veřejnost a mohou obsluhovat nedůvěryhodné uživatele.Cloud applications are exposed on the Internet outside trusted on-premises boundaries, are often open to the public, and may serve untrusted users. Aplikace musí být navrženy a nasazeny způsobem, který je chrání před útoky se zlými úmysly, omezuje přístup jenom na schválené uživatele a chrání důvěrné osobní údaje.Applications must be designed and deployed in a way that protects them from malicious attacks, restricts access to only approved users, and protects sensitive data.

Katalog vzorůCatalog of patterns

VzorPattern SouhrnSummary
AmbassadorAmbassador Vytvoří služby pomocných rutin, které odesílají síťové požadavky jménem aplikace nebo služby uživatele.Create helper services that send network requests on behalf of a consumer service or application.
Anti-Corruption LayerAnti-Corruption Layer Implementuje adaptační vrstvu mezi moderní aplikací a systémem starší verze.Implement a façade or adapter layer between a modern application and a legacy system.
Backends for FrontendsBackends for Frontends Vytvoří samostatné back-endové služby pro konkrétní front-endové aplikace nebo rozhraní.Create separate backend services to be consumed by specific frontend applications or interfaces.
BulkheadBulkhead Izoluje prvky aplikace do fondů, takže pokud jeden selže, ostatní budou i nadále fungovat.Isolate elements of an application into pools so that if one fails, the others will continue to function.
Cache-AsideCache-Aside Na vyžádání načte data z úložiště dat do mezipaměti.Load data on demand into a cache from a data store
Circuit BreakerCircuit Breaker Zpracovává chyby, jejichž oprava při připojení ke vzdálené službě nebo prostředku může trvat různě dlouho.Handle faults that might take a variable amount of time to fix when connecting to a remote service or resource.
CQRSCQRS Odděluje operace, které načítají data, od operací, které aktualizují data, a to s využitím samostatných rozhraní.Segregate operations that read data from operations that update data by using separate interfaces.
Compensating TransactionCompensating Transaction Vrátit zpět akce provedené sérii kroků, které společně definují operaci s konečnou konzistencí.Undo the work performed by a series of steps, which together define an eventually consistent operation.
Competing ConsumersCompeting 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.Enable multiple concurrent consumers to process messages received on the same messaging channel.
Compute Resource ConsolidationCompute Resource Consolidation Konsoliduje několik úloh nebo operací do jedné výpočetní jednotky.Consolidate multiple tasks or operations into a single computational unit
Event SourcingEvent 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ě.Use an append-only store to record the full series of events that describe actions taken on data in a domain.
External Configuration StoreExternal Configuration Store Přesouvá informace o konfiguraci z balíčku pro nasazení aplikace do centralizovaného umístění.Move configuration information out of the application deployment package to a centralized location.
Federated IdentityFederated Identity Deleguje ověřování na externího zprostředkovatele identity.Delegate authentication to an external identity provider.
GatekeeperGatekeeper 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.Protect applications and services by using a dedicated host instance that acts as a broker between clients and the application or service, validates and sanitizes requests, and passes requests and data between them.
Gateway AggregationGateway Aggregation Používá bránu k agregaci několika jednotlivých požadavků do jednoho.Use a gateway to aggregate multiple individual requests into a single request.
Gateway OffloadingGateway Offloading Přesměrovává zpracování sdílených nebo specializovaných funkcí služby na proxy brány.Offload shared or specialized service functionality to a gateway proxy.
Gateway RoutingGateway Routing Směruje žádosti na několik služeb s využitím jednoho koncového bodu.Route requests to multiple services using a single endpoint.
Health Endpoint MonitoringHealth 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ů.Implement functional checks in an application that external tools can access through exposed endpoints at regular intervals.
Index TableIndex Table Vytváří indexy přes pole v úložištích dat, na která často odkazují dotazy.Create indexes over the fields in data stores that are frequently referenced by queries.
Leader ElectionLeader 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í.Coordinate the actions performed by a collection of collaborating task instances in a distributed application by electing one instance as the leader that assumes responsibility for managing the other instances.
Materialized ViewMaterialized 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á.Generate prepopulated views over the data in one or more data stores when the data isn't ideally formatted for required query operations.
Pipes and FiltersPipes and Filters Rozdělí úlohu, která provádí komplexní zpracování, do řady samostatných prvků, které je možné využít znovu.Break down a task that performs complex processing into a series of separate elements that can be reused.
Priority QueuePriority 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.Prioritize requests sent to services so that requests with a higher priority are received and processed more quickly than those with a lower priority.
Vydavatel/odběratelPublisher/Subscriber Umožňuje aplikaci oznamovat události několika příjemcům asynchronně, bez párování odesílatelů s příjemci.Enable an application to announce events to multiple interested consumers aynchronously, without coupling the senders to the receivers.
Queue-Based Load LevelingQueue-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ěží.Use a queue that acts as a buffer between a task and a service that it invokes in order to smooth intermittent heavy loads.
RetryRetry 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.Enable an application to handle anticipated, temporary failures when it tries to connect to a service or network resource by transparently retrying an operation that's previously failed.
Scheduler Agent SupervisorScheduler Agent Supervisor Koordinuje sadu akcí napříč distribuovanou sadu služeb a dalších vzdálených prostředků.Coordinate a set of actions across a distributed set of services and other remote resources.
ShardingSharding Rozděluje úložiště dat do sady horizontálních oddílů.Divide a data store into a set of horizontal partitions or shards.
SidecarSidecar Nasazuje komponenty aplikace do samostatného procesu nebo kontejneru s cílem poskytnout izolaci a zapouzdření.Deploy components of an application into a separate process or container to provide isolation and encapsulation.
Static Content HostingStatic Content Hosting Nasazuje statický obsah do služby cloudového úložiště, která ho může doručit přímo klientovi.Deploy static content to a cloud-based storage service that can deliver them directly to the client.
StranglerStrangler 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.Incrementally migrate a legacy system by gradually replacing specific pieces of functionality with new applications and services.
OmezováníThrottling Řídí spotřebu prostředků používaných instancí aplikace, jednotlivým tenantem nebo celou služby.Control the consumption of resources used by an instance of an application, an individual tenant, or an entire service.
Valet KeyValet Key Používá token nebo klíč, který klientům poskytuje omezený přímý přístup ke konkrétnímu prostředku nebo službě.Use a token or key that provides clients with restricted direct access to a specific resource or service.