Designmönster för molnetCloud Design Patterns

De här designmönstren är användbara när du vill skapa tillförlitliga, skalbara och säkra program i molnet.These design patterns are useful for building reliable, scalable, secure applications in the cloud.

Varje mönster beskriver problemet som mönstret är avsett att hantera, överväganden när du ska tillämpa mönstret och ett exempel baserat på Microsoft Azure.Each pattern describes the problem that the pattern addresses, considerations for applying the pattern, and an example based on Microsoft Azure. De flesta av mönstren innehåller kodexempel eller kodstycken som visar hur du implementerar mönstret i Azure.Most of the patterns include code samples or snippets that show how to implement the pattern on Azure. De flesta mönster gäller dock för alla typer av distribuerade system, oavsett om det är i Azure eller någon annan molnplattform.However, most of the patterns are relevant to any distributed system, whether hosted on Azure or on other cloud platforms.

Utmaningar inom molnutvecklingChallenges in cloud development

Availability

TillgänglighetAvailability

Tillgängligheten är andelen av tiden som systemet fungerar som det ska, och mäts normalt i procent av drifttiden.Availability is the proportion of time that the system is functional and working, usually measured as a percentage of uptime. Den kan påverkas av systemfel, infrastrukturproblem, skadliga attacker och belastningar i systemet.It can be affected by system errors, infrastructure problems, malicious attacks, and system load. Molnprogram tillhandahåller vanligtvis användarna ett servicenivåavtal (SLA), så program måste utformas för att maximera tillgängligheten.Cloud applications typically provide users with a service level agreement (SLA), so applications must be designed to maximize availability.

Data Management

DatahanteringData Management

Datahanteringen har avgörande betydelse för molnprogram och påverkar de flesta kvalitetsegenskaper.Data management is the key element of cloud applications, and influences most of the quality attributes. Data lagras normalt på olika platser och på flera servrar av skäl som prestanda, skalbarhet och tillgänglighet, och det här kan innebära ett mängd olika utmaningar.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. Till exempel måste data hållas konsekventa, och data behöver ofta synkroniseras mellan olika platser.For example, data consistency must be maintained, and data will typically need to be synchronized across different locations.

Design and Implementation

Design och implementeringDesign and Implementation

I en bra design ingår faktorer som en konsekvent design och distribution av komponenter, underhållsfunktioner för en enklare administration och utveckling samt återanvändning så att komponenter och delsystem kan användas i andra program och andra scenarier.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. Beslut som fattas under design- och implementeringsfasen har en stor inverkan på kvaliteten och den totala ägandekostnaden för program och tjänster som körs i molnet.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

MeddelandetjänsterMessaging

Eftersom molnprogram är distribuerade till sin natur krävs en infrastruktur för meddelanden som ansluter komponenter och tjänster, helst på ett fritt sätt som maximerar skalbarheten.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. Asynkrona meddelanden används ofta och har många fördelar, men de medför även utmaningar som hur meddelanden sorteras, hantering av skadliga meddelanden och idempotens.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

Hantering och övervakningManagement and Monitoring

Molntillämpningar körs i ett fjärranslutet datacenter där du inte har full kontroll över infrastrukturen, eller i vissa fall över operativsystemet.Cloud applications run in a remote datacenter where you do not have full control of the infrastructure or, in some cases, the operating system. Det är gör det svårare med hantering och övervakning än i en lokal distribution.This can make management and monitoring more difficult than an on-premises deployment. Program måste exponera körtidsinformation som administratörer och ansvariga kan använda för att hantera och övervaka systemet, och samtidigt måste föränderliga affärsbehov hanteras utan att programmet stoppas eller omdistribueras.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

Prestanda och skalbarhetPerformance and Scalability

Prestanda är en indikation på svarstiden för olika åtgärder i systemet under ett visst tidsintervall, medan skalbarheten är möjligheten att antingen hantera en ökad belastning utan att prestanda påverkas eller att snabbt kunna utöka mängden tillgängliga resurser.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. I molnprogram är det vanligt med varierande arbetsbelastningar och plötsliga aktivitetstoppar.Cloud applications typically encounter variable workloads and peaks in activity. Det är nästan omöjligt att förutsäga dessa, särskilt om det gäller flera klientorganisationer.Predicting these, especially in a multitenant scenario, is almost impossible. I stället bör program gå att kunna skala upp inom gränserna för att hantera aktivitetstoppar, och sedan skalas ner när resursbehovet är mindre.Instead, applications should be able to scale out within limits to meet peaks in demand, and scale in when demand decreases. Skalbarheten gäller inte bara beräkningsinstanser, utan även andra element som datalagring och meddelandeinfrastrukturen.Scalability concerns not just compute instances, but other elements such as data storage, messaging infrastructure, and more.

Resiliency

ElasticitetResiliency

Elasticitet är möjligheten för ett system att hantera och återställa fel på ett bra sätt.Resiliency is the ability of a system to gracefully handle and recover from failures. Molnprogram har ofta flera klientorganisationer, använder delade plattformstjänster, konkurrerar om resurser och bandbredd, kommunicerar via Internet och körs på vanlig maskinvara, så risken för både tillfälliga och permanenta fel är större.The nature of cloud hosting, where applications are often multitenant, 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. Därför är det viktigt att snabbt och effektivt kunna identifiera och återställa fel.Detecting failures, and recovering quickly and efficiently, is necessary to maintain resiliency.

Security

SäkerhetSecurity

Säkerheten i systemet handlar om att förhindra skadliga eller oavsiktliga åtgärder utanför den avsedda användningen förhindra att information sprids eller går förlorad.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. Molnprogram är utsatta för risk på internet utanför de betrodda lokala gränserna, ofta är öppna för allmänheten och kan användas av opålitliga användare.Cloud applications are exposed on the Internet outside trusted on-premises boundaries, are often open to the public, and may serve untrusted users. Programmen måste utformas och distribueras på ett sätt som skyddar mot skadliga attacker, begränsar åtkomsten till endast godkända användare och skyddar känsliga data.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 med mönsterCatalog of patterns

MönsterPattern SammanfattningSummary
AmbassadörAmbassador Skapa hjälpkomponenttjänster som skickar nätverksförfrågningar åt en konsumenttjänst eller ett konsumentprogram.Create helper services that send network requests on behalf of a consumer service or application.
Skyddande lagerAnti-Corruption Layer Implementera en fasad eller adapterlager mellan ett modernt program och ett äldre system.Implement a façade or adapter layer between a modern application and a legacy system.
Asynkront begäransvarAsynchronous Request-Reply Frikoppla serverdelsbearbetning från en klientdelsvärd, där serverdelsbearbetning måste vara asynkron, men klientdelen fortfarande behöver ett klart svar.Decouple backend processing from a frontend host, where backend processing needs to be asynchronous, but the frontend still needs a clear response.
Serverdelar för klienterBackends for Frontends Skapa separata serverdelstjänster som ska förbrukas av specifika program eller gränssnitt i klientdelen.Create separate backend services to be consumed by specific frontend applications or interfaces.
BulkheadBulkhead Isolera element i ett program i pooler så att de andra fortfarande fungerar om det skulle uppstå ett fel i ett element.Isolate elements of an application into pools so that if one fails, the others will continue to function.
CachereserveraCache-Aside Läs in data på begäran till en cache från ett datalager.Load data on demand into a cache from a data store
KoreografiChoreography Låt varje tjänst bestämma när och hur en affärsåtgärd bearbetas i stället för att vara beroende av en central initierare.Let each service decide when and how a business operation is processed, instead of depending on a central orchestrator.
KretsbrytareCircuit Breaker Hantera fel som kan ta varierande lång tid att lösa vid anslutning till en fjärrtjänst eller fjärresurs.Handle faults that might take a variable amount of time to fix when connecting to a remote service or resource.
AnspråkskontrollClaim Check Dela upp ett stort meddelande till en anspråkskontroll och en nyttolast för att undvika att överbelasta en meddelandebuss.Split a large message into a claim check and a payload to avoid overwhelming a message bus.
Kompenserande transaktionCompensating Transaction Ångra arbete som utförts i en serie steg och som tillsammans eventuellt definierar en konsekvent åtgärd.Undo the work performed by a series of steps, which together define an eventually consistent operation.
Konkurrerande konsumenterCompeting Consumers Gör så att flera samtidiga användare kan bearbeta meddelanden som tas emot på samma meddelandekanal.Enable multiple concurrent consumers to process messages received on the same messaging channel.
Konsolidering av beräkningsresurserCompute Resource Consolidation Konsolidera flera aktiviteter eller åtgärder i en enda beräkningsenhet.Consolidate multiple tasks or operations into a single computational unit
CQRSCQRS Åtskilj åtgärder som läser data från åtgärder som uppdaterar data via separata gränssnitt.Segregate operations that read data from operations that update data by using separate interfaces.
HändelsekällorEvent Sourcing Ett datalager med endast tilläggning används till att registrera en hel serie händelser som beskriver åtgärder på data i domänen.Use an append-only store to record the full series of events that describe actions taken on data in a domain.
Externt konfigurationslagerExternal Configuration Store Flytta konfigurationsinformation utanför programpaketet för distribution till en central plats.Move configuration information out of the application deployment package to a centralized location.
Federerade identiteterFederated Identity Delegera autentiseringen till en extern identitetsleverantör.Delegate authentication to an external identity provider.
GatekeeperGatekeeper Skydda program och tjänster med hjälp av en dedikerad värdinstans som fungerar som koordinator mellan klienter och programmet eller tjänsten, validerar och åtgärdar förfrågningar och skickar förfrågningar och data mellan dem.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-samlingGateway Aggregation Använd en gateway för att slå samman flera enskilda förfrågningar till en enda begäran.Use a gateway to aggregate multiple individual requests into a single request.
Gateway-avlastningGateway Offloading Avlasta delade eller specialiserade tjänstfunktioner till en gateway-proxy.Offload shared or specialized service functionality to a gateway proxy.
Gateway-routningGateway Routing Dirigera förfrågningar till flera tjänster med hjälp av en enda slutpunkt.Route requests to multiple services using a single endpoint.
Övervakning av slutpunktshälsaHealth Endpoint Monitoring Implementera funktionskontroller i ett program som externa verktyg kan komma åt via exponerade slutpunkter med jämna mellanrum.Implement functional checks in an application that external tools can access through exposed endpoints at regular intervals.
IndextabellIndex Table Skapa index över fälten i datalager som ofta refereras i frågor.Create indexes over the fields in data stores that are frequently referenced by queries.
Val av ledareLeader Election Samordna de åtgärder som utförs av en samling samverkande uppgiftsinstanser i ett distribuerat program genom att välja en instans som ska ansvara för att hantera de andra instanserna.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.
Materialiserad vyMaterialized View Generera förifyllda vyer över data i ett eller flera datalager när data inte har ett optimalt format för de frågeåtgärder som ska utföras.Generate prepopulated views over the data in one or more data stores when the data isn't ideally formatted for required query operations.
Rör och filterPipes and Filters Dela upp en aktivitet som utför komplex bearbetningen i ett antal olika element som kan återanvändas.Break down a task that performs complex processing into a series of separate elements that can be reused.
PrioritetsköPriority Queue Prioritera förfrågningar som skickas till tjänster så att förfrågningar med högre prioritet tas emot och bearbetas snabbare än de med lägre prioritet.Prioritize requests sent to services so that requests with a higher priority are received and processed more quickly than those with a lower priority.
Utgivare/prenumerantPublisher/Subscriber Aktivera ett program för att informera flera intresserade kunder om evenemang asynkront, utan att koppla avsändarna till mottagarna.Enable an application to announce events to multiple interested consumers asynchronously, without coupling the senders to the receivers.
Köbaserad belastningsutjämningQueue-Based Load Leveling Använd en kö som fungerar som en buffert mellan en aktivitet och en tjänst den anropar för att utjämna återkommande tunga belastningar.Use a queue that acts as a buffer between a task and a service that it invokes in order to smooth intermittent heavy loads.
Försök igenRetry Gör så att ett program kan hantera förväntade, tillfälligt fel vid försök att ansluta till en tjänst eller en nätverksresurs, genom att transparent försöka utföra den misslyckade åtgärden igen.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övervakareScheduler Agent Supervisor Samordna en uppsättning åtgärder i en distribuerad uppsättning tjänster och andra fjärranslutna resurser.Coordinate a set of actions across a distributed set of services and other remote resources.
Horisontell partitioneringSharding Dela upp ett datalager i en uppsättning horisontella partitioner eller delar.Divide a data store into a set of horizontal partitions or shards.
SidovagnSidecar Distribuera komponenter i ett program i en separat process eller container för att ge isolering och inkapsling.Deploy components of an application into a separate process or container to provide isolation and encapsulation.
Värddator för statiskt innehållStatic Content Hosting Distribuera statiskt innehåll till en molnbaserad lagringstjänst som kan leverera innehållet direkt till klienten.Deploy static content to a cloud-based storage service that can deliver them directly to the client.
StranglerStrangler Migrera ett äldre system stegvis genom att gradvis ersätta specifika delar av funktionerna med nya program och tjänster.Incrementally migrate a legacy system by gradually replacing specific pieces of functionality with new applications and services.
BegränsningThrottling Begränsa förbrukningen av resurser i en instans av ett program, en enskild klientorganisation eller i hela tjänsten.Control the consumption of resources used by an instance of an application, an individual tenant, or an entire service.
Valet-nyckelValet Key Använd en token eller nyckel som ger klienter begränsad direktåtkomst till en specifik resurs eller tjänst.Use a token or key that provides clients with restricted direct access to a specific resource or service.