

# REL 8. Wie implementieren Sie Änderungen?
<a name="rel-08"></a>

Kontrollierte Änderungen sind erforderlich, um neue Funktionen bereitzustellen und um sicherzustellen, dass die Workloads und die Betriebsumgebung bekannte Software ausführen und auf vorhersagbare Weise durch Patches aktualisiert oder ersetzt werden können. Wenn diese Änderungen nicht kontrolliert stattfinden, ist es schwierig, ihre Auswirkungen vorherzusagen oder daraus entstehende Probleme zu beheben. 

**Topics**
+ [REL08-BP01 Verwenden von Runbooks für Standardaktivitäten wie die Bereitstellung](rel_tracking_change_management_planned_changemgmt.md)
+ [REL08-BP02 Integrieren von Funktionstests in die Bereitstellung](rel_tracking_change_management_functional_testing.md)
+ [REL08-BP03 Integrieren von Ausfallsicherheitstests in die Bereitstellung](rel_tracking_change_management_resiliency_testing.md)
+ [REL08-BP04 Bereitstellung mit einer unveränderlichen Infrastruktur](rel_tracking_change_management_immutable_infrastructure.md)
+ [REL08-BP05 Automatisieren von Änderungen](rel_tracking_change_management_automated_changemgmt.md)

# REL08-BP01 Verwenden von Runbooks für Standardaktivitäten wie die Bereitstellung
<a name="rel_tracking_change_management_planned_changemgmt"></a>

 Runbooks sind vordefinierte Verfahren, die ein bestimmtes Ergebnis verfolgen. Verwenden Sie Runbooks, um Standardaktivitäten manuell oder automatisch durchzuführen. Beispiele für solche Aktivitäten sind etwa die Bereitstellung und das Patchen einer Workload oder das Vornehmen von DNS-Änderungen. 

 Sie können z. B. Prozesse einrichten, [um bei Bereitstellungen die Rollback-Sicherheit zu gewährleisten](https://aws.amazon.com/builders-library/ensuring-rollback-safety-during-deployments). Wenn Sie eine Bereitstellung ohne Unterbrechung für Ihre Kunden zurücksetzen können, steigert das die Zuverlässigkeit Ihres Service. 

 Für Runbook-Verfahren sollten Sie mit einem gültigen, effektiven manuellen Prozess beginnen, diesen in Code implementieren und ggf. die automatische Ausführung auslösen. 

 Selbst bei anspruchsvollen Workloads mit umfassender Automatisierung sind Runbooks nützlich, um [Ernstfallübungen auszuführen](https://docs.aws.amazon.com/wellarchitected/latest/reliability-pillar/test-reliability.html#GameDays) oder strenge Berichterstellungs- und Auditing-Anforderungen zu erfüllen. 

 Playbooks werden als Reaktion auf bestimmte Vorfälle verwendet und mit Runbooks sollen bestimmte Ergebnisse erzielt werden. Häufig werden Runbooks für Routineaktivitäten genutzt, während Playbooks für die Reaktion auf außerplanmäßige Ereignisse verwendet werden. 

 **Gängige Antimuster:** 
+  Durchführen ungeplanter Änderungen an der Konfiguration in der Produktion. 
+  Überspringen von Schritten in Ihrem Plan, um schneller bereitzustellen, was dann jedoch zum Fehlschlagen der Bereitstellung führt. 
+  Vornehmen von Änderungen, ohne die Umkehrung der Änderung zu testen. 

 **Vorteile der Einführung dieser bewährten Methode:** Die effektive Änderungsplanung erhöht Ihre Fähigkeit, die Änderung erfolgreich auszuführen, da Sie sich über alle betroffenen Systeme bewusst sind. Die Validierung Ihrer Änderungen in Testumgebungen erhöht Ihre Sicherheit. 

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

## Implementierungsleitfaden
<a name="implementation-guidance"></a>
+  Unterstützen Sie konsistente und schnelle Reaktionen auf gut bekannte Ereignisse, indem Sie Verfahren in Runbooks dokumentieren. 
  +  [AWS-Well-Architected-Framework: Konzepte: Runbook](https://wa.aws.amazon.com/wat.concept.runbook.en.html) 
+  Verwenden Sie zur Definition Ihrer Infrastruktur den Grundsatz „Infrastructure as Code“. Wenn Sie Ihre Infrastruktur mit AWS CloudFormation oder dem vertrauenswürdigen Tool eines Drittanbieters definieren, können Sie Änderungen mithilfe einer Versionskontrollsoftware versionieren und nachverfolgen. 
  +  Nutzen Sie zur Definition Ihrer Infrastruktur AWS CloudFormation (oder das vertrauenswürdige Tool eines Drittanbieters). 
    +  [Was ist AWS CloudFormation?](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/Welcome.html) 
  +  Erstellen Sie unter Anwendung guter Grundsätze für das Softwaredesign Vorlagen, die getrennt und entkoppelt sind. 
    +  Ermitteln Sie die für die Implementierung erforderlichen Berechtigungen, Vorlagen und zuständigen Parteien. 
      + [ Zugriffssteuerung mit AWS Identity and Access Management](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/using-iam-template.html)
    +  Verwenden Sie zur Versionskontrolle eine Quellkontrolle wie AWS CodeCommit oder das vertrauenswürdige Tool eines Drittanbieters. 
      +  [Was ist AWS CodeCommit?](https://docs.aws.amazon.com/codecommit/latest/userguide/welcome.html) 

## Ressourcen
<a name="resources"></a>

 **Relevante Dokumente:** 
+  [APN-Partner: Partner, die Sie beim Erstellen automatisierter Bereitstellungslösungen unterstützen können](https://aws.amazon.com/partners/find/results/?keyword=devops) 
+  [AWS Marketplace: Produkte zur Automatisierung Ihrer Bereitstellungen](https://aws.amazon.com/marketplace/search/results?searchTerms=DevOps) 
+  [AWS-Well-Architected-Framework: Konzepte: Runbook](https://wa.aws.amazon.com/wat.concept.runbook.en.html) 
+  [Was ist AWS CloudFormation?](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/Welcome.html) 
+  [Was ist AWS CodeCommit?](https://docs.aws.amazon.com/codecommit/latest/userguide/welcome.html) 

   **Ähnliche Beispiele:** 
+  [Automating operations with Playbooks and Runbooks (Vorgänge mit Playbooks und Runbooks automatisieren)](https://wellarchitectedlabs.com/operational-excellence/200_labs/200_automating_operations_with_playbooks_and_runbooks/) 

# REL08-BP02 Integrieren von Funktionstests in die Bereitstellung
<a name="rel_tracking_change_management_functional_testing"></a>

 Funktionstests werden im Rahmen der automatisierten Bereitstellung ausgeführt. Wenn die Erfolgskriterien nicht erfüllt sind, wird die Pipeline angehalten oder rückgängig gemacht. Diese Tests werden in einer Vorproduktionsumgebung ausgeführt, die vor der Produktion in der Pipeline bereitgestellt wird. Idealerweise erfolgt dies im Rahmen einer Bereitstellungspipeline. 

 Gewünschtes Ergebnis: Sie verwenden Automatisierung, um Funktionstests durchzuführen, und die zugehörigen Testdaten reduzieren die Testdauer und die Kosten und verbessern die Genauigkeit der Testergebnisse. Sie integrieren Funktionstests als Teil Ihres Bereitstellungsprozesses, was Ihnen hilft, Ihre Veröffentlichungspipelines für schnelle und zuverlässige Anwendungs- und Infrastrukturupdates zu automatisieren. 

 **Typische Anti-Muster:** 
+  Sie führen Tests außerhalb der Bereitstellungspipeline manuell durch. 
+  Sie überspringen Testschritte in Ihrer Automatisierung durch manuelle Notfall-Workflows. 
+  Sie folgen nicht Ihren etablierten Testplänen und Prozessen zugunsten beschleunigter Zeitpläne. 

 **Vorteile der Einführung dieser bewährten Methode:** Funktionstests bestätigen, dass das System gemäß den angegebenen Anforderungen funktioniert. Sie werden verwendet, um die beabsichtigte Funktionsreihenfolge von Komponenten wie Benutzeroberflächen, APIs, Datenbanken und Quellcode konsistent zu überprüfen. Wenn Sie diese Systemkomponenten untersuchen, stellen Funktionstests sicher, dass sich jedes Feature wie erwartet verhält, wodurch sowohl die Benutzererwartungen als auch die Integrität der Software geschützt werden. Integrieren Sie Funktionstests als Teil Ihrer regulären Bereitstellung und nutzen Sie die Automatisierung, um alle Änderungen umzusetzen, wodurch das Risiko menschlicher Fehler reduziert wird. 

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

## Implementierungsleitfaden
<a name="implementation-guidance"></a>

 Integrieren Sie Funktionstests in Ihre Bereitstellung. Funktionstests werden im Rahmen der automatisierten Bereitstellung ausgeführt. Wenn die Erfolgskriterien nicht erfüllt werden, wird die Pipeline gestoppt oder rückgängig gemacht. AWS CodePipeline bietet eine Continuous-Delivery-Pipeline für automatisierte Tests, die es Testern ermöglicht, den gesamten Test- und Bereitstellungsprozess zu automatisieren. Es lässt sich in AWS-Services wie AWS CodeBuild und AWS CodeDeploy zur Automatisierung der Erstellungs-, Test- und Bereitstellungsphasen des Softwareentwicklungszyklus integrieren. 

### Implementierungsschritte
<a name="implementation-steps"></a>
+  **Konfigurieren Sie Ihre Pipeline:** Richten Sie Ihre Quell-, Build-, Test- und Bereitstellungsphasen mithilfe der AWS CodePipeline-Konsole oder AWS Command Line Interface (CLI) ein. 
  +  **Definieren Sie Ihren Quellcode:** Mit AWS CodePipeline können Sie automatisch Quellcode von Versionskontrollsystemen wie GitHub AWS CodeCommit oder Bitbucket abrufen, wodurch verifiziert wird, dass immer der neueste Code zum Testen verwendet wird. 
  +  **Automatisieren Sie Builds und Tests:** AWS CodeBuild kann Ihren Code automatisch erstellen und testen und Testberichte generieren. Es unterstützt beliebte Testframeworks wie JUnit, NUnit und TestNG. 
  +  **Stellen Sie Ihren Code bereit:** Sobald der Code erstellt und getestet wurde, kann AWS CodeDeploy ihn in Ihrer Testumgebung bereitstellen, einschließlich Amazon EC2-Instances, AWS Lambda-Funktionen oder On-Premises-Servern. 
  +  **Überwachen Sie Pipelines:** AWS CodePipeline kann den Fortschritt Ihrer Pipeline und den Status jeder Phase verfolgen. Sie können auch Qualitätsprüfungen verwenden, um die Pipeline gemäß dem Testausführungsstatus zu blockieren. Außerdem können Sie Benachrichtigungen über jeden Ausfall einer Pipeline-Phase oder den Abschluss einer Pipeline erhalten. 

## Ressourcen
<a name="resources"></a>

 **Zugehörige Dokumente:** 
+  [Verwenden von AWS CodePipeline mit AWS CodeBuild zum Testen von Code und zum Ausführen von Builds](https://docs.aws.amazon.com/codebuild/latest/userguide/how-to-create-pipeline.html) 
+  [Protokollieren und Überwachen von AWS CodeBuild](https://docs.aws.amazon.com/codebuild/latest/userguide/logging-monitoring.html) 
+  [Indikatoren für Funktionstests](https://docs.aws.amazon.com/wellarchitected/latest/devops-guidance/indicators-for-functional-testing.html) 

# REL08-BP03 Integrieren von Ausfallsicherheitstests in die Bereitstellung
<a name="rel_tracking_change_management_resiliency_testing"></a>

 Integrieren Sie Resilienztests, indem Sie bewusst Fehler in Ihr System einleiten, um dessen Leistungsfähigkeit im Falle von Störszenarien zu messen. Resilienztests unterscheiden sich von Geräte- und Funktionstests, die normalerweise in Bereitstellungszyklen integriert werden, da sie sich auf die Identifizierung unerwarteter Ausfälle in Ihrem System konzentrieren. Es ist zwar sicher, in der Vorproduktion mit der Integration von Resilienztests zu beginnen, aber setzen Sie sich das Ziel, diese Tests im Rahmen Ihrer [https://docs.aws.amazon.com/wellarchitected/latest/reliability-pillar/test-reliability.html#GameDays](https://docs.aws.amazon.com/wellarchitected/latest/reliability-pillar/test-reliability.html#GameDays) in der Produktion zu implementieren. 

 **Gewünschtes Ergebnis**: Resilienztests tragen dazu bei, Vertrauen in die Fähigkeit des Systems aufzubauen, Beeinträchtigungen in der Produktion standzuhalten. Experimente identifizieren Schwachstellen, die zu Ausfällen führen könnten. Auf diese Weise können Sie Ihr System verbessern, um Ausfälle und Beeinträchtigungen automatisch und effizient zu beheben. 

 **Typische Anti-Muster:** 
+  Mangelnde Beobachtbarkeit und Überwachung in Bereitstellungsprozessen 
+  Verlass auf Menschen, um Systemausfälle zu beheben 
+  Analysemechanismen von schlechter Qualität 
+  Fokus auf bekannte Probleme in einem System und das Fehlen von Experimenten, um unbekannte Probleme zu identifizieren 
+  Identifizieren von Fehlern, aber keine Lösung 
+  Keine Dokumentation der Erkenntnisse und keine Runbooks 

 **Vorteile der Einführung dieser bewährten Methode:** Resilienztests, die in Ihre Bereitstellungen integriert sind, helfen dabei, unbekannte Probleme im System zu identifizieren, die andernfalls unbemerkt bleiben und zu Produktionsausfällen führen können. Die Identifizierung dieser unbekannten Probleme in einem System hilft Ihnen, Ergebnisse zu dokumentieren, Tests in Ihren CI/CD-Prozess zu integrieren und Runbooks zu erstellen, die die Schadensbegrenzung durch effiziente, wiederholbare Mechanismen vereinfachen. 

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

## Implementierungsleitfaden
<a name="implementation-guidance"></a>

 Die gängigsten Formen von Resilienztests, die in die Bereitstellungen Ihres Systems integriert werden können, sind die Notfallwiederherstellung und Chaos-Engineering. 
+  Fügen Sie Aktualisierungen Ihrer Notfallwiederherstellungspläne und Standardarbeitsanweisungen (SOPs) bei jeder wichtigen Bereitstellung hinzu. 
+  Integrieren Sie Zuverlässigkeitstests in Ihre automatisierten Bereitstellungspipelines. Services wie [AWS Resilience Hub](https://aws.amazon.com/resilience-hub/) können [in Ihre CI/CD-Pipeline integriert werden](https://aws.amazon.com/blogs/architecture/continually-assessing-application-resilience-with-aws-resilience-hub-and-aws-codepipeline/), um kontinuierliche Resilienzbewertungen zu erstellen, die im Rahmen jeder Bereitstellung automatisch bewertet werden. 
+  Definieren Sie Ihre Anwendungen in AWS Resilience Hub. Resilienzanalysen generieren Codefragmente, die Sie bei der Erstellung von Wiederherstellungsprozeduren als AWS Systems Manager-Dokumente für Ihre Anwendungen unterstützen und eine Liste mit empfohlenen Amazon CloudWatch-Monitoren und -Alarmen enthalten. 
+  Sobald Ihre DR-Pläne und SOPs aktualisiert sind, führen Sie Notfallwiederherstellungstests durch, um sicherzustellen, dass sie wirksam sind. Mithilfe von Notfallwiederherstellungstests können Sie feststellen, ob Sie Ihr System nach einem Ereignis wiederherstellen und zum normalen Betrieb zurückkehren können. Sie können verschiedene Notfallwiederherstellungsstrategien simulieren und feststellen, ob Ihre Planung ausreicht, um Ihre Verfügbarkeitsanforderungen zu erfüllen. Zu den gängigen Notfallwiederherstellungsstrategien gehören Backup und Wiederherstellung, Pilot Light, Cold Standby, Warm Standby, Hot Standby und Aktiv-Aktiv. Sie alle unterscheiden sich in Kosten und Komplexität. Vor dem Notfallwiederherstellungstest empfehlen wir, dass Sie Ihr Recovery Time Objective (RTO) und Ihr Recovery Point Objective (RPO) definieren, um die Wahl der zu simulierenden Strategie zu vereinfachen. AWS bietet Notfallwiederherstellungstools wie [AWS Elastic Disaster Recovery](https://aws.amazon.com/disaster-recovery/), die Ihnen unter anderem den Einstieg in Ihre Planung und Tests erleichtern. 
+  Experimente im Bereich des Chaos-Engineering führen zu Störungen im System, wie z. B. Netzwerk- und Serviceausfällen. Durch die Simulation mit kontrollierten Ausfällen können Sie die Sicherheitsschwachstellen Ihres Systems erkennen und gleichzeitig die Auswirkungen der eingeführten Fehler eindämmen. Führen Sie wie bei den anderen Strategien kontrollierte Ausfallsimulationen in Umgebungen außerhalb der Produktion durch, indem Sie beispielsweise Services wie [AWS Fault Injection Service](https://aws.amazon.com/fis/) nutzen, um vor dem Einsatz in der Produktion Vertrauen zu gewinnen. 

## Ressourcen
<a name="resources"></a>

 **Zugehörige Dokumente:** 
+  [Experimente mit Misserfolgen durch Resilienztests, um die Wiederherstellungsbereitschaft zu verbessern](https://docs.aws.amazon.com/wellarchitected/latest/devops-guidance/qa.nt.6-experiment-with-failure-using-resilience-testing-to-build-recovery-preparedness.html) 
+  [Kontinuierliche Bewertung der Anwendungsresistenz mit AWS Resilience Hub und AWS CodePipeline](https://aws.amazon.com/blogs/architecture/continually-assessing-application-resilience-with-aws-resilience-hub-and-aws-codepipeline/) 
+  [Architektur für die Notfallwiederherstellung in AWS, Teil I: Strategien für die Wiederherstellung in der Cloud](https://aws.amazon.com/blogs/architecture/disaster-recovery-dr-architecture-on-aws-part-i-strategies-for-recovery-in-the-cloud/) 
+  [Überprüfen Sie die Belastbarkeit Ihrer Workloads mit Chaos-Engineering](https://aws.amazon.com/blogs/architecture/verify-the-resilience-of-your-workloads-using-chaos-engineering/) 
+  [Grundlagen des Chaos-Engineering](https://principlesofchaos.org/) 
+  [Workshop zum Chaos-Engineering](https://disaster-recovery.workshop.aws/en/intro/concepts/chaos-engineering.html) 

 **Zugehörige Videos:** 
+  [AWS re:Invent 2020: Resilienz mit Chaos-Engineering testen](https://www.youtube.com/watch?v=OlobVYPkxgg) 
+  [Verbessern Sie die Ausfallsicherheit von Anwendungen mit AWS Fault Injection Service](https://www.youtube.com/watch?v=N0aZZVVZiUw) 
+  [Bereiten Sie Ihre Anwendungen vor und schützen Sie sie vor Störungen mit AWS Resilience Hub](https://www.youtube.com/watch?v=xa4BVl4N1Gw) 

# REL08-BP04 Bereitstellung mit einer unveränderlichen Infrastruktur
<a name="rel_tracking_change_management_immutable_infrastructure"></a>

 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](https://docs.aws.amazon.com/whitepapers/latest/introduction-devops-aws/in-place-deployments.html) 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:** Indem Sie keine Änderungen an der Infrastruktur zulassen, können Fernzugriffsmechanismen (wie 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
<a name="implementation-guidance"></a>

 **Automatisierung** 

 Bei der Definition einer Strategie zur Bereitstellung einer unveränderlichen Infrastruktur empfiehlt es sich, die [Automatisierung](https://aws.amazon.com/iam/) 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 Automatisieren von Änderungen](https://docs.aws.amazon.com/wellarchitected/latest/reliability-pillar/rel_tracking_change_management_automated_changemgmt.html) und [Automating safe, hands-off deployments (Automatisierung sicherer, vollautomatischer Bereitstellungen)](https://aws.amazon.com/builders-library/automating-safe-hands-off-deployments/). 

 Mit [Infrastructure as Code (IaC)](https://docs.aws.amazon.com/whitepapers/latest/introduction-devops-aws/infrastructure-as-code.html) 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: 

 [https://docs.aws.amazon.com/whitepapers/latest/introduction-devops-aws/canary-deployments.html](https://docs.aws.amazon.com/whitepapers/latest/introduction-devops-aws/canary-deployments.html): 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 verläuft, können Sie das gewünschte Tempo beibehalten und die Änderungen auf Fehler überwachen, bis der Bereitstellungsvorgang vollständig abgeschlossen ist. Sie können AWS CodeDeploy mit einer [Bereitstellungskonfiguration](https://docs.aws.amazon.com/codedeploy/latest/userguide/deployment-configurations.html) konfigurieren, die eine Canary-Bereitstellung ermöglicht. 

 [https://docs.aws.amazon.com/whitepapers/latest/overview-deployment-options/bluegreen-deployments.html](https://docs.aws.amazon.com/whitepapers/latest/overview-deployment-options/bluegreen-deployments.html): 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. Normalerweise wird der gesamte Datenverkehr auf einmal umgeschaltet. Sie können Ihren Datenverkehr aber auch auf die Versionen verteilen, um die Einführung der neuen Version mithilfe der gewichteten DNS-Routing-Funktionen von Amazon Route 53 durchzuführen. Sie können AWS CodeDeploy und [AWS Elastic Beanstalk](https://docs.aws.amazon.com/elasticbeanstalk/latest/relnotes/release-2020-05-18-ts-deploy.html) mit einer Bereitstellungskonfiguration konfigurieren, die eine Blau/Grün-Bereitstellung ermöglicht. 

![\[Diagram showing blue/green deployment with AWS Elastic Beanstalk and Amazon Route 53\]](http://docs.aws.amazon.com/de_de/wellarchitected/2024-06-27/framework/images/blue-green-deployment.png)


 **Abweichungserkennung** 

 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
<a name="implementation-steps"></a>
+  Untersagen Sie die Änderung laufender Infrastruktur-Ressourcen an Ort und Stelle. 
  +  Sie können [AWS Identity and Access Management (IAM)](https://aws.amazon.com/iam/) verwenden, um festzulegen, wer oder was auf Services und Ressourcen in AWS zugreifen darf, fein abgestufte Berechtigungen zentral verwalten und den Zugriff analysieren, um die Berechtigungen über AWS hinweg zu optimieren. 
+  Automatisieren Sie die Bereitstellung von Infrastrukturressourcen, um die Reproduzierbarkeit zu erhöhen und das Potenzial für menschliche Fehler zu minimieren. 
  +  Wie im [Whitepaper Introduction to DevOps on AWS](https://docs.aws.amazon.com/whitepapers/latest/introduction-devops-aws/automation.html) (Einführung in DevOps in AWS) beschrieben, ist die Automatisierung ein Eckpfeiler der AWS-Services und wird intern in allen Services, Features und Angeboten unterstützt. 
  +  Durch die *[Vorberechnung](https://docs.aws.amazon.com/whitepapers/latest/overview-deployment-options/prebaking-vs.-bootstrapping-amis.html)* Ihres Amazon Machine Image (AMI) können Sie die Zeit bis zum Start verkürzen. [EC2 Image Builder](https://aws.amazon.com/image-builder/) ist ein vollständig verwalteter AWS-Service, der Ihnen hilft, die Erstellung, Wartung, Validierung, Freigabe und Bereitstellung von benutzerdefinierten, sicheren und aktuellen Linux- oder Windows-AMIs zu automatisieren. 
  +  Zu den Services, die die Automatisierung unterstützen, gehören: 
    +  [AWS Elastic Beanstalk](https://aws.amazon.com/elasticbeanstalk/) ist ein Service zur schnellen Bereitstellung und Skalierung von Webanwendungen, die mit Java, .NET, PHP, Node.js, Python, Ruby, Go und Docker auf bekannten Servern wie Apache, NGINX, Passenger und IIS entwickelt wurden. 
    +  [AWS Proton](https://aws.amazon.com/proton/) unterstützt Plattformteams dabei, all die verschiedenen Tools zu verbinden und zu koordinieren, die Ihre Entwicklungsteams für die Bereitstellung der Infrastruktur, die Bereitstellung von Code, die Überwachung und Updates benötigen. AWS Proton ermöglicht die automatisierte Bereitstellung von Infrastruktur als Code und die Bereitstellung von Serverless und containerbasierten Anwendungen. 
  +  Die Nutzung von Infrastructure as Code erleichtert die Automatisierung der Infrastrukturbereitstellung und trägt zur Unveränderbarkeit der Infrastruktur bei. AWS bietet Services, die die Erstellung, Bereitstellung und Wartung der Infrastruktur auf programmatische, beschreibende und deklarative Weise ermöglichen. 
    +  [AWS CloudFormation](https://aws.amazon.com/cloudformation/) hilft Entwicklern dabei, AWS-Ressourcen in einer geordneten und vorhersehbaren Weise zu erstellen. Ressourcen werden in Textdateien im JSON- oder YAML-Format geschrieben. Die Vorlagen erfordern eine bestimmte Syntax und Struktur, die von den Arten der zu erstellenden und zu verwaltenden Ressourcen abhängt. Sie verfassen Ihre Ressourcen in JSON oder YAML mit einem beliebigen Code-Editor wie AWS Cloud9, checken sie in ein Versionskontrollsystem ein und CloudFormation baut dann die angegebenen Services auf sichere, wiederholbare Weise auf. 
    +  [AWS Serverless Application Model (AWS SAM)](https://aws.amazon.com/serverless/sam/) ist ein Open-Source-Framework, mit dem Sie Serverless-Anwendungen in AWS erstellen können. AWS SAM lässt sich mit anderen AWS-Services integrieren und ist eine Erweiterung von CloudFormation. 
    +  [AWS Cloud Development Kit (AWS CDK)](https://aws.amazon.com/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 verwenden, um die Anwendungsinfrastruktur mit TypeScript, Python, Java und .NET zu modellieren. AWS CDK verwendet CloudFormation im Hintergrund, um Ressourcen auf sichere, wiederholbare Weise bereitzustellen. 
    +  [AWS -Cloud-Control- API](https://aws.amazon.com/cloudcontrolapi/) führt einen gemeinsamen Satz von APIs zum Erstellen, Lesen, Aktualisieren, Löschen und Auflisten ein, mit denen Entwickler ihre Cloud-Infrastruktur auf einfache und konsistente Weise verwalten können. Die gemeinsamen Cloud Control API-APIs ermöglichen es Entwicklern, den Lebenszyklus von AWS- und Drittanbieter-Services einheitlich zu verwalten. 
+  Implementieren Sie Bereitstellungsmuster, die die Auswirkungen auf die Benutzer minimieren. 
  +  Canary-Bereitstellungen: 
    + [ Einrichten einer API Gateway-Canary-Bereitstellung als Release ](https://docs.aws.amazon.com/apigateway/latest/developerguide/canary-release.html)
    + [ Erstellen Sie eine Pipeline mit Canary-Bereitstellungen für Amazon ECS mit AWS App Mesh](https://aws.amazon.com/blogs/containers/create-a-pipeline-with-canary-deployments-for-amazon-ecs-using-aws-app-mesh/)
  +  Blau/Grün-Bereitstellungen: Das Whitepaper [Blau/Grün-Bereitstellungen in AWS](https://docs.aws.amazon.com/whitepapers/latest/blue-green-deployments/welcome.html) beschreibt [Beispieltechniken](https://docs.aws.amazon.com/whitepapers/latest/blue-green-deployments/implementation-techniques.html) zur Umsetzung von Blau/Grün-Bereitstellungsstrategien. 
+  Erkennen Sie Konfigurations- oder Zustandsabweichungen. Weitere Informationen finden Sie unter [Erkennen von nicht verwalteten Konfigurationsänderungen an Stacks und Ressourcen](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/using-cfn-stack-drift.html). 

## Ressourcen
<a name="resources"></a>

 **Zugehörige bewährte Methoden:** 
+ [ REL08-BP05 Automatisieren von Änderungen ](https://docs.aws.amazon.com/wellarchitected/latest/reliability-pillar/rel_tracking_change_management_automated_changemgmt.html)

 **Zugehörige Dokumente:** 
+ [Automating safe, hands-off deployments (Automatisierung sicherer, vollautomatischer Bereitstellungen)](https://aws.amazon.com/builders-library/automating-safe-hands-off-deployments/)
+ [ Nutzung von AWS CloudFormation zur Erstellung einer unveränderlichen Infrastruktur bei Nubank ](https://aws.amazon.com/blogs/mt/leveraging-immutable-infrastructure-nubank/)
+ [Infrastruktur als Code](https://docs.aws.amazon.com/whitepapers/latest/introduction-devops-aws/infrastructure-as-code.html)
+ [ Implementieren eines Alarms zur automatischen Erkennung von Abweichungen in AWS CloudFormation-Stacks ](https://docs.aws.amazon.com/blogs/mt/implementing-an-alarm-to-automatically-detect-drift-in-aws-cloudformation-stacks/)

 **Zugehörige Videos:** 
+ [AWS re:Invent 2020: Reliability, consistency, and confidence through immutability ](https://www.youtube.com/watch?v=jUSYnRztttY)(AWS re:Invent 2020: Zuverlässlichkeit, Konsistenz und Vertrauen durch Unveränderlichkeit)

# REL08-BP05 Automatisieren von Änderungen
<a name="rel_tracking_change_management_automated_changemgmt"></a>

 Bereitstellungen und Patches werden automatisiert, um negative Auswirkungen zu vermeiden. 

 Änderungen an Produktionssystemen gehören in vielen Organisationen zu den größten Risikofaktoren. Neben den geschäftlichen Problemen, die durch die Software behoben werden, betrachten wir Bereitstellungen als vorrangiges Problem, das es zu lösen gilt. Heutzutage bedeutet das, wenn immer möglich und sinnvoll, Vorgänge zu automatisieren. Dazu gehören Tests und die Bereitstellung von Änderungen, das Hinzufügen oder Entfernen von Kapazität und das Migrieren von Daten. 

 **Gewünschtes Ergebnis:** Sie integrieren automatische Bereitstellungssicherheit in den Veröffentlichungsprozess mit umfangreichen Tests vor der Produktion, automatischen Rollbacks und gestaffelten Produktionsbereitstellungen. Diese Automatisierung minimiert die potenziellen Auswirkungen auf die Produktion, die durch fehlgeschlagene Bereitstellungen verursacht werden, und Entwickler müssen die Bereitstellungen nicht mehr aktiv bis zur Produktion beobachten. 

 **Typische Anti-Muster:** 
+  Sie führen manuelle Änderungen durch. 
+  Sie überspringen Schritte in Ihrer Automatisierung durch manuelle Notfall-Workflows. 
+  Sie folgen nicht Ihren etablierten Plänen und Prozessen zugunsten beschleunigter Zeitpläne. 
+  Sie führen schnelle Folgebereitstellungen durch, ohne entsprechende Bake-Zeit einzuräumen. 

 **Vorteile der Einführung dieser bewährten Methode:** Wenn Sie alle Änderungen mithilfe der Automatisierung implementieren, vermeiden Sie das Risiko menschlicher Fehler und bieten die Möglichkeit, Tests durchzuführen, bevor Sie die Produktion ändern. Wenn Sie diesen Vorgang vor dem Produktionsstart durchführen, wird sichergestellt, dass Ihre Pläne vollständig sind. Darüber hinaus kann ein automatisches Rollback in Ihren Veröffentlichungsprozess Produktionsprobleme identifizieren und Ihren Workload wieder in den ursprünglichen Betriebszustand versetzen. 

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

## Implementierungsleitfaden
<a name="implementation-guidance"></a>

 Automatisieren Sie Ihre Bereitstellungs-Pipeline. Mit Bereitstellungs-Pipelines können Sie Tests und die Entdeckung von Anomalien automatisieren und die Pipeline an einem bestimmten Schritt vor der Bereitstellung in der Produktion anhalten oder eine Änderung automatisch zurückführen. Ein integraler Bestandteil davon ist die Einführung einer Kultur der [Continuous Integration und Continuous Delivery/Deployment (CI/CD](https://en.wikipedia.org/wiki/CI/CD)), bei der ein Commit oder eine Codeänderung verschiedene automatische Stage-Gates von der Build- und Testphase bis zur Bereitstellung in Produktionsumgebungen durchläuft. 

 Obwohl es immer noch als sinnvoll erachtet wird, Personen bei den komplexesten betrieblichen Abläufen einzubinden, empfehlen wir, diese Abläufe wegen ihrer Komplexität zu automatisieren. 

### Implementierungsschritte
<a name="implementation-steps"></a>

 Sie können Bereitstellungen automatisieren, um manuelle Operationen zu vermeiden, indem Sie die folgenden Schritte ausführen: 
+  **Einrichten eines Code-Repositorys zur Speicherung Ihres Codes:** Verwenden Sie [AWS CodeCommit,](https://docs.aws.amazon.com/codecommit/latest/userguide/setting-up.html) um ein sicheres Git-basiertes Repository zu erstellen. 
+  **Konfigurieren eines Continuous-Integration-Services, um Ihren Quellcode zu kompilieren, Tests auszuführen und Bereitstellungsartefakte zu erstellen:** Informationen zum Einrichten eines Build-Projekts für diesen Zweck finden Sie unter [Einstieg in AWS CodeBuild mithilfe der Konsole](https://docs.aws.amazon.com/codebuild/latest/userguide/getting-started.html). 
+  **Einrichten eines Bereitstellungsservices, der Anwendungsbereitstellungen automatisiert und die Komplexität von Anwendungsupdates mindert, ohne auf fehleranfällige manuelle Bereitstellungen angewiesen zu sein:** [AWS CodeDeploy](https://aws.amazon.com/codedeploy/) automatisiert Softwarebereitstellungen für eine Vielzahl von Computing-Services wie Amazon EC2, [AWS Fargate](https://aws.amazon.com/fargate/), [AWS Lambda](https://aws.amazon.com/lambda) und auf Ihren On-Premises-Servern. Informationen zur Konfiguration dieser Schritte finden Sie unter [Einstieg in CodeDeploy](https://docs.aws.amazon.com/codedeploy/latest/userguide/getting-started-codedeploy.html). 
+  **Konfigurieren eines Continuous-Integration-Services zur Automatisierung der Veröffentlichungspipelines für schnellere und zuverlässigere Anwendungs- und Infrastrukturupdates:** Erwägen Sie die Verwendung von [AWS CodePipeline](https://docs.aws.amazon.com/codepipeline/latest/userguide/getting-started-codepipeline.html), um die Automatisierung Ihrer Veröffentlichungspipelines zu unterstützen. Weitere Informationen finden Sie in den [CodePipeline-Tutorials](https://docs.aws.amazon.com/codepipeline/latest/userguide/tutorials.html). 

## Ressourcen
<a name="resources"></a>

 **Zugehörige bewährte Methoden:** 
+  [OPS05-BP04 Einsatz von Systemen zur Build- und Bereitstellungsverwaltung](https://docs.aws.amazon.com/wellarchitected/latest/operational-excellence-pillar/ops_dev_integ_build_mgmt_sys.html) 
+  [OPS05-BP10 Vollständige Automatisierung von Integration und Bereitstellung](https://docs.aws.amazon.com/wellarchitected/latest/operational-excellence-pillar/ops_dev_integ_auto_integ_deploy.html) 
+  [OPS06-BP02 Testbereitstellungen](https://docs.aws.amazon.com/wellarchitected/latest/operational-excellence-pillar/ops_mit_deploy_risks_test_val_chg.html) 
+  [OPS06-BP04 Automatisieren von Tests und Rollback](https://docs.aws.amazon.com/wellarchitected/latest/operational-excellence-pillar/ops_mit_deploy_risks_auto_testing_and_rollback.html) 

 **Zugehörige Dokumente:** 
+  [Continuous Delivery von geschachtelten AWS CloudFormation-Stacks mit AWS CodePipeline](https://aws.amazon.com/blogs/devops/continuous-delivery-of-nested-aws-cloudformation-stacks-using-aws-codepipeline) 
+  [Umfassende CI/CD mit AWS CodeCommit, AWS CodeBuild, AWS CodeDeploy und AWS CodePipeline](https://aws.amazon.com/blogs/devops/complete-ci-cd-with-aws-codecommit-aws-codebuild-aws-codedeploy-and-aws-codepipeline) 
+  [APN-Partner: Partner, die Sie beim Erstellen automatisierter Bereitstellungslösungen unterstützen können](https://aws.amazon.com/partners/find/results/?keyword=devops) 
+  [AWS Marketplace: Produkte zur Automatisierung Ihrer Bereitstellungen](https://aws.amazon.com/marketplace/search/results?searchTerms=DevOps) 
+  [Automatisieren von Chat-Nachrichten mit Webhooks](https://docs.aws.amazon.com/chime/latest/ug/webhooks.html) 
+  [Die Amazon Builders' Library: Rollback-Sicherheit bei Bereitstellungen gewährleisten](https://aws.amazon.com/builders-library/ensuring-rollback-safety-during-deployments) 
+  [Die Amazon Builders' Library: Schneller mit Continuous Delivery](https://aws.amazon.com/builders-library/going-faster-with-continuous-delivery/) 
+  [Was ist AWS CodePipeline?](https://docs.aws.amazon.com/codepipeline/latest/userguide/welcome.html) 
+  [Was ist CodeDeploy?](https://docs.aws.amazon.com/codedeploy/latest/userguide/welcome.html) 
+  [AWS Systems Manager Patch Manager](https://docs.aws.amazon.com/systems-manager/latest/userguide/systems-manager-patch.html) 
+  [Was ist Amazon SES?](https://docs.aws.amazon.com/ses/latest/DeveloperGuide/Welcome.html) 
+  [Was ist Amazon Simple Notification Service?](https://docs.aws.amazon.com/sns/latest/dg/welcome.html) 

 **Zugehörige Videos:** 
+  [AWS Summit 2019: CI/CD auf AWS](https://youtu.be/tQcF6SqWCoY) 