Cloudentwurfsmuster

Diese Entwurfsmuster können Ihnen dabei helfen, zuverlässige, skalierbare und sichere Anwendungen in der Cloud zu erstellen.

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. Die meisten Muster enthalten Codebeispiele oder -ausschnitte, die die Implementierung des Musters in Azure veranschaulichen. 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.

Cloudworkloads sind anfällig für die Irrtümer der verteilten Verarbeitung. Einige Beispiele für Clouddesign-Irrtümer sind:

  • Das Netzwerk ist zuverlässig
  • Latenz ist null
  • Bandbreite ist unendlich
  • Das Netzwerk ist geschützt
  • Topologie ändert sich nicht
  • Es gibt einen Administrator
  • Komponentenversionsverwaltung ist einfach
  • Einblickimplementierung kann verzögert werden

Designmuster beseitigen Faktoren wie diese nicht, können aber dazu beitragen, diese zu erkennen, zu kompensieren und zu minimieren. Jedes Cloudmuster bringt seine eigenen Kompromisse mit sich. Es ist wichtiger, darauf zu achten, warum Sie ein bestimmtes Muster auswählen, nicht, wie Sie es implementieren.

Herausforderungen bei der Cloudentwicklung

Datenverwaltung

Datenverwaltung

Die Datenverwaltung ist das wichtigste Element von Cloudanwendungen und wirkt sich auf die meisten Qualitätsattribute aus. Meist werden Daten aus Gründen der Leistung, Skalierbarkeit oder Verfügbarkeit an verschiedenen Speicherorten und auf mehreren Servern gehostet. Dies kann eine ganze Reihe von Herausforderungen mit sich bringen. Beispielsweise muss die Konsistenz der Daten aufrechterhalten werden, und normalerweise müssen Daten zwischen unterschiedlichen Speicherorten synchronisiert werden.

Entwurf und Implementierung

Entwurf und Implementierung

Ein guter Entwurf berücksichtigt 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. Während der Entwurfs- und Implementierungsphase getroffene Entscheidungen haben erheblichen Einfluss auf die Qualität und die Gesamtkosten von in der Cloud gehosteten Anwendungen und Diensten.

Messagingsymbol

Nachrichten

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

Musterkatalog

Muster Zusammenfassung Category
Ambassador Erstellen Sie Hilfsdienste, die im Auftrag von Consumerdiensten oder -anwendungen Netzwerkanforderungen senden. Entwurf und Implementierung
Optimaler Betrieb
Antikorruptionsschicht Implementieren Sie eine „Fassade“ oder Adapterebene zwischen einer modernen Anwendung und einem älteren System. Entwurf und Implementierung
Optimaler Betrieb
Asynchrones Anforderung-Antwort-Muster 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. Nachrichten
Back-Ends für Front-Ends Erstellen Sie separate Back-End-Dienste zur Nutzung durch bestimmte Front-End-Anwendungen oder -Schnittstellen. Entwurf und Implementierung
Bulkhead Isolieren Sie Elemente einer Anwendung in Pools, sodass bei Ausfall eines Elements die anderen Elemente weiterhin ausgeführt werden. Zuverlässigkeit
Cache-Aside Daten bei Bedarf aus einem Datenspeicher in einen Cache laden Datenverwaltung
Effiziente Leistung
Choreographie Lassen Sie jeden Dienst entscheiden, wann und wie ein Geschäftsvorgang verarbeitet wird, anstatt einen zentralen Orchestrator zu nutzen. Messaging
Effiziente Leistung
Sicherung Behandeln Sie Fehler, deren Behebung beim Herstellen einer Verbindung mit einem Remotedienst oder einer Remoteressource unterschiedlich lange dauern kann. Zuverlässigkeit
Anspruchsprüfung Teilen Sie eine große Nachricht in eine Anspruchsprüfung und eine Nutzlast auf, um die Überlastung eines Nachrichtenbusses zu vermeiden. Nachrichten
Ausgleichende Transaktion Machen Sie durch eine Reihe von Schritten ausgeführte Arbeit rückgängig, die zusammen einen letztlich konsistenten Vorgang definieren. Zuverlässigkeit
Konkurrierende Consumer Mehreren gleichzeitigen Consumern die Verarbeitung von Nachrichten ermöglichen, die auf dem gleichen Messagingkanal empfangen werden Nachrichten
Computeressourcenkonsolidierung Konsolidieren mehrerer Tasks oder Vorgänge in einer einzelnen Compute-Einheit Entwurf und Implementierung
CQRS Trennen Sie mithilfe separater Schnittstellen Datenlesevorgänge von Vorgängen zur Aktualisierung von Daten. Datenverwaltung
Entwurf und Implementierung
Effiziente Leistung
Bereitstellungsstempel Bereitstellen mehrerer unabhängiger Kopien von Anwendungskomponenten, einschließlich Datenspeicher Zuverlässigkeit
Effiziente Leistung
Edge-Workloadkonfiguration Die große Vielfalt von Systemen und Geräten im Fertigungsbereich kann die Workloadkonfiguration zu einer schwierigen Aufgabe machen. Entwurf und Implementierung
Ereignisherkunftsermittlung 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. Datenverwaltung
Effiziente Leistung
Externer Konfigurationsspeicher Konfigurationsinformationen aus dem Anwendungsbereitstellungspaket an einen zentralen Speicherort verschieben Entwurf und Implementierung
Optimaler Betrieb
Verbundidentität Delegieren Sie die Authentifizierung an einen externen Identitätsanbieter. Security
Gatekeeper 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. Security
Gatewayaggregation Aggregieren Sie mithilfe eines Gateways mehrere einzelne Anforderungen in einer einzigen Anforderung. Entwurf und Implementierung
Optimaler Betrieb
Gatewayabladung Lagern Sie gemeinsam genutzte oder spezielle Dienstfunktionen an einen Gatewayproxy aus. Entwurf und Implementierung
Optimaler Betrieb
Gatewayrouting Leiten Sie Anforderungen an mehrere Dienste mit einem einzelnen Endpunkt weiter. Entwurf und Implementierung
Optimaler Betrieb
Geografische Knoten 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. Zuverlässigkeit
Optimaler Betrieb
Überwachung des Integritätsendpunkts Implementieren Sie Funktionsprüfungen in einer Anwendung, auf die externe Tools in regelmäßigen Abständen über verfügbar gemachte Endpunkte zugreifen können. Zuverlässigkeit
Optimaler Betrieb
Indextabelle Erstellen Sie Indizes für die Felder im Datenspeicher, auf die häufig von Abfragen verwiesen wird. Datenverwaltung
Effiziente Leistung
Auswahl einer übergeordneten Instanz 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. Entwurf und Implementierung
Zuverlässigkeit
Materialisierte Sicht Voraufgefüllte Sichten für die Daten in einem oder mehreren Datenspeichern generieren, wenn die Daten für erforderliche Abfragevorgänge nicht ideal formatiert sind Datenverwaltung
Optimaler Betrieb,
Effiziente Leistung
Pipes und Filter Unterteilen einer Aufgabe, die komplexe Verarbeitungsvorgänge ausführt, in eine Reihe wiederverwendbarer separater Elemente Entwurf und Implementierung
Messaging
Prioritätswarteschlange 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. Messaging
Effiziente Leistung
Herausgeber/Abonnent 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. Nachrichten
Warteschlangenbasierter Lastenausgleich Verwenden Sie eine Warteschlange, die als Puffer zwischen einem Task und einem von diesem aufgerufenen Dienst fungiert, um unregelmäßig auftretende hohe Lasten aufzufangen. Zuverlässigkeit
Messaging
Resilienz,
Effiziente Leistung
Ratenbegrenzungsmuster Begrenzungsmusters, die Ihnen helfen, Drosselungsfehler im Zusammenhang mit diesen Drosselungsbegrenzungen zu vermeiden oder zu minimieren und eine genauere Vorhersage für den Durchsatz zu ermöglichen. Zuverlässigkeit
Wiederholung 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. Zuverlässigkeit
Saga Verwalten der Datenkonsistenz über Microservices hinweg in verteilten Transaktionsszenarien. Das Saga-Muster umfasst eine Sequenz von Transaktionen, die alle Dienste aktualisieren und eine Meldung oder ein Ereignis veröffentlichen, um den nächsten Transaktionsschritt auszulösen. Nachrichten
Scheduler-Agent-Supervisor Koordinieren Sie eine Reihe von Aktionen in einer verteilten Gruppe von Diensten und anderen Remoteressourcen. Messaging
Zuverlässigkeit
Sequenzieller Konvoi Verarbeiten Sie eine Reihe verwandter Nachrichten in einer festgelegten Reihenfolge, ohne die Verarbeitung anderer Nachrichtengruppen zu blockieren. Nachrichten
Sharding Einen Datenspeicher in einen Satz horizontaler Partitionen oder Shards unterteilen Datenverwaltung
Effiziente Leistung
Sidecar Komponenten einer Anwendung zwecks Isolation und Kapselung in einem separaten Prozess oder Container bereitstellen Entwurf und Implementierung
Optimaler Betrieb
Hosten von statischen Inhalten Stellen Sie statische Inhalte in einem cloudbasierten Speicherdienst bereit, der die Inhalte direkt an den Client übermitteln kann. Entwurf und Implementierung
Datenverwaltung
Effiziente Leistung
Strangler-Muster Migrieren Sie ein älteres System inkrementell, indem Sie bestimmte Teile der Funktionalität nach und nach durch neue Anwendungen und Dienste ersetzen. Entwurf und Implementierung
Optimaler Betrieb
Drosselung Steuern Sie den Verbrauch der von einer Anwendungsinstanz, einem einzelnen Mandanten oder einem gesamten Dienst verwendeten Ressourcen. Zuverlässigkeit
Effiziente Leistung
Valet-Schlüssel 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. Datenverwaltung
Security