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 auf Azure oder 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 ohne Beenden oder erneutes Bereitstellen der Anwendung unterstützen.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 horizontal hoch- und herunterskalieren 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

SicherheitSecurity

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
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.
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.
Asynchrones Anforderung-Antwort-MusterAsynchronous Request-Reply Entkoppeln Sie die Back-End-Verarbeitung von einem Front-End-Host, bei der 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.
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.
BulkheadBulkhead Elemente einer Anwendung in Pools isolieren, sodass die anderen Elemente beim Ausfall eines Elements weiterhin ausgeführt werdenIsolate elements of an application into pools so that if one fails, the others will continue to function.
Cache-AsideCache-Aside Daten bei Bedarf aus einem Datenspeicher in einen Cache ladenLoad data on demand into a cache from a data store
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.
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.
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.
Ausgleichende TransaktionCompensating Transaction Durch eine Reihe von Schritten, die zusammen letztlich einen konsistenten Vorgang definieren, ausgeführte Arbeit rückgängig machenUndo the work performed by a series of steps, which together define an eventually consistent operation.
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.
ComputeressourcenkonsolidierungCompute Resource Consolidation Konsolidieren mehrerer Tasks oder Vorgänge in einer einzelnen Compute-EinheitConsolidate multiple tasks or operations into a single computational unit
CQRSCQRS Mithilfe separater Schnittstellen Vorgänge trennen, die Daten von Vorgängen zur Aktualisierung von Daten lesenSegregate operations that read data from operations that update data by using separate interfaces.
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.
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.
VerbundidentitätFederated Identity Authentifizierung an einen externen Identitätsanbieter delegierenDelegate authentication to an external identity provider.
GatekeeperGatekeeper Anwendungen und Dienste durch Verwendung einer dedizierten Hostinstanz schützen, die als Broker zwischen Clients und der Anwendung oder dem Dienst fungiert, Anforderungen überprüft und bereinigt sowie Anforderungen und Daten zwischen ihnen weiterleitetProtect 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.
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.
GatewayabladungGateway Offloading Lagern Sie gemeinsam genutzte oder spezielle Dienstfunktionen an einen Gatewayproxy aus.Offload shared or specialized service functionality to a gateway proxy.
GatewayroutingGateway Routing Leiten Sie Anforderungen an mehrere Dienste mit einem einzelnen Endpunkt weiter.Route requests to multiple services using a single endpoint.
Überwachung des IntegritätsendpunktsHealth Endpoint Monitoring Funktionale Prüfungen innerhalb einer Anwendung implementieren, auf die externe Tools in regelmäßigen Abständen über verfügbar gemachte Endpunkte zugreifen könnenImplement functional checks in an application that external tools can access through exposed endpoints at regular intervals.
IndextabelleIndex Table Indizes für die Felder im Datenspeicher erstellen, auf die häufig von Abfragen verwiesen wirdCreate indexes over the fields in data stores that are frequently referenced by queries.
Auswahl einer übergeordneten InstanzLeader Election Die von einer Sammlung zusammenarbeitender Aufgabeninstanzen ausgeführten Aktionen in einer verteilten Anwendung koordinieren, indem eine Instanz als übergeordnete Instanz ausgewählt wird, die die Verantwortung für die Verwaltung der anderen Instanzen übernimmtCoordinate 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.
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.
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.
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.
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.
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.
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.
Scheduler-Agent-SupervisorScheduler Agent Supervisor Eine Reihe von Aktionen in einer verteilten Gruppe von Diensten und anderen Remoteressourcen koordinierenCoordinate a set of actions across a distributed set of services and other remote resources.
ShardingSharding Einen Datenspeicher in einen Satz horizontaler Partitionen oder Shards unterteilenDivide a data store into a set of horizontal partitions or shards.
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.
Hosten von statischen InhaltenStatic Content Hosting Statische Inhalte in einem cloudbasierten Speicherdienst bereitstellen, der die Inhalte direkt an den Client übermitteln kannDeploy static content to a cloud-based storage service that can deliver them directly to the client.
EinschnürungStrangler 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.
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.
Valet-SchlüsselValet Key Ein Token oder einen Schlüssel verwenden, das bzw. der Clients eingeschränkten direkten Zugriff auf eine bestimmte Ressource oder einen bestimmten Dienst bietetUse a token or key that provides clients with restricted direct access to a specific resource or service.