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. |
|
Antikorruptionsschicht | Implementieren Sie eine „Fassade“ oder Adapterebene zwischen einer modernen Anwendung und einem älteren System. |
|
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. |
|
Back-Ends für Front-Ends | Erstellen Sie separate Back-End-Dienste, die von bestimmten Frontend-Anwendungen oder Schnittstellen verwendet werden sollen. |
|
Bulkhead | Isolieren Sie Elemente einer Anwendung in Pools, sodass die anderen weiterhin funktionieren, falls einer ausfällt. |
|
Cache-Aside | Daten bei Bedarf aus einem Datenspeicher in einen Cache laden. |
|
Choreographie | Lassen Sie jeden Dienst entscheiden, wann und wie ein Geschäftsvorgang verarbeitet wird, anstatt einen zentralen Orchestrator zu nutzen. |
|
Sicherung | Behandeln Sie Fehler, deren Behebung beim Herstellen einer Verbindung mit einem Remotedienst oder einer Remoteressource unterschiedlich lange dauern kann. |
|
Anspruchsprüfung | Teilen Sie eine große Nachricht in eine Anspruchsprüfung und eine Nutzlast auf, um die Überlastung eines Nachrichtenbusses zu vermeiden. |
|
Ausgleichende Transaktion | Machen Sie durch eine Reihe von Schritten ausgeführte Arbeit rückgängig, die zusammen einen letztlich konsistenten Vorgang definieren. |
|
Konkurrierende Consumer | Mehreren gleichzeitigen Consumern die Verarbeitung von Nachrichten ermöglichen, die auf dem gleichen Messagingkanal empfangen werden |
|
Computeressourcenkonsolidierung | Konsolidieren Sie mehrere Aufgaben oder Vorgänge in einer einzigen Recheneinheit. |
|
CQRS | Trennen Sie mithilfe separater Schnittstellen Datenlesevorgänge von Vorgängen zur Aktualisierung von Daten. |
|
Bereitstellungsstempel | Bereitstellen mehrerer unabhängiger Kopien von Anwendungskomponenten, einschließlich Datenspeicher |
|
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. |
|
Externer Konfigurationsspeicher | Konfigurationsinformationen aus dem Anwendungsbereitstellungspaket an einen zentralen Speicherort verschieben |
|
Verbundidentität | Delegieren Sie die Authentifizierung an einen externen Identitätsanbieter. |
|
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. |
|
Gatewayaggregation | Aggregieren Sie mithilfe eines Gateways mehrere einzelne Anforderungen in einer einzigen Anforderung. |
|
Gatewayabladung | Lagern Sie gemeinsam genutzte oder spezielle Dienstfunktionen an einen Gatewayproxy aus. |
|
Gatewayrouting | Leiten Sie Anforderungen an mehrere Dienste mit einem einzelnen Endpunkt weiter. |
|
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. |
|
Ü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. |
|
Indextabelle | Erstellen Sie Indizes für die Felder im Datenspeicher, auf die häufig von Abfragen verwiesen wird. |
|
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. |
|
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 |
|
Messaging-Bridge | Erstellen Sie einen Vermittler, um die Kommunikation zwischen Messagingsystemen zu ermöglichen, die andernfalls aufgrund von Protokoll oder Format nicht kompatibel sind. |
|
Pipes und Filter | Unterteilen einer Aufgabe, die komplexe Verarbeitungsvorgänge ausführt, in eine Reihe wiederverwendbarer separater Elemente |
|
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. |
|
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. |
|
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. |
|
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. |
|
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. |
|
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. |
|
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. |
|
Scheduler-Agent-Supervisor | Koordinieren Sie eine Reihe von Aktionen in einer verteilten Gruppe von Diensten und anderen Remoteressourcen. |
|
Sequenzieller Konvoi | Verarbeiten Sie eine Reihe verwandter Nachrichten in einer festgelegten Reihenfolge, ohne die Verarbeitung anderer Nachrichtengruppen zu blockieren. |
|
Sharding | Einen Datenspeicher in einen Satz horizontaler Partitionen oder Shards unterteilen |
|
Sidecar | Komponenten einer Anwendung zwecks Isolation und Kapselung in einem separaten Prozess oder Container bereitstellen |
|
Hosten von statischen Inhalten | Stellen Sie statische Inhalte in einem cloudbasierten Speicherdienst bereit, der die Inhalte direkt an den Client übermitteln kann. |
|
Strangler-Muster | Migrieren Sie ein älteres System inkrementell, indem Sie bestimmte Teile der Funktionalität nach und nach durch neue Anwendungen und Dienste ersetzen. |
|
Drosselung | Steuern Sie den Verbrauch der von einer Anwendungsinstanz, einem einzelnen Mandanten oder einem gesamten Dienst verwendeten Ressourcen. |
|
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. |
|
Nächster Schritt
Betrachten Sie die Designmuster aus der Perspektive des Azure Well-Architected Elements, das mit dem Muster optimiert werden soll.
- Designmuster zur Unterstützung des Elements Reliability
- Designmuster zur Unterstützung des Elements Sicherheit
- Designmuster zur Unterstützung des Elements Kostenoptimierung
- Designmuster zur Unterstützung des Elements Operational Excellence
- Designmuster zur Unterstützung des Elements Leistungseffizienz