Freigeben über


Cloudentwurfsmuster

Architekten entwerfen Arbeitslasten, indem Plattformdienste, Funktionen und Code kombiniert werden, um funktionale und nicht funktionale Anforderungen in Workloads zu erfüllen. Das Design von Workloads erfordert ein Verständnis dieser Workload-Anforderungen und dann die Wahl von Topologien und Ansätzen, die die Herausforderungen lösen, die sich aus den Beschränkungen des Workloads ergeben. Clouddesignmuster, die viele häufige Herausforderungen bewältigen.

Systemdesign ist stark von Entwurfsmustern geprägt. Infrastruktur-, Code- und verteilte Systeme sind alle auf eine Kombination aus Entwurfsmustern ausgelegt. Diese Entwurfsmuster sind nützlich, um zuverlässige, sichere, kostenoptimierte, betriebsfähige und leistungsfähige Anwendungen in der Cloud zu erstellen.

Diese Entwurfsmuster sind für keine Technologie spezifisch und für jedes verteilte System relevant, unabhängig davon, ob sie auf Azure, anderen Cloudplattformen gehostet werden, und einige können sogar auf lokale oder Hybridarbeitslasten erweitert werden.

Clouddesignmuster helfen beim Entwurfsprozess

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.

Ein gut architektierter Workload berücksichtigt, wie diese branchenweiten Strukturierungsmuster als Kernbausteine für das Workload-Design verwendet werden sollten. Jedes Element von Azure Well-Architected ist in diesen Designmustern vertreten, wobei das Designmuster oft Kompromisse mit den Zielen der anderen Elemente eingeht.

Musterkatalog

Jedes Muster in diesem Katalog beschreibt das Problem, das das Muster behandelt, Überlegungen zum Anwenden des Musters und ein Beispiel basierend auf Microsoft Azure. Einige Muster umfassen Codebeispiele oder Codeausschnitte, die zeigen, wie das Muster in Azure implementiert wird.

Muster Zusammenfassung Azure Well-Architected Framework-Säulen
Ambassador Erstellen Sie Hilfsdienste, die im Auftrag von Consumerdiensten oder -anwendungen Netzwerkanforderungen senden.
  • Zuverlässigkeit
  • Sicherheit
Antikorruptionsschicht Implementieren Sie eine „Fassade“ oder Adapterebene zwischen einer modernen Anwendung und einem älteren System.
  • Operative Exzellenz
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.
  • Leistungseffizienz
Back-Ends für Front-Ends Erstellen Sie separate Back-End-Dienste, die von bestimmten Frontend-Anwendungen oder Schnittstellen verwendet werden sollen.
  • Zuverlässigkeit
  • Sicherheit
  • Leistungseffizienz
Bulkhead Isolieren Sie Elemente einer Anwendung in Pools, sodass die anderen weiterhin funktionieren, falls einer ausfällt.
  • Zuverlässigkeit
  • Sicherheit
  • Leistungseffizienz
Cache-Aside Daten bei Bedarf aus einem Datenspeicher in einen Cache laden.
  • Zuverlässigkeit
  • Leistungseffizienz
Choreographie Lassen Sie jeden Dienst entscheiden, wann und wie ein Geschäftsvorgang verarbeitet wird, anstatt einen zentralen Orchestrator zu nutzen.
  • Operative Exzellenz
  • Leistungseffizienz
Sicherung Behandeln Sie Fehler, deren Behebung beim Herstellen einer Verbindung mit einem Remotedienst oder einer Remoteressource unterschiedlich lange dauern kann.
  • Zuverlässigkeit
  • Leistungseffizienz
Anspruchsprüfung Teilen Sie eine große Nachricht in eine Anspruchsprüfung und eine Nutzlast auf, um die Überlastung eines Nachrichtenbusses zu vermeiden.
  • Zuverlässigkeit
  • Sicherheit
  • Kostenoptimierung
  • Leistungseffizienz
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
  • Zuverlässigkeit
  • Kostenoptimierung
  • Leistungseffizienz
Computeressourcenkonsolidierung Konsolidieren Sie mehrere Aufgaben oder Vorgänge in einer einzigen Recheneinheit.
  • Kostenoptimierung
  • Operative Exzellenz
  • Leistungseffizienz
CQRS Trennen Sie mithilfe separater Schnittstellen Datenlesevorgänge von Vorgängen zur Aktualisierung von Daten.
  • Leistungseffizienz
Bereitstellungsstempel Bereitstellen mehrerer unabhängiger Kopien von Anwendungskomponenten, einschließlich Datenspeicher
  • Operative Exzellenz
  • Leistungseffizienz
Edge-Workloadkonfiguration Zentralisieren Sie die Konfiguration, um die Herausforderung beim Konfigurieren mehrerer Systeme und Geräte im Produktionsbereich zu bewältigen.
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.
  • Zuverlässigkeit
  • Leistungseffizienz
Externer Konfigurationsspeicher Konfigurationsinformationen aus dem Anwendungsbereitstellungspaket an einen zentralen Speicherort verschieben
  • Operative Exzellenz
Verbundidentität Delegieren Sie die Authentifizierung an einen externen Identitätsanbieter.
  • Zuverlässigkeit
  • Sicherheit
  • Leistungseffizienz
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.
  • Sicherheit
  • Leistungseffizienz
Gatewayaggregation Aggregieren Sie mithilfe eines Gateways mehrere einzelne Anforderungen in einer einzigen Anforderung.
  • Zuverlässigkeit
  • Sicherheit
  • Operative Exzellenz
  • Leistungseffizienz
Gatewayabladung Lagern Sie gemeinsam genutzte oder spezielle Dienstfunktionen an einen Gatewayproxy aus.
  • Zuverlässigkeit
  • Sicherheit
  • Kostenoptimierung
  • Operative Exzellenz
  • Leistungseffizienz
Gatewayrouting Leiten Sie Anforderungen an mehrere Dienste mit einem einzelnen Endpunkt weiter.
  • Zuverlässigkeit
  • Operative Exzellenz
  • Leistungseffizienz
Geode 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
  • Leistungseffizienz
Ü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
  • Operative Exzellenz
  • Leistungseffizienz
Indextabelle Erstellen Sie Indizes für die Felder im Datenspeicher, auf die häufig von Abfragen verwiesen wird.
  • Zuverlässigkeit
  • Leistungseffizienz
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.
  • 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
  • Leistungseffizienz
Messaging-Bridge Erstellen Sie einen Vermittler, um die Kommunikation zwischen Messagingsystemen zu ermöglichen, die andernfalls aufgrund von Protokoll oder Format nicht kompatibel sind.
  • Kostenoptimierung
  • Operative Exzellenz
Pipes und Filter Unterteilen einer Aufgabe, die komplexe Verarbeitungsvorgänge ausführt, in eine Reihe wiederverwendbarer separater Elemente
  • Zuverlässigkeit
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.
  • Zuverlässigkeit
  • Leistungseffizienz
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.
  • Zuverlässigkeit
  • Sicherheit
  • Kostenoptimierung
  • Operative Exzellenz
  • Leistungseffizienz
Quarantäne Stellen Sie sicher, dass externe Ressourcen eine vom Team vereinbarte Qualitätsebene erfüllen, bevor Sie sie in der Arbeitslast verwenden dürfen.
  • Sicherheit
  • Operative Exzellenz
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
  • Kostenoptimierung
  • Leistungseffizienz
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.
  • Zuverlässigkeit
Scheduler-Agent-Supervisor Koordinieren Sie eine Reihe von Aktionen in einer verteilten Gruppe von Diensten und anderen Remoteressourcen.
  • Zuverlässigkeit
  • Leistungseffizienz
Sequenzieller Konvoi Verarbeiten Sie eine Reihe verwandter Nachrichten in einer festgelegten Reihenfolge, ohne die Verarbeitung anderer Nachrichtengruppen zu blockieren.
  • Zuverlässigkeit
Sharding Einen Datenspeicher in einen Satz horizontaler Partitionen oder Shards unterteilen
  • Zuverlässigkeit
  • Kostenoptimierung
Sidecar Komponenten einer Anwendung zwecks Isolation und Kapselung in einem separaten Prozess oder Container bereitstellen
  • Sicherheit
  • Operative Exzellenz
Hosten von statischen Inhalten Stellen Sie statische Inhalte in einem cloudbasierten Speicherdienst bereit, der die Inhalte direkt an den Client übermitteln kann.
  • Kostenoptimierung
Strangler-Muster Migrieren Sie ein älteres System inkrementell, indem Sie bestimmte Teile der Funktionalität nach und nach durch neue Anwendungen und Dienste ersetzen.
  • Zuverlässigkeit
  • Kostenoptimierung
  • Operative Exzellenz
Drosselung Steuern Sie den Verbrauch der von einer Anwendungsinstanz, einem einzelnen Mandanten oder einem gesamten Dienst verwendeten Ressourcen.
  • Zuverlässigkeit
  • Sicherheit
  • Kostenoptimierung
  • Leistungseffizienz
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.
  • Sicherheit
  • Kostenoptimierung
  • Leistungseffizienz

Nächster Schritt

Betrachten Sie die Designmuster aus der Perspektive des Azure Well-Architected Elements, das mit dem Muster optimiert werden soll.