CloudentwurfsmusterCloud Design Patterns

Diese Entwurfsmuster können Ihnen dabei helfen, zuverlässige, skalierbare und sichere Anwendungen in der Cloud zu erstellen.These design patterns are useful for building reliable, scalable, secure applications in the cloud.

Für jedes Muster werden das durch das Muster gelöste Problem, Überlegungen zum Anwenden des Musters und ein Beispiel auf der Grundlage von Microsoft Azure beschrieben.Each pattern describes the problem that the pattern addresses, considerations for applying the pattern, and an example based on Microsoft Azure. Die meisten der Muster enthalten Codebeispiele oder -ausschnitte, die die Implementierung des Musters in Azure veranschaulichen.Most of the patterns include code samples or snippets that show how to implement the pattern on Azure. Der Großteil der Muster ist jedoch für alle verteilten Systeme relevant, unabhängig davon, ob sie in Azure oder auf anderen Cloudplattformen gehostet werden.However, most of the patterns are relevant to any distributed system, whether hosted on Azure or on other cloud platforms.

Herausforderungen bei der CloudentwicklungChallenges in cloud development

Availability

VerfügbarkeitAvailability

Die Verfügbarkeit ist der Anteil der Zeit, während dessen das System funktionsfähig und in Betrieb ist. Sie wird in der Regel als Prozentsatz der Betriebszeit gemessen.Availability is the proportion of time that the system is functional and working, usually measured as a percentage of uptime. Die Verfügbarkeit kann durch Systemfehler, Infrastrukturprobleme, böswillige Angriffe und die Systemauslastung beeinflusst werden.It can be affected by system errors, infrastructure problems, malicious attacks, and system load. Cloudanwendungen bieten Benutzern in der Regel eine Vereinbarung zum Servicelevel (SLA). Anwendungen müssen daher zur Maximierung der Verfügbarkeit konzipiert werden.Cloud applications typically provide users with a service level agreement (SLA), so applications must be designed to maximize availability.

Data management

DatenverwaltungData Management

Die Datenverwaltung ist das wichtigste Element von Cloudanwendungen und wirkt sich auf die meisten Qualitätsattribute aus.Data management is the key element of cloud applications, and influences most of the quality attributes. Meist werden Daten aus Gründen der Leistung, Skalierbarkeit oder Verfügbarkeit an verschiedenen Speicherorten und auf mehreren Servern gehostet, und dies kann eine ganze Reihe von Herausforderungen mit sich bringen.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. Beispielsweise muss die Konsistenz der Daten aufrechterhalten werden, und normalerweise müssen Daten zwischen unterschiedlichen Speicherorten synchronisiert werden.For example, data consistency must be maintained, and data will typically need to be synchronized across different locations.

Design and implementation

Entwurf und ImplementierungDesign and Implementation

Ein guter Entwurf berücksichtigt Faktoren wie Konsistenz und Kohärenz im Komponentenentwurf und in der Bereitstellung, Wartbarkeit zur Vereinfachung der Verwaltung und Entwicklung sowie Wiederverwendbarkeit, um die Verwendung von Komponenten und Subsystemen in anderen Anwendungen und Szenarien zu ermöglichen.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. Während der Entwurfs- und Implementierungsphase getroffene Entscheidungen haben großen Einfluss auf die Qualität und die Gesamtkosten von in der Cloud gehosteten Anwendungen und Diensten.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

NachrichtenMessaging

Die verteilte Struktur von Cloudanwendungen erfordert eine Messaginginfrastruktur, die die Komponenten und Dienste – idealerweise lose gekoppelt – miteinander verbindet, um die Skalierbarkeit zu maximieren.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. Asynchrones Messaging ist weit verbreitet und bietet viele Vorteile, beinhaltet aber auch Herausforderungen, beispielsweise die Reihenfolge von Nachrichten, die Verwaltung von nicht verarbeitbaren Nachrichten, Idempotenz und vieles mehr.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

Verwaltung und ÜberwachungManagement and Monitoring

Cloudanwendungen werden in einem Remoterechenzentrum ausgeführt, in dem Sie keine vollständige Kontrolle über die Infrastruktur oder – in manchen Fällen – das Betriebssystem haben.Cloud applications run in a remote datacenter where you do not have full control of the infrastructure or, in some cases, the operating system. Die Verwaltung und Überwachung kann daher schwieriger sein als bei einer lokalen Bereitstellung.This can make management and monitoring more difficult than an on-premises deployment. Anwendungen müssen Laufzeitinformationen verfügbar machen, die Administratoren und Betreiber zum Verwalten und Überwachen des Systems verwenden können. Zudem müssen sie sich ändernde Geschäftsanforderungen und Anpassungen unterstützen, ohne dass die Anwendung beendet oder erneut bereitgestellt werden muss.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

Leistung und SkalierbarkeitPerformance and Scalability

Die Leistung gibt Aufschluss über die Reaktionsfähigkeit eines Systems, d.h. seine Fähigkeit, alle Aktionen innerhalb eines bestimmten Zeitintervalls auszuführen. Die Skalierbarkeit ist dagegen die Fähigkeit eines Systems, einen Anstieg der Last ohne Auswirkungen auf die Leistung zu bewältigen oder die Anzahl verfügbarer Ressourcen schnell und problemlos zu erhöhen.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. Bei Cloudanwendungen treten in der Regel variable Arbeitsauslastungen und Aktivitätsspitzen auf.Cloud applications typically encounter variable workloads and peaks in activity. Diese vorherzusagen, ist insbesondere in einem Szenario mit mehreren Mandanten nahezu unmöglich.Predicting these, especially in a multitenant scenario, is almost impossible. Stattdessen sollten sich Anwendungen innerhalb der jeweiligen Grenzen je nach Bedarf auf- und abskalieren lassen.Instead, applications should be able to scale out within limits to meet peaks in demand, and scale in when demand decreases. Die Skalierbarkeit betrifft nicht nur Compute-Instanzen, sondern auch andere Elemente wie den Datenspeicher, die Messaginginfrastruktur usw.Scalability concerns not just compute instances, but other elements such as data storage, messaging infrastructure, and more.

Resiliency

ResilienzResiliency

Die Resilienz ist die Fähigkeit eines Systems, Fehler ordnungsgemäß zu behandeln und nach Fehlern ordnungsgemäß wiederhergestellt werden zu können.Resiliency is the ability of a system to gracefully handle and recover from failures. Aufgrund des Funktionsprinzips von Cloudhosting, bei dem Anwendungen oft mehrinstanzenfähig sind, gemeinsame Plattformdienste nutzen, um Ressourcen und Bandbreite konkurrieren, über das Internet kommunizieren und auf Standardhardware ausgeführt werden, ist die Wahrscheinlichkeit höher, dass sowohl vorübergehende als auch mehr permanente Fehler auftreten.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. Um die Resilienz sicherzustellen, sind eine schnelle und effiziente Fehlererkennung sowie Wiederherstellung erforderlich.Detecting failures, and recovering quickly and efficiently, is necessary to maintain resiliency.

Security

SecuritySecurity

Die Sicherheit ist die Fähigkeit eines Systems, böswillige oder unbeabsichtigte Aktionen, die nicht dem Verwendungszweck des Systems entsprechen, sowie die Offenlegung oder den Verlust von Informationen zu verhindern.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. Cloudanwendungen werden im Internet außerhalb vertrauenswürdiger lokaler Grenzen verfügbar gemacht, sind oft öffentlich zugänglich und können von nicht vertrauenswürdigen Benutzern verwendet werden.Cloud applications are exposed on the Internet outside trusted on-premises boundaries, are often open to the public, and may serve untrusted users. Durch den Entwurf und die Bereitstellung von Anwendungen muss sichergestellt werden, dass sie vor böswilligen Angriffen geschützt sind, der Zugriff auf genehmigte Benutzer beschränkt ist und vertrauliche Daten sicher sind.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.

MusterkatalogCatalog of patterns

MusterPattern ZusammenfassungSummary CategoryCategory
AmbassadorAmbassador Erstellen Sie Hilfsdienste, die im Auftrag von Consumerdiensten oder -anwendungen Netzwerkanforderungen senden.Create helper services that send network requests on behalf of a consumer service or application. Entwurf und ImplementierungDesign and Implementation,
Verwaltung und ÜberwachungManagement and Monitoring
AntikorruptionsschichtAnti-Corruption Layer Implementieren Sie eine „Fassade“ oder Adapterebene zwischen einer modernen Anwendung und einem älteren System.Implement a façade or adapter layer between a modern application and a legacy system. Entwurf und ImplementierungDesign and Implementation,
Verwaltung und ÜberwachungManagement and Monitoring
Asynchrones Anforderung-Antwort-MusterAsynchronous Request-Reply Entkoppeln Sie die Back-End-Verarbeitung von einem Front-End-Host, wobei die Back-End-Verarbeitung asynchron sein muss, das Front-End jedoch eine eindeutige Antwort benötigt.Decouple backend processing from a frontend host, where backend processing needs to be asynchronous, but the frontend still needs a clear response. NachrichtenMessaging
Back-Ends für Front-EndsBackends for Frontends Erstellen Sie separate Back-End-Dienste zur Nutzung durch bestimmte Front-End-Anwendungen oder -Schnittstellen.Create separate backend services to be consumed by specific frontend applications or interfaces. Entwurf und ImplementierungDesign and Implementation
BulkheadBulkhead Isolieren Sie Elemente einer Anwendung in Pools, sodass bei Ausfall eines Elements die anderen Elemente weiterhin ausgeführt werden.Isolate elements of an application into pools so that if one fails, the others will continue to function. ResilienzResiliency
Cache-AsideCache-Aside Daten bei Bedarf aus einem Datenspeicher in einen Cache ladenLoad data on demand into a cache from a data store DatenverwaltungData Management,
Leistung und SkalierbarkeitPerformance and Scalability
ChoreographieChoreography Lassen Sie jeden Dienst entscheiden, wann und wie ein Geschäftsvorgang verarbeitet wird, anstatt einen zentralen Orchestrator zu nutzen.Let each service decide when and how a business operation is processed, instead of depending on a central orchestrator. MessagingMessaging,
Leistung und SkalierbarkeitPerformance and Scalability
SicherungCircuit Breaker Behandeln Sie Fehler, deren Behebung beim Herstellen einer Verbindung mit einem Remotedienst oder einer Remoteressource unterschiedlich lange dauern kann.Handle faults that might take a variable amount of time to fix when connecting to a remote service or resource. ResilienzResiliency
AnspruchsprüfungClaim Check Teilen Sie eine große Nachricht in eine Anspruchsprüfung und eine Nutzlast auf, um die Überlastung eines Nachrichtenbusses zu vermeiden.Split a large message into a claim check and a payload to avoid overwhelming a message bus. NachrichtenMessaging
Ausgleichende TransaktionCompensating Transaction Machen Sie durch eine Reihe von Schritten ausgeführte Arbeit rückgängig, die zusammen einen letztlich konsistenten Vorgang definieren.Undo the work performed by a series of steps, which together define an eventually consistent operation. ResilienzResiliency
Konkurrierende ConsumerCompeting Consumers Mehreren gleichzeitigen Consumern die Verarbeitung von Nachrichten ermöglichen, die auf dem gleichen Messagingkanal empfangen werdenEnable multiple concurrent consumers to process messages received on the same messaging channel. NachrichtenMessaging
ComputeressourcenkonsolidierungCompute Resource Consolidation Konsolidieren mehrerer Tasks oder Vorgänge in einer einzelnen Compute-EinheitConsolidate multiple tasks or operations into a single computational unit Entwurf und ImplementierungDesign and Implementation
CQRSCQRS Trennen Sie mithilfe separater Schnittstellen Datenlesevorgänge von Vorgängen zur Aktualisierung von Daten.Segregate operations that read data from operations that update data by using separate interfaces. DatenverwaltungData Management,
Entwurf und ImplementierungDesign and Implementation,
Leistung und SkalierbarkeitPerformance and Scalability
BereitstellungsstempelDeployment Stamps Bereitstellen mehrerer unabhängiger Kopien von Anwendungskomponenten, einschließlich DatenspeicherDeploy multiple independent copies of application components, including data stores. VerfügbarkeitAvailability,
Leistung und SkalierbarkeitPerformance and Scalability
EreignisherkunftsermittlungEvent Sourcing Verwenden Sie einen nur zum Anfügen vorgesehenen Speicher, um die vollständige Serie von Ereignissen aufzuzeichnen, die die mit Daten in einer Domäne ausgeführten Aktionen beschreiben.Use an append-only store to record the full series of events that describe actions taken on data in a domain. DatenverwaltungData Management,
Leistung und SkalierbarkeitPerformance and Scalability
Externer KonfigurationsspeicherExternal Configuration Store Konfigurationsinformationen aus dem Anwendungsbereitstellungspaket an einen zentralen Speicherort verschiebenMove configuration information out of the application deployment package to a centralized location. Entwurf und ImplementierungDesign and Implementation,
Verwaltung und ÜberwachungManagement and Monitoring
VerbundidentitätFederated Identity Delegieren Sie die Authentifizierung an einen externen Identitätsanbieter.Delegate authentication to an external identity provider. SecuritySecurity
GatekeeperGatekeeper Schützen Sie Anwendungen und Dienste durch Verwendung einer dedizierten Hostinstanz, die als Broker zwischen Clients und der Anwendung oder dem Dienst fungiert, Anforderungen überprüft und bereinigt sowie Anforderungen und Daten zwischen ihnen weiterleitet.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. SecuritySecurity
GatewayaggregationGateway Aggregation Aggregieren Sie mithilfe eines Gateways mehrere einzelne Anforderungen in einer einzigen Anforderung.Use a gateway to aggregate multiple individual requests into a single request. Entwurf und ImplementierungDesign and Implementation,
Verwaltung und ÜberwachungManagement and Monitoring
GatewayabladungGateway Offloading Lagern Sie gemeinsam genutzte oder spezielle Dienstfunktionen an einen Gatewayproxy aus.Offload shared or specialized service functionality to a gateway proxy. Entwurf und ImplementierungDesign and Implementation,
Verwaltung und ÜberwachungManagement and Monitoring
GatewayroutingGateway Routing Leiten Sie Anforderungen an mehrere Dienste mit einem einzelnen Endpunkt weiter.Route requests to multiple services using a single endpoint. Entwurf und ImplementierungDesign and Implementation,
Verwaltung und ÜberwachungManagement and Monitoring
Geografische KnotenGeodes Es wird beschrieben, wie Sie Back-End-Dienste für eine Gruppe von geografischen Knoten bereitstellen, von denen jeweils die Clientanforderungen einer beliebigen Region verarbeitet werden können.Deploy backend services into a set of geographical nodes, each of which can service any client request in any region. VerfügbarkeitAvailability,
Leistung und SkalierbarkeitPerformance and Scalability
Überwachung des IntegritätsendpunktsHealth Endpoint Monitoring Implementieren Sie Funktionsprüfungen in einer Anwendung, auf die externe Tools in regelmäßigen Abständen über verfügbar gemachte Endpunkte zugreifen können.Implement functional checks in an application that external tools can access through exposed endpoints at regular intervals. VerfügbarkeitAvailability,
Verwaltung und ÜberwachungManagement and Monitoring,
ResilienzResiliency
IndextabelleIndex Table Erstellen Sie Indizes für die Felder im Datenspeicher, auf die häufig von Abfragen verwiesen wird.Create indexes over the fields in data stores that are frequently referenced by queries. DatenverwaltungData Management,
Leistung und SkalierbarkeitPerformance and Scalability
Auswahl einer übergeordneten InstanzLeader Election Koordinieren Sie die Aktionen, die von einer Sammlung zusammenarbeitender Taskinstanzen ausgeführt werden, in einer verteilten Anwendung, indem eine Instanz als übergeordnete Instanz ausgewählt wird, die die Verantwortung für die Verwaltung der anderen Instanzen übernimmt.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. Entwurf und ImplementierungDesign and Implementation,
ResilienzResiliency
Materialisierte SichtMaterialized View Voraufgefüllte Sichten für die Daten in einem oder mehreren Datenspeichern generieren, wenn die Daten für erforderliche Abfragevorgänge nicht ideal formatiert sindGenerate prepopulated views over the data in one or more data stores when the data isn't ideally formatted for required query operations. DatenverwaltungData Management,
Leistung und SkalierbarkeitPerformance and Scalability
Pipes und FilterPipes and Filters Unterteilen einer Aufgabe, die komplexe Verarbeitungsvorgänge ausführt, in eine Reihe wiederverwendbarer separater ElementeBreak down a task that performs complex processing into a series of separate elements that can be reused. Entwurf und ImplementierungDesign and Implementation,
NachrichtenMessaging
PrioritätswarteschlangePriority Queue Priorisieren Sie an Dienste gesendete Anforderungen, sodass Anforderungen mit einer höheren Priorität schneller empfangen und verarbeitet werden als Anforderungen mit einer niedrigeren Priorität.Prioritize requests sent to services so that requests with a higher priority are received and processed more quickly than those with a lower priority. MessagingMessaging,
Leistung und SkalierbarkeitPerformance and Scalability
Herausgeber/AbonnentPublisher/Subscriber Ermöglichen Sie einer Anwendung die asynchrone Ankündigung von Ereignissen für mehrere interessierte Consumer, ohne die Absender mit den Empfängern zu koppeln.Enable an application to announce events to multiple interested consumers asynchronously, without coupling the senders to the receivers. NachrichtenMessaging
Warteschlangenbasierter LastenausgleichQueue-Based Load Leveling Verwenden Sie eine Warteschlange, die als Puffer zwischen einem Task und einem von diesem aufgerufenen Dienst fungiert, um unregelmäßig auftretende hohe Lasten aufzufangen.Use a queue that acts as a buffer between a task and a service that it invokes in order to smooth intermittent heavy loads. VerfügbarkeitAvailability,
MessagingMessaging,
Resilienz,Resiliency,
Leistung und SkalierbarkeitPerformance and Scalability
WiederholungRetry Ermöglichen Sie einer Anwendung beim Herstellen einer Verbindung mit einem Dienst oder einer Netzwerkressource die Behandlung antizipierter, temporärer Fehler, indem ein zuvor nicht erfolgreich durchgeführter Vorgang transparent wiederholt wird.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. ResilienzResiliency
Scheduler-Agent-SupervisorScheduler Agent Supervisor Koordinieren Sie eine Reihe von Aktionen in einer verteilten Gruppe von Diensten und anderen Remoteressourcen.Coordinate a set of actions across a distributed set of services and other remote resources. MessagingMessaging,
ResilienzResiliency
Sequenzieller KonvoiSequential Convoy Verarbeiten Sie eine Reihe verwandter Nachrichten in einer festgelegten Reihenfolge, ohne die Verarbeitung anderer Nachrichtengruppen zu blockieren.Process a set of related messages in a defined order, without blocking processing of other groups of messages. NachrichtenMessaging
ShardingSharding Einen Datenspeicher in einen Satz horizontaler Partitionen oder Shards unterteilenDivide a data store into a set of horizontal partitions or shards. DatenverwaltungData Management,
Leistung und SkalierbarkeitPerformance and Scalability
SidecarSidecar Komponenten einer Anwendung zwecks Isolation und Kapselung in einem separaten Prozess oder Container bereitstellenDeploy components of an application into a separate process or container to provide isolation and encapsulation. Entwurf und ImplementierungDesign and Implementation,
Verwaltung und ÜberwachungManagement and Monitoring
Hosten von statischen InhaltenStatic Content Hosting Stellen Sie statische Inhalte in einem cloudbasierten Speicherdienst bereit, der die Inhalte direkt an den Client übermitteln kann.Deploy static content to a cloud-based storage service that can deliver them directly to the client. Entwurf und ImplementierungDesign and Implementation,
DatenverwaltungData Management,
Leistung und SkalierbarkeitPerformance and Scalability
StranglerStrangler Migrieren Sie ein älteres System inkrementell, indem Sie bestimmte Teile der Funktionalität nach und nach durch neue Anwendungen und Dienste ersetzen.Incrementally migrate a legacy system by gradually replacing specific pieces of functionality with new applications and services. Entwurf und ImplementierungDesign and Implementation,
Verwaltung und ÜberwachungManagement and Monitoring
DrosselungThrottling Steuern Sie den Verbrauch der von einer Anwendungsinstanz, einem einzelnen Mandanten oder einem gesamten Dienst verwendeten Ressourcen.Control the consumption of resources used by an instance of an application, an individual tenant, or an entire service. VerfügbarkeitAvailability,
Leistung und SkalierbarkeitPerformance and Scalability
Valet-SchlüsselValet Key Verwenden Sie ein Token oder einen Schlüssel, das bzw. der Clients eingeschränkten direkten Zugriff auf eine bestimmte Ressource oder einen bestimmten Dienst bietet.Use a token or key that provides clients with restricted direct access to a specific resource or service. DatenverwaltungData Management,
SecuritySecurity