Entwurfsprinzipien einer unternehmenskritischen Workload
Die unternehmenskritische Entwurfsmethodik wird durch fünf wichtige Entwurfsprinzipien untermauert, die als Kompass für nachfolgende Entwurfsentscheidungen in den kritischen Entwurfsbereichen dienen. Wir empfehlen Ihnen dringend, sich mit diesen Prinzipien vertraut zu machen, um deren Auswirkungen und die Kompromisse, die mit der Nichteinhaltung verbunden sind, besser zu verstehen.
Wichtig
Dieser Artikel ist Teil der Unternehmenskritisch-Workloadreihe von Azure Well-Architected . Wenn Sie mit dieser Reihe nicht vertraut sind, empfehlen wir Ihnen, mit einer unternehmenskritischen Workload zu beginnen?
Diese unternehmenskritischen Entwurfsprinzipien entsprechen den Qualitätspfeilern des Azure Well-Architected Frameworks – Zuverlässigkeit, Sicherheit, Kostenoptimierung, Operational Excellence und Leistungseffizienz.
Zuverlässigkeit
Maximale Zuverlässigkeit : Grundlegendes Streben nach der zuverlässigsten Lösung, um sicherzustellen, dass Kompromisse richtig verstanden werden.
Entwurfsprinzip | Überlegungen |
---|---|
Aktiv/Aktiv-Design | Um die Verfügbarkeit zu maximieren und regionale Fehlertoleranz zu erreichen, sollten Lösungskomponenten nach Möglichkeit mithilfe eines Aktiv/Aktiv-Bereitstellungsmodells auf mehrere Verfügbarkeitszonen- und Azure-Regionen verteilt werden. |
Reduzierung des Strahlradius und Fehlerisolation | Fehler lassen sich in einer hoch verteilten mehrinstanzenfähigen Cloudumgebung wie Azure nicht vermeiden. Durch Antizipation von Fehlern und korrelierten Auswirkungen , von einzelnen Komponenten bis hin zu ganzen Azure-Regionen, kann eine Lösung auf resiliente Weise entworfen und entwickelt werden. |
Beobachten der Anwendungsintegrität | Bevor Probleme, die sich auf die Anwendungssicherheit auswirken, behoben werden können, müssen sie zuerst erkannt und verstanden werden. Durch die Überwachung des Betriebs einer Anwendung in Bezug auf einen bekannten fehlerfreien Zustand wird es möglich, Zuverlässigkeitsprobleme zu erkennen oder sogar vorherzusagen, sodass schnelle Abhilfemaßnahmen ergriffen werden können. |
Laufwerkautomatisierung | Eine der hauptursachen Ursachen für Ausfallzeiten von Anwendungen ist menschliches Versagen, unabhängig davon, ob dies auf die Bereitstellung unzureichend getesteter Software oder eine Fehlkonfiguration zurückzuführen ist. Um die Möglichkeit und die Auswirkungen menschlicher Fehler zu minimieren, ist es wichtig, die Automatisierung in allen Aspekten einer Cloudlösung anzustreben, um die Zuverlässigkeit zu verbessern. automatisierte Tests, Bereitstellung und Verwaltung. |
Entwurf mit Blick auf Selbstreparatur | Die Selbstreparatur beschreibt die Fähigkeit eines Systems, Fehler automatisch über vordefinierte Wartungsprotokolle zu behandeln, die mit Fehlermodi innerhalb der Lösung verbunden sind. Es handelt sich um ein fortschrittliches Konzept, das einen hohen Grad an Systemreife mit Überwachung und Automatisierung erfordert, aber von Anfang an darauf ausgerichtet sein sollte, die Zuverlässigkeit zu maximieren. |
Komplexitätsvermeidung | Vermeiden Sie unnötige Komplexität beim Entwerfen der Lösung und aller operativen Prozesse, um die Zuverlässigkeit und Verwaltungseffizienz zu steigern und die Wahrscheinlichkeit von Fehlern zu minimieren. |
Effiziente Leistung
Nachhaltige Leistung und Skalierbarkeit : Entwerfen sie für skalierbarkeitsübergreifende End-to-End-Lösung ohne Leistungsengpässe.
Entwurfsprinzip | Überlegungen |
---|---|
Entwurf mit Blick auf horizontale Skalierung | Horizontales Skalieren ist ein Konzept, das sich auf die Fähigkeit eines Systems konzentriert, auf die Nachfrage durch horizontales Wachstum zu reagieren. Dies bedeutet, dass mit zunehmendem Datenverkehr mehr Ressourceneinheiten parallel hinzugefügt werden, anstatt die Größe der vorhandenen Ressourcen zu erhöhen. Eine Systemfähigkeit, erwartete und unerwartete Datenverkehrserhöhungen über Skalierungseinheiten zu verarbeiten, ist für die Gesamtleistung und Zuverlässigkeit von entscheidender Bedeutung, indem die Auswirkungen eines einzelnen Ressourcenausfalls weiter reduziert werden. |
Automatisierung für Hyperscale | Skalierungsvorgänge in der gesamten Lösung sollten vollständig automatisiert werden, um die Auswirkungen auf Leistung und Verfügbarkeit durch unerwartete oder erwartete Zunahmen des Datenverkehrs zu minimieren und sicherzustellen, dass die Zeit, die zum Durchführen von Skalierungsvorgängen benötigt wird, verstanden und mit einem Modell für die Anwendungsintegrität abgestimmt wird. |
Kontinuierliche Prüfung und Tests | Automatisierte Tests sollten innerhalb von CI/CD-Prozessen durchgeführt werden, um die kontinuierliche Validierung für jede Anwendungsänderung zu fördern. Auslastungstests für eine Leistungsbaseline mit synchronisierten Chaosexperimenten sollten einbezogen werden, um vorhandene Schwellenwerte, Ziele und Annahmen zu überprüfen und risiken für Resilienz und Verfügbarkeit schnell zu identifizieren. Solche Tests sollten in Staging- und Testumgebungen, aber auch optional in Entwicklungsumgebungen durchgeführt werden. Es kann auch von Vorteil sein, eine Teilmenge von Tests für die Produktionsumgebung auszuführen, insbesondere in Verbindung mit einem blau/grünen Bereitstellungsmodell, um neue Bereitstellungsstempel zu überprüfen, bevor Produktionsdatenverkehr empfangen wird. |
Reduzieren des Mehraufwands mit verwalteten Computediensten | Die Verwendung von verwalteten Computediensten und Containerarchitekturen reduziert den laufenden Verwaltungs- und Betriebsaufwand für das Entwerfen, Betreiben und Skalieren von Anwendungen erheblich, indem die Bereitstellung und Wartung der Infrastruktur auf den verwalteten Dienstanbieter verlagert wird. |
Baselineleistung und Identifizieren von Engpässen | Leistungstests mit detaillierten Telemetriedaten aus jeder Systemkomponente ermöglichen die Identifizierung von Engpässen innerhalb des Systems, einschließlich Komponenten, die in Bezug auf andere Komponenten skaliert werden müssen, und diese Informationen sollten in ein Kapazitätsmodell integriert werden. |
Modellkapazität | Ein Kapazitätsmodell ermöglicht die Planung von Ressourcenskalierungsebenen für ein bestimmtes Auslastungsprofil und macht zusätzlich die Leistung von Systemkomponenten untereinander verfügbar, sodass eine systemweite Kapazitätszuordnungsplanung ermöglicht wird. |
Optimaler Betrieb
Betriebsabläufe nach Entwurf : Entwickelt, um ein robustes und durchsetzungsfähiges Betriebsmanagement zu ermöglichen.
Entwurfsprinzip | Überlegungen |
---|---|
Lose gekoppelte Komponenten | Die lose Kopplung ermöglicht unabhängige und bedarfsgesteuerte Tests, Bereitstellungen und Updates für Komponenten der Anwendung und minimiert gleichzeitig teamübergreifende Abhängigkeiten für Support, Dienste, Ressourcen oder Genehmigungen. |
Automatisieren von Build- und Releaseprozessen | Vollständig automatisierte Build- und Releaseprozesse reduzieren die Reibung und erhöhen die Geschwindigkeit der Bereitstellung von Updates, wodurch die Wiederholbarkeit und Konsistenz in allen Umgebungen verbessert wird. Automatisierung verkürzt die Feedbackschleife von Entwicklern, die Änderungen pushen, um Erkenntnisse zu Codequalität, Testabdeckung, Resilienz, Sicherheit und Leistung zu erhalten, was die Produktivität der Entwickler erhöht. |
Agilität für Entwickler | Die Automatisierung von Continuous Integration und Continuous Deployment (CI/CD) ermöglicht die Verwendung von kurzlebigen Entwicklungsumgebungen mit Lebenszyklus, die an die eines zugeordneten Featurebranch gebunden sind, was die Agilität der Entwickler fördert und die Validierung so früh wie möglich innerhalb des Engineeringzyklus steuert, um die Engineeringkosten von Fehlern zu minimieren. |
Quantifizieren der Betriebsintegrität | Die vollständige Diagnoseinstrumentierung aller Komponenten und Ressourcen ermöglicht die kontinuierliche Beobachtbarkeit von Protokollen, Metriken und Ablaufverfolgungen, erleichtert aber auch die Integritätsmodellierung, um die Anwendungsintegrität im Kontext der Verfügbarkeits- und Leistungsanforderungen zu quantifizieren. |
Testen der Wiederherstellung und Fehler | Planungs- und Übungsübungen für Geschäftskontinuität (Business Continuity, BC) und Notfallwiederherstellung (DR) sind unerlässlich und sollten häufig durchgeführt werden, da Erkenntnisse Pläne und Verfahren iterativ verbessern können, um die Resilienz bei ungeplanten Ausfallzeiten zu maximieren. |
Umsetzen kontinuierlicher betrieblicher Verbesserungen | Priorisieren Sie die routinemäßige Verbesserung der System- und Benutzerfreundlichkeit, indem Sie ein Integritätsmodell verwenden, um die betriebliche Effizienz mit Feedbackmechanismen zu verstehen und zu messen, damit Anwendungsteams Lücken iterativ verstehen und beheben können. |
Sicherheit
Immer sicher : Entwerfen sie für End-to-End-Sicherheit, um die Anwendungsstabilität zu gewährleisten und die Verfügbarkeit sicherzustellen.
Entwurfsprinzip | Überlegungen |
---|---|
Überwachen der Sicherheit der gesamten Lösung und Planen der Reaktion auf Vorfälle | Korrelieren Sie Sicherheits- und Überwachungsereignisse, um die Anwendungsintegrität zu modellieren und aktive Bedrohungen zu identifizieren. Richten Sie automatisierte und manuelle Verfahren für die Reaktion auf Vorfälle mithilfe von SIEM-Tools (Security Information and Event Management) für die Nachverfolgung ein. |
Modellieren und Testen potenzieller Bedrohungen | Stellen Sie eine geeignete Ressourcenhärtung sicher, und richten Sie Verfahren ein, um bekannte Bedrohungen zu identifizieren und zu mindern, indem Sie Penetrationstests zur Überprüfung der Bedrohungsminderung sowie statische Codeanalyse und Codeüberprüfung verwenden. |
Identifizieren und Schützen von Endpunkten | Überwachen und schützen Sie die Netzwerkintegrität interner und externer Endpunkte über Sicherheitsfunktionen und -appliances, z. B. Firewalls oder Web Application Firewalls. Verwenden Sie branchenübliche Ansätze, um sich vor gängigen Angriffsvektoren wie DDoS-Angriffen (Distributed Denial-Of-Service) wie SlowLoris zu schützen. |
Schutz vor Sicherheitsrisiken auf Codeebene | Identifizieren und minimieren Sie Sicherheitsrisiken auf Codeebene, z. B. standortübergreifende Skripterstellung oder SQL-Einschleusung, und integrieren Sie Sicherheitspatches in den Betriebslebenszyklus für alle Teile der Codebasis, einschließlich Abhängigkeiten. |
Automatisieren und Verwenden der geringsten Berechtigungen | Fördern Sie die Automatisierung, um die Notwendigkeit menschlicher Interaktion zu minimieren, und implementieren Sie die geringsten Berechtigungen sowohl für die Anwendung als auch für die Steuerungsebene, um vor Datenexfiltration und böswilligen Akteurszenarien zu schützen. |
Klassifizieren und Verschlüsseln von Daten | Klassifizieren Sie Daten nach Risiko, und wenden Sie die Branchenstandardverschlüsselung im Ruhezustand und während der Übertragung an, um sicherzustellen, dass Schlüssel und Zertifikate sicher gespeichert und ordnungsgemäß verwaltet werden. |
Kostenoptimierung
Es gibt offensichtliche Nachteile bei den Kosten, die mit der Einführung einer höheren Zuverlässigkeit verbunden sind, die im Kontext der Workloadanforderungen sorgfältig geprüft werden sollten.
Die Maximierung der Zuverlässigkeit kann sich auf die finanziellen Gesamtkosten der Lösung auswirken. Beispielsweise hat die Duplizierung von Ressourcen und die Regionsverteilung von Ressourcen, um Hochverfügbarkeit zu erreichen, klare Kostenauswirkungen. Um überhöhte Kosten zu vermeiden, sollten Sie nicht über die relevanten Geschäftsanforderungen hinausgehen oder übermäßig bereitstellen.
Darüber hinaus entstehen zusätzliche Kosten im Zusammenhang mit Technischen Investitionen in grundlegende Zuverlässigkeitskonzepte, z. B. die Nutzung von Infrastruktur als Code, Bereitstellungsautomatisierung und Chaos-Engineering. Dies hat kosten sowohl Zeit als auch Aufwand, der an anderer Stelle investiert werden könnte, um neue Anwendungsfunktionen und -features bereitzustellen.
Cloudnativer Entwurf
Native verwaltete Azure-Dienste : Native verwaltete Azure-Dienste werden aufgrund ihres geringeren Verwaltungs- und Betriebsaufwands sowie der engen Integration mit konsistenter Konfiguration und Instrumentierung im gesamten Anwendungsstapel priorisiert.
Roadmap-Ausrichtung : Integrieren Sie bevorstehende neue und verbesserte Azure-Dienstfunktionen, sobald sie allgemein verfügbar (GA) werden, um dem führenden Edge von Azure nahe zu bleiben.
Nutzen von Vorschaufunktionen und Verringern bekannter Lücken : Während allgemein verfügbare Dienste (GA) aus Gründen der Unterstützung priorisiert werden, werden Azure-Dienstvorschauen aktiv für eine schnelle Integration untersucht und geben Azure-Produktgruppen technisches und umsetzbares Feedback, um Lücken zu schließen.
Ausrichtung der Azure-Zielzone : Kann innerhalb einer Azure-Zielzone bereitgestellt und an der Entwurfsmethodik der Azure-Zielzone angepasst werden, aber auch voll funktionsfähig und in einer bloßen Umgebung außerhalb einer Zielzone bereitgestellt werden.
Nächster Schritt
Sehen Sie sich die übergreifenden Aspekte im Zusammenhang mit unternehmenskritischen Workloads an.