Teilen über


Cloudentwurfsmuster

Architekten entwerfen Arbeitslasten, indem Plattformdienste, Funktionen und Code integriert werden, um sowohl funktionale als auch nicht funktionale Anforderungen zu erfüllen. Um effektive Workloads zu entwerfen, müssen Sie diese Anforderungen verstehen und Topologien und Methoden auswählen, die den Herausforderungen der Einschränkungen Ihrer Workload gerecht werden. Clouddesignmuster bieten Lösungen für viele häufige Herausforderungen.

Systemdesign basiert stark auf etablierten Entwurfsmustern. Sie können Infrastruktur, Code und verteilte Systeme mithilfe einer Kombination dieser Muster entwerfen. Diese Muster sind entscheidend für die Erstellung zuverlässiger, hochsicherer, kostenoptimierter, betriebseffizienter und leistungsstarker Anwendungen in der Cloud.

Die folgenden Clouddesignmuster sind technologieunabhängig, wodurch sie für jedes verteilte System geeignet sind. Sie können diese Muster auf Azure, andere Cloudplattformen, lokale Setups und Hybridumgebungen anwenden.

Wie Clouddesignmuster den Entwurfsprozess verbessern

Cloud-Arbeitslasten sind anfällig für die Fehler des verteilten Computings, d.h. für gängige, aber falsche Annahmen darüber, wie verteilte Systeme funktionieren. Beispiele für diese Fallacien sind:

  • Das Netzwerk ist zuverlässig.
  • Die Latenz ist null.
  • Bandbreite ist unendlich.
  • Das Netzwerk ist sicher.
  • Die Topologie ändert sich nicht.
  • Es gibt einen Administrator.
  • Die Komponentenversionsverwaltung ist einfach.
  • Die Observability-Implementierung kann verzögert werden.

Diese Fehleinschätzungen können zu fehlerhaften Workloaddesigns führen. Designmuster beseitigen diese Fehlverständnise nicht, helfen aber dabei, das Bewusstsein zu erhöhen, Kompensationsstrategien bereitzustellen und Gegenmaßnahmen bereitzustellen. Jedes Clouddesignmuster hat Kompromisse. Konzentrieren Sie sich darauf, warum Sie ein bestimmtes Muster auswählen sollten, anstatt es zu implementieren.

Überlegen Sie, wie Sie diese branchenüblich üblichen Entwurfsmuster als kernige Bausteine für ein gut durchdachtes Workload-Design verwenden. Jedes Entwurfsmuster im Azure Well-Architected Framework stellt eine oder mehrere seiner Säulen dar. Einige Muster könnten Gegensätze einführen, die sich auf die Ziele anderer Säulen auswirken.

Musterkatalog

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

Muster Zusammenfassung Well-Architected Rahmenpfeiler
Botschafter 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 der Back-End-Verarbeitung von einem Front-End-Host. Dieses Muster ist nützlich, wenn die Back-End-Verarbeitung asynchron sein muss, aber das Front-End erfordert eine klare und zeitnahe Antwort. - Leistungseffizienz
Back-Ends für Front-Ends Erstellen Sie separate Back-End-Dienste für bestimmte Frontend-Anwendungen oder Schnittstellen. -Zuverlässigkeit

-Sicherheit

- Leistungseffizienz
Trennwand Isolieren Sie Elemente einer Anwendung in Pools, sodass die anderen weiterhin funktionieren, falls einer ausfällt. -Zuverlässigkeit

-Sicherheit

- Leistungseffizienz
Zwischenspeichern Daten bei Bedarf aus einem Datenspeicher in einen Cache laden. -Zuverlässigkeit

- Leistungseffizienz
Choreographie Lassen Sie einzelne Dienste entscheiden, wann und wie ein Geschäftsvorgang verarbeitet wird, statt je nach einem zentralen Orchestrator. - Operative Exzellenz

- Leistungseffizienz
Trennschalter Behandeln Sie Fehler, die eine variable Zeit zur Behebung benötigen können, wenn eine Anwendung eine Verbindung mit einem Remotedienst oder einer Ressource herstellt. -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 die Arbeit rückgängig, die durch eine Abfolge von Schritten ausgeführt wird, die zusammen eine letztendlich konsistente Operation bilden. -Zuverlässigkeit
Konkurrierende Verbraucher Ermöglichen Sie mehreren gleichzeitigen Konsumenten, Nachrichten zu verarbeiten, die sie im selben Messaging-Kanal empfangen. -Zuverlässigkeit

- Kostenoptimierung

- Leistungseffizienz
Computeressourcenkonsolidierung Konsolidieren Sie mehrere Aufgaben oder Vorgänge in einer einzigen Recheneinheit. - Kostenoptimierung

- Operative Exzellenz

- Leistungseffizienz
CQRS Trennen Sie Vorgänge, die Daten von denen lesen, die Daten aktualisieren, indem Sie unterschiedliche Schnittstellen verwenden. - Leistungseffizienz
Bereitstellungsstempel Bereitstellen mehrerer unabhängiger Kopien von Anwendungskomponenten, einschließlich Datenspeicher - Operative Exzellenz

- Leistungseffizienz
Event Sourcing Verwenden Sie einen append-only Speicher, um eine vollständige Serie von Ereignissen aufzuzeichnen, die beschreiben, welche Aktionen auf Daten in einem Bereich ausgeführt wurden. -Zuverlässigkeit

- Leistungseffizienz
Externer Konfigurationsspeicher Verschieben von Konfigurationsinformationen aus einem Anwendungsbereitstellungspaket an einen zentralen Speicherort. - Operative Exzellenz
Verbundidentität Delegieren Sie die Authentifizierung an einen externen Identitätsanbieter. -Zuverlässigkeit

-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 mithilfe eines einzelnen Endpunkts zu mehreren Diensten weiter. -Zuverlässigkeit

- Operative Exzellenz

- Leistungseffizienz
Druse Stellen Sie Back-End-Dienste über geografisch verteilte Knoten bereit. Jeder Knoten kann Clientanforderungen aus einer beliebigen Region verarbeiten. -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 über die Felder in Datenspeichern, auf die häufig verwiesen wird. -Zuverlässigkeit

- Leistungseffizienz
Leiterwahl Koordinieren Sie Aktionen in einer verteilten Anwendung, indem Sie eine Instanz als Anführer wählen. Der Leiter verwaltet eine Sammlung von Zusammenarbeitsaufgabeninstanzen. -Zuverlässigkeit
Materialisierte Sicht Generieren Sie vorab aufgefüllte Ansichten über die Daten in einem oder mehreren Datenspeichern, wenn die Daten für erforderliche Abfragevorgänge schlecht formatiert sind. - Leistungseffizienz
Messaging-Bridge Erstellen Sie einen Vermittler, um die Kommunikation zwischen Messagingsystemen zu ermöglichen, die andernfalls nicht kompatibel sind. - Kostenoptimierung

- Operative Exzellenz
Rohre und Filter Unterteilen einer Aufgabe, die komplexe Verarbeitungsvorgänge ausführt, in eine Reihe wiederverwendbarer separater Elemente -Zuverlässigkeit
Prioritätswarteschlange Priorisieren Sie Anforderungen, die an Dienste gesendet werden, sodass Anforderungen mit höherer Priorität schneller verarbeitet werden. -Zuverlässigkeit

- Leistungseffizienz
Herausgeber/Abonnent Ermöglichen Sie einer Anwendung, Ereignisse asynchron an mehrere Consumer anzukündigen, ohne Absender an Empfänger zu koppeln. -Zuverlässigkeit

-Sicherheit

- Kostenoptimierung

- Operative Exzellenz

- Leistungseffizienz
Quarantäne Stellen Sie sicher, dass externe Ressourcen ein vom Team vereinbartes Qualitätsniveau erfüllen, bevor die Arbeitsauslastung sie verbraucht. -Sicherheit

- Operative Exzellenz
Warteschlangenbasierter Lastenausgleich Verwenden Sie eine Warteschlange, die einen Puffer zwischen einem Vorgang und einem Dienst erstellt, um zeitweilige schwere Lasten zu glätten. -Zuverlässigkeit

- Kostenoptimierung

- Leistungseffizienz
Ratenbegrenzung Vermeiden Sie Drosselungsfehler oder reduzieren Sie ihre Häufigkeit, indem Sie den Ressourcenverbrauch steuern. -Zuverlässigkeit
Wiederholen. Ermöglichen Sie Anwendungen, erwartete temporäre Fehler zu behandeln, indem Sie fehlgeschlagene Vorgänge wiederholen. -Zuverlässigkeit
Saga Verwalten der Datenkonsistenz über Microservices hinweg in verteilten Transaktionsszenarien. -Zuverlässigkeit
Scheduler-Agent-Supervisor Koordinieren Sie eine Reihe von Aktionen über verteilte Dienste und Ressourcen hinweg. -Zuverlässigkeit

- Leistungseffizienz
Sequenzieller Konvoi Verarbeiten sie eine Reihe verwandter Nachrichten in einer definierten Reihenfolge, ohne andere Nachrichtengruppen zu blockieren. -Zuverlässigkeit
Sharding Einen Datenspeicher in einen Satz horizontaler Partitionen oder Shards unterteilen -Zuverlässigkeit

- Kostenoptimierung
Beiwagen Stellen Sie Komponenten in einem separaten Prozess oder Container bereit, um Isolation und Kapselung bereitzustellen. -Sicherheit

- Operative Exzellenz
Hosten von statischen Inhalten Stellen Sie statische Inhalte für die direkte Clientbereitstellung in einem cloudbasierten Speicherdienst bereit. - Kostenoptimierung
Strangler-Muster Inkrementelle Migration eines Legacysystems durch schrittweise Ersetzen von Funktionen durch neue Anwendungen und Dienste. -Zuverlässigkeit

- Kostenoptimierung

- Operative Exzellenz
Drosselung Steuern Sie den Ressourcenverbrauch von Anwendungen, Mandanten oder Diensten. -Zuverlässigkeit

-Sicherheit

- Kostenoptimierung

- Leistungseffizienz
Valet-Schlüssel Verwenden Sie ein Token oder einen Schlüssel, um Clients eingeschränkten, direkten Zugriff auf eine bestimmte Ressource oder einen bestimmten Dienst bereitzustellen. -Sicherheit

- Kostenoptimierung

- Leistungseffizienz

Nächste Schritte

Überprüfen Sie die Entwurfsmuster aus der Perspektive der Well-Architected Framework-Säule, die das Muster optimieren soll.