REL08-BP04 Bereitstellen mithilfe einer unveränderlichen Infrastruktur - AWS Well-Architected Framework

Die vorliegende Übersetzung wurde maschinell erstellt. Im Falle eines Konflikts oder eines Widerspruchs zwischen dieser übersetzten Fassung und der englischen Fassung (einschließlich infolge von Verzögerungen bei der Übersetzung) ist die englische Fassung maßgeblich.

REL08-BP04 Bereitstellen mithilfe einer unveränderlichen Infrastruktur

Eine unveränderliche Infrastruktur sieht vor, dass Updates, Sicherheits-Patches oder Konfigurationsänderungen nicht direkt in Produktions-Workloads durchgeführt werden. Wenn eine Änderung erforderlich ist, wird die Architektur auf einer neuen Infrastruktur eingerichtet und für die Produktion bereitgestellt.

Verfolgen Sie eine Strategie zur Bereitstellung einer unveränderlichen Infrastruktur, um die Zuverlässigkeit, Konsistenz und Reproduzierbarkeit Ihrer Workload-Bereitstellungen zu erhöhen.

Gewünschtes Ergebnis: Bei einer unveränderlichen Infrastruktur sind keine direkten Änderungen an den Infrastrukturressourcen innerhalb eines Workloads erlaubt. Wenn eine Änderung erforderlich ist, wird stattdessen ein neuer Satz aktualisierter Infrastrukturressourcen, der alle erforderlichen Änderungen enthält, parallel zu Ihren vorhandenen Ressourcen bereitgestellt. Diese Bereitstellung wird automatisch validiert und bei Erfolg wird der Datenverkehr schrittweise auf die neuen Ressourcen verlagert.

Diese Bereitstellungsstrategie gilt unter anderem für Softwareupdates, Sicherheits-Patches, Infrastrukturänderungen, Konfigurationsupdates und Anwendungsupdates.

Typische Anti-Muster:

  • Implementieren von Änderungen an laufenden Infrastruktur-Ressourcen vor Ort.

Vorteile der Nutzung dieser bewährten Methode:

  • Erhöhte Konsistenz zwischen verschiedenen Umgebungen: Da es keine Unterschiede bei den Infrastrukturressourcen zwischen den Umgebungen gibt, wird die Konsistenz erhöht und das Testen vereinfacht.

  • Verringerung der Konfigurationsabweichungen: Durch das Ersetzen von Infrastrukturressourcen durch eine bekannte und versionskontrollierte Konfiguration wird die Infrastruktur in einen bekannten, getesteten und vertrauenswürdigen Zustand versetzt, wodurch Konfigurationsabweichungen vermieden werden.

  • Zuverlässige atomare Bereitstellungen: Entweder werden die Verteilungen erfolgreich abgeschlossen oder es ändert sich nichts, was die Konsistenz und Zuverlässigkeit des Verteilungsprozesses erhöht.

  • Vereinfachte Bereitstellungen: Bereitstellungen werden vereinfacht, da sie keine Upgrades unterstützen müssen. Upgrades sind einfach neue Bereitstellungen.

  • Sicherere Bereitstellungen mit schnellen Rollback- und Wiederherstellungsprozessen: Bereitstellungen sind sicherer, da die vorherige funktionierende Version nicht geändert wird. Sie können einen Rollback zur vorherigen Version durchführen, wenn Fehler erkannt werden.

  • Verbesserte Sicherheitslage: Wenn Änderungen an der Infrastruktur nicht zugelassen werden, können Fernzugriffsmechanismen (z. B.SSH) deaktiviert werden. Dadurch wird der Angriffsvektor reduziert und die Sicherheitslage Ihrer Organisation verbessert.

Risikostufe, wenn diese bewährte Methode nicht eingeführt wird: Mittel

Implementierungsleitfaden

Automation

Bei der Definition einer Strategie zur Bereitstellung einer unveränderlichen Infrastruktur empfiehlt es sich, die Automatisierung so weit wie möglich zu nutzen, um die Reproduzierbarkeit zu erhöhen und das Potenzial für menschliche Fehler zu minimieren. Weitere Informationen finden Sie unter REL08-BP05 Automatisierte Implementierung von Änderungen und Automatisieren sicherer, automatischer Bereitstellungen.

Mit Infrastructure as code (IaC) werden Schritte zur Bereitstellung, Orchestrierung und Implementierung der Infrastruktur auf programmatische, beschreibende und deklarative Weise definiert und in einem Quellkontrollsystem gespeichert. Die Nutzung von Infrastructure as Code vereinfacht die Automatisierung der Infrastrukturbereitstellung und trägt zur Unveränderbarkeit der Infrastruktur bei.

Bereitstellungsmuster

Wenn eine Änderung des Workloads erforderlich ist, schreibt die Strategie der unveränderlichen Infrastrukturbereitstellung vor, dass ein neuer Satz von Infrastrukturressourcen bereitgestellt wird, einschließlich aller erforderlichen Änderungen. Es ist wichtig, dass diese neuen Ressourcen nach einem Muster eingeführt werden, das die Auswirkungen auf die Benutzer minimiert. Für diese Bereitstellung gibt es zwei Hauptstrategien:

Canary-Bereitstellung: Hierbei wird eine kleine Anzahl Ihrer Kunden auf die neue Version umgestellt, die in der Regel auf einer einzelnen Service-Instance (dem Canary) ausgeführt wird. Anschließend überprüfen Sie sämtliche Verhaltensänderungen oder Fehler, die generiert werden. Sie können Datenverkehr aus der Canary-Umgebung entfernen, wenn kritische Probleme auftreten, und die Benutzer auf die vorherige Version zurücksetzen. Wenn die Bereitstellung erfolgreich ist, können Sie die Bereitstellung mit der gewünschten Geschwindigkeit fortsetzen und gleichzeitig die Änderungen auf Fehler überwachen, bis Sie vollständig bereitgestellt sind. AWS CodeDeploy kann mit einer Bereitstellungskonfiguration konfiguriert werden, die eine Bereitstellung auf Canary-Computern ermöglicht.

Blue/Green-Bereitstellung: Verhält sich ähnlich wie die Canary-Bereitstellung, nur dass eine komplette Flotte der Anwendung parallel bereitgestellt wird. Sie können Ihre Bereitstellungen über die zwei Stacks (blau und grün) alternieren. Auch hier können Sie Datenverkehr an die neue Version senden und einen Failback auf die alte Version durchführen, wenn bei der Bereitstellung Probleme auftreten. In der Regel wird der gesamte Datenverkehr auf einmal umgestellt. Sie können jedoch auch Bruchteile Ihres Datenverkehrs für jede Version verwenden, um die Einführung der neuen Version mithilfe der gewichteten DNS Routing-Funktionen von Amazon Route 53 voranzutreiben. AWS CodeDeploy und AWS Elastic Beanstalkkann mit einer Bereitstellungskonfiguration konfiguriert werden, die eine blaue/grüne Bereitstellung ermöglicht.

Diagramm, das die Blau/Grün-Bereitstellung mit AWS Elastic Beanstalk und Amazon Route 53 zeigt

Abbildung 8: Blue/Green-Bereitstellung mit AWS Elastic Beanstalk und Amazon Route 53

Erkennung von Abweichungen

Als Abweichung wird jede Änderung bezeichnet, die dazu führt, dass eine Infrastrukturressource einen anderen Zustand oder eine andere Konfiguration aufweist als erwartet. Jede Art von nicht verwalteter Konfigurationsänderung widerspricht dem Konzept der unveränderlichen Infrastruktur und sollte erkannt und behoben werden, um eine erfolgreiche Implementierung der unveränderlichen Infrastruktur zu gewährleisten.

Implementierungsschritte

  • Untersagen Sie die Änderung laufender Infrastruktur-Ressourcen an Ort und Stelle.

    • Mit AWS Identity and Access Management (IAM) können Sie angeben, wer oder was auf Dienste und Ressourcen zugreifen kann AWS, detaillierte Berechtigungen zentral verwalten und den Zugriff analysieren, um die Zugriffsrechte zu verfeinern. AWS

  • Automatisieren Sie die Bereitstellung von Infrastrukturressourcen, um die Reproduzierbarkeit zu erhöhen und das Potenzial für menschliche Fehler zu minimieren.

    • Wie in der Einführung in ein AWS Whitepaper beschrieben, ist Automatisierung ein Eckpfeiler von AWS Services und wird intern in allen Services, Funktionen und Angeboten unterstützt. DevOps

    • Wenn Sie Ihr Amazon Machine Image (AMI) vorab erstellen, kann dies die Startzeit verkürzen. EC2Image Builder ist ein vollständig verwalteter AWS Service, mit dem Sie die Erstellung, Wartung, Validierung, gemeinsame Nutzung und Bereitstellung von benutzerdefinierten, sicheren und up-to-date Linux- oder Windows-spezifischen Anwendungen automatisieren könnenAMI.

    • Zu den Services, die die Automatisierung unterstützen, gehören:

      • AWS Elastic Beanstalkist ein Service zur schnellen Bereitstellung und Skalierung von mit Java entwickelten Webanwendungen,. NET, Node.jsPHP, Python, Ruby, Go und Docker auf vertrauten Servern wie ApacheNGINX, Passenger undIIS.

      • AWS Protonhilft Plattformteams dabei, all die verschiedenen Tools zu verbinden und zu koordinieren, die Ihre Entwicklungsteams für die Bereitstellung von Infrastruktur, Codebereitstellung, Überwachung und Updates benötigen. AWS Proton ermöglicht automatisierte Infrastruktur als Codebereitstellung und Bereitstellung von serverlosen und containerbasierten Anwendungen.

    • Die Nutzung von Infrastruktur als Code erleichtert die Automatisierung der Infrastrukturbereitstellung und trägt zur Unveränderlichkeit der Infrastruktur bei. AWS bietet Dienste, die die Erstellung, Bereitstellung und Wartung der Infrastruktur auf programmatische, beschreibende und deklarative Weise ermöglichen.

      • AWS CloudFormationhilft Entwicklern dabei, AWS Ressourcen auf geordnete und vorhersehbare Weise zu erstellen. Ressourcen werden im YAML Format JSON oder in Textdateien geschrieben. Die Vorlagen erfordern eine bestimmte Syntax und Struktur, die von den Arten der zu erstellenden und zu verwaltenden Ressourcen abhängt. Sie erstellen Ihre Ressourcen in JSON oder YAML mit einem beliebigen Code-Editor AWS Cloud9, z. B., checken sie in ein Versionskontrollsystem ein und erstellen CloudFormation dann die angegebenen Dienste auf sichere, wiederholbare Weise.

      • AWS Serverless Application Model (AWS SAM) ist ein Open-Source-Framework, auf dem Sie serverlose Anwendungen erstellen können. AWS AWS SAM lässt sich in andere AWS Dienste integrieren und ist eine Erweiterung von. AWS CloudFormation

      • AWS Cloud Development Kit (AWS CDK) ist ein Open-Source-Framework für die Softwareentwicklung zur Modellierung und Bereitstellung Ihrer Cloud-Anwendungsressourcen mit Hilfe gängiger Programmiersprachen. Sie können AWS CDK es verwenden, um die Anwendungsinfrastruktur mithilfe von Python TypeScript, Java und zu modellieren. NET. AWS CDK verwendet AWS CloudFormation im Hintergrund, um Ressourcen auf sichere und wiederholbare Weise bereitzustellen.

      • AWS Cloud Control APIführt einen gemeinsamen Satz von Create, Read, Update, Delete und List (CRUDL) APIs ein, mit dem Entwickler ihre Cloud-Infrastruktur auf einfache und konsistente Weise verwalten können. Die Cloud Control API Common APIs ermöglichen es Entwicklern, den Lebenszyklus von Diensten AWS und Diensten von Drittanbietern einheitlich zu verwalten.

  • Implementieren Sie Bereitstellungsmuster, die die Auswirkungen auf die Benutzer minimieren.

  • Erkennen Sie Konfigurations- oder Zustandsabweichungen. Weitere Informationen finden Sie unter Detecting unmanaged configuration changes to stacks and resources.

Ressourcen

Zugehörige bewährte Methoden:

Zugehörige Dokumente:

Zugehörige Videos: