

# Entwerfen einer Workloads, die sich an Bedarfsänderungen anpasst
<a name="design-your-workload-to-adapt-to-changes-in-demand"></a>

 Eine skalierbare **Workload** bietet Elastizität, sodass Ressourcen automatisch hinzugefügt oder entfernt werden können, damit sie dem aktuellen Bedarf zu einem bestimmten Zeitpunkt genau entsprechen. 

**Topics**
+ [REL07-BP01 Automatisiertes Abrufen oder Skalieren von Ressourcen](rel_adapt_to_changes_autoscale_adapt.md)
+ [REL07-BP02 Abrufen von Ressourcen bei Erkennen einer Beeinträchtigung einer Workload](rel_adapt_to_changes_reactive_adapt_auto.md)
+ [REL07-BP03 Abrufen von Ressourcen bei Feststellung, dass für eine Workload mehr Ressourcen benötigt werden](rel_adapt_to_changes_proactive_adapt_auto.md)
+ [REL07-BP04 Belastungstest Ihr Workload](rel_adapt_to_changes_load_tested_adapt.md)

# REL07-BP01 Automatisiertes Abrufen oder Skalieren von Ressourcen
<a name="rel_adapt_to_changes_autoscale_adapt"></a>

 Ein Eckpfeiler der Zuverlässigkeit in der Cloud ist die programmatische Definition, Bereitstellung und Verwaltung Ihrer Infrastruktur und Ihrer Ressourcen. Die Automatisierung hilft Ihnen dabei, die Ressourcenbereitstellung zu optimieren, konsistente und sichere Bereitstellungen zu ermöglichen und Ressourcen in Ihrer gesamten Infrastruktur zu skalieren. 

 **Gewünschtes Ergebnis**: Sie verwalten Ihre Infrastructure as Code (IaC). Sie definieren und verwalten Ihren Infrastrukturcode in Versionsverwaltungssystemen (VCS, Version Control Systems). Sie delegieren die Bereitstellung von AWS-Ressourcen an automatisierte Mechanismen und nutzen verwaltete Services wie Application Load Balancer (ALB), Network Load Balancer (NLB) und Auto-Scaling-Gruppen. Sie stellen Ihre Ressourcen mithilfe von CI/CD-Pipelines (Continuous Integration/Continuous Delivery) bereit, sodass Codeänderungen automatisch Ressourcenaktualisierungen einleiten, einschließlich Aktualisierungen Ihrer Auto-Scaling-Konfigurationen. 

 **Typische Anti-Muster:** 
+  Sie stellen Ressourcen manuell über die Befehlszeile oder in der AWS-Managementkonsole bereit (auch als *ClickOps* bezeichnet). 
+  Sie koppeln Ihre Anwendungskomponenten oder Ressourcen eng miteinander und schaffen dadurch unflexible Architekturen. 
+  Sie implementieren starre Skalierungsrichtlinien, die sich nicht an geänderte Geschäftsanforderungen, Datenverkehrsmuster oder neue Ressourcentypen anpassen. 
+  Sie schätzen die Kapazität manuell ein, um den erwarteten Bedarf zu decken. 

 **Vorteile der Einführung dieser bewährten Methode**: Mit Infrastructure as Code (IaC) kann Infrastruktur programmgesteuert definiert werden. Auf diese Weise können Sie Infrastrukturänderungen über denselben Softwareentwicklungszyklus verwalten wie Anwendungsänderungen. Dies fördert die Konsistenz und Wiederholbarkeit und verringert das Risiko manueller, fehleranfälliger Aufgaben. Sie können den Prozess der Bereitstellung und Aktualisierung von Ressourcen weiter optimieren, indem Sie IaC mit automatisierten Bereitstellungspipelines implementieren. Sie können Infrastrukturupdates zuverlässig und effizient bereitstellen, ohne dass manuelle Eingriffe erforderlich sind. Diese Flexibilität ist besonders wichtig, wenn Ressourcen skaliert werden, um schwankenden Anforderungen gerecht zu werden. 

 Sie·erstellen·aus·Ihren·Protokollen·aggregierte·Metriken,·die·das·Verhalten·Ihrer·Workloads aus·einer·übergeordneten·Perspektive·darstellen. Durch die Überwachung wichtiger Metriken und die Anwendung vordefinierter Skalierungsrichtlinien kann Auto Scaling Ressourcen nach Bedarf automatisch bereitstellen oder die Bereitstellung aufheben, was die Leistung und Kosteneffizienz verbessert. Dadurch wird das Risiko manueller Fehler oder Verzögerungen bei der Reaktion auf Änderungen der Anwendungs- oder Workload-Anforderungen reduziert. 

 Die Kombination aus IaC, automatisierten Bereitstellungspipelines und Auto Scaling hilft Unternehmen dabei, ihre Umgebungen zuverlässig bereitzustellen, zu aktualisieren und zu skalieren. Diese Automatisierung ist für die Aufrechterhaltung einer reaktionsschnellen, belastbaren und effizient verwalteten Cloud-Infrastruktur unerlässlich. 

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

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

 Um die Automatisierung mit CI/CD-Pipelines und Infrastructure as Code (IaC) für Ihre AWS-Architektur einzurichten, wählen Sie ein Versionskontrollsystem wie Git, um Ihre IaC-Vorlagen und die Konfiguration zu speichern. Diese Vorlagen können mit Tools wie [AWS CloudFormation](https://aws.amazon.com/cloudformation/) geschrieben werden. Definieren Sie zunächst Ihre Infrastrukturkomponenten (z. B. AWSVPCs, Auto-Scaling-Gruppen in Amazon EC2 und Amazon-RDS-Datenbanken) innerhalb dieser Vorlagen. 

 Integrieren Sie dann diese IaC-Vorlagen in eine CI/CD-Pipeline, um den Bereitstellungsprozess zu automatisieren. [AWS CodePipeline](https://aws.amazon.com/codepipeline/)bietet eine nahtlose, AWS-native Lösung, Sie können aber auch andere CI/CD-Lösungen von Drittanbietern verwenden. Erstellen Sie eine Pipeline, die bei Änderungen an Ihrem Versionsverwaltungs-Repository aktiviert wird. Konfigurieren Sie die Pipeline so, dass sie Stufen enthält, die Ihre IaC-Vorlagen erweitern und validieren, die Infrastruktur in einer Staging-Umgebung bereitstellen, automatisierte Tests ausführen und schließlich für die Produktion bereitstellen. Integrieren Sie bei Bedarf Genehmigungsschritte, um die Kontrolle über Änderungen zu behalten. Diese automatisierte Pipeline beschleunigt nicht nur die Bereitstellung, sondern sorgt auch für Konsistenz und Zuverlässigkeit in allen Umgebungen. 

 Konfigurieren Sie Auto Scaling für Ressourcen wie Amazon-EC2-Instances, Amazon-ECS-Aufgaben und Datenbankreplikate in Ihrer IaC, um bei Bedarf ein automatisches Aufskalieren und Abskalieren zu ermöglichen. Auf diese Weise verbessert sich die Verfügbarkeit und Leistung der Anwendungen und die Kosten werden optimiert, da die Ressourcen dynamisch an den Bedarf angepasst werden. Eine Liste der unterstützten Ressourcen finden Sie unter [Amazon EC2 Auto Scaling](https://docs.aws.amazon.com/autoscaling/ec2/userguide/what-is-amazon-ec2-auto-scaling.html) und [AWS Auto Scaling](https://docs.aws.amazon.com/autoscaling/application/userguide/what-is-application-auto-scaling.html). 

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

1.  Erstellen und verwenden Sie ein Quellcode-Repository, um den Code zu speichern, der Ihre Infrastrukturkonfiguration steuert. Übernehmen Sie die Änderungen in dieses Repository, um alle laufenden Änderungen widerzuspiegeln, die Sie vornehmen möchten. 

1.  Wählen Sie eine Infrastructure-as-Code-Lösung wie AWS CloudFormation, um Ihre Infrastruktur auf dem neuesten Stand zu halten und Abweichungen (Drift) gegenüber dem geplanten Zustand zu erkennen. 

1.  Integrieren Sie Ihre IaC-Plattform mit Ihrer CI/CD-Pipeline, um Bereitstellungen zu automatisieren. 

1.  Ermitteln und erfassen Sie die geeigneten Metriken für eine automatische Skalierung von Ressourcen. 

1.  Konfigurieren Sie die automatische Skalierung von Ressourcen mithilfe von Richtlinien für das Auf- und Abskalieren, die für Ihre Workload-Komponenten geeignet sind. Erwägen Sie die Verwendung einer geplanten Skalierung bei vorhersehbaren Nutzungsmustern. 

1.  Überwachen Sie Bereitstellungen, um Fehler und Regressionen zu erkennen. Implementieren Sie Rollback-Mechanismen innerhalb Ihrer CI/CD-Plattform, um Änderungen bei Bedarf rückgängig zu machen. 

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

 **Zugehörige Dokumente:** 
+  [AWS Auto Scaling: Funktionsweise von Skalierungsplänen](https://docs.aws.amazon.com/autoscaling/plans/userguide/how-it-works.html) 
+  [AWS Marketplace: Für Auto Scaling geeignete Produkte](https://aws.amazon.com/marketplace/search/results?searchTerms=Auto+Scaling) 
+  [Automatische Verwaltung der Durchsatzkapazität mit DynamoDB-Auto-Scaling](https://docs.aws.amazon.com/amazondynamodb/latest/developerguide/AutoScaling.html) 
+  [Nutzen eines Load Balancer mit einer Auto-Scaling-Gruppe](https://docs.aws.amazon.com/autoscaling/ec2/userguide/autoscaling-load-balancer.html) 
+  [Was ist AWS Global Accelerator?](https://docs.aws.amazon.com/global-accelerator/latest/dg/what-is-global-accelerator.html) 
+  [Was ist Amazon EC2 Auto Scaling?](https://docs.aws.amazon.com/autoscaling/ec2/userguide/what-is-amazon-ec2-auto-scaling.html) 
+  [Was ist AWS Auto Scaling?](https://docs.aws.amazon.com/autoscaling/plans/userguide/what-is-aws-auto-scaling.html) 
+  [Was ist Amazon CloudFront?](https://docs.aws.amazon.com/AmazonCloudFront/latest/DeveloperGuide/Introduction.html?ref=wellarchitected) 
+  [Was ist Amazon Route 53?](https://docs.aws.amazon.com/Route53/latest/DeveloperGuide/Welcome.html) 
+  [Was ist Elastic Load Balancing?](https://docs.aws.amazon.com/elasticloadbalancing/latest/userguide/what-is-load-balancing.html) 
+  [Was ist ein Network Load Balancer?](https://docs.aws.amazon.com/elasticloadbalancing/latest/network/introduction.html) 
+  [Was ist ein Application Load Balancer?](https://docs.aws.amazon.com/elasticloadbalancing/latest/application/introduction.html) 
+  [Integrieren von Jenkins mit AWS CodeBuild und AWS CodeDeploy](https://aws.amazon.com/blogs/devops/setting-up-a-ci-cd-pipeline-by-integrating-jenkins-with-aws-codebuild-and-aws-codedeploy/) 
+  [Erstellen einer vierstufigen Pipeline mit AWS CodePipeline](https://docs.aws.amazon.com/codepipeline/latest/userguide/tutorials-four-stage-pipeline.html) 

 **Zugehörige Videos:** 
+  [Zurück zu den Grundlagen: Stellen Sie Ihren Code in Amazon EC2 bereit](https://www.youtube.com/watch?v=f2wvEQ_sWS8) 
+  [AWS bietet Ihnen Unterstützung \$1 Infrastructure-as-Code-Lösung mithilfe von AWS CloudFormation-Vorlagen starten](https://www.youtube.com/watch?v=bgfx76jr7tA) 
+  [Optimieren des Prozesses zur Software-Veröffentlichung mit AWS CodePipeline](https://www.youtube.com/watch?v=zMa5gTLrzmQ) 
+  [Überwachen von AWS-Ressourcen mithilfe von Amazon-CloudWatch-Dashboards](https://www.youtube.com/watch?v=I7EFLChc07M) 
+  [Erstellen von konto- und regionsübergreifenden CloudWatch-Dashboards \$1 Amazon Web Services](https://www.youtube.com/watch?v=eIUZdaqColg) 

# REL07-BP02 Abrufen von Ressourcen bei Erkennen einer Beeinträchtigung einer Workload
<a name="rel_adapt_to_changes_reactive_adapt_auto"></a>

 Skalieren Sie Ressourcen bei Bedarf reaktiv, wenn die Verfügbarkeit beeinträchtigt ist, um die Verfügbarkeit der Workload wiederherzustellen. 

 Sie müssen zunächst Zustandsprüfungen und die Kriterien für diese Prüfungen konfigurieren, um anzugeben, wann die Verfügbarkeit durch fehlende Ressourcen beeinträchtigt wird. Benachrichtigen Sie anschließend entweder die zuständigen Mitarbeiter, um die Ressource manuell zu skalieren, oder starten Sie die Automatisierung, um sie automatisch zu skalieren. 

 Die Skalierung kann manuell an Ihre Workload angepasst werden, z. B. indem Sie die Anzahl der EC2-Instances in einer Auto Scaling-Gruppe ändern oder den Durchsatz einer DynamoDB-Tabelle über die AWS-Managementkonsole oder AWS CLI. Wann immer es möglich ist, sollte jedoch Automatisierung eingesetzt werden (siehe **Automatisiertes Abrufen oder Skalieren von Ressourcen**). 

 **Gewünschtes Ergebnis:** Skalierungsaktivitäten (entweder automatisch oder manuell) werden eingeleitet, um die Verfügbarkeit wiederherzustellen, sobald ein Ausfall oder eine Verschlechterung der Kundenerfahrung festgestellt wird. 

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

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

 Implementieren Sie Beobachtbarkeit und Überwachung für alle Komponenten Ihres Workloads, um die Kundenerfahrung zu überwachen und Fehler zu erkennen. Definieren Sie die manuellen oder automatischen Verfahren zur Skalierung der erforderlichen Ressourcen. Weitere Informationen finden Sie unter [REL11-BP01 Überwachen aller Komponenten der Workload auf Fehler](https://docs.aws.amazon.com/wellarchitected/latest/reliability-pillar/rel_withstand_component_failures_monitoring_health.html). 

### Implementierungsschritte
<a name="implementation-steps"></a>
+  Definieren Sie die manuellen oder automatisierten Verfahren, mit denen die erforderlichen Ressourcen skaliert werden. 
  +  Die Skalierungsverfahren hängen davon ab, wie die verschiedenen Komponenten innerhalb Ihres Workloads gestaltet sind. 
  +  Die Skalierungsverfahren variieren auch je nach der zugrunde liegenden Technologie, die verwendet wird. 
    +  Komponenten, die AWS Auto Scaling verwenden, können Skalierungspläne nutzen, um eine Reihe von Anweisungen für die Skalierung Ihrer Ressourcen zu konfigurieren. Wenn Sie mit AWS CloudFormation arbeiten oder AWS-Ressourcen Tags hinzufügen, können Sie pro Anwendung Skalierungspläne für verschiedene Ressourcengruppen einrichten. Auto Scaling bietet Empfehlungen für Skalierungsstrategien, die auf die einzelnen Ressourcen zugeschnitten sind. Nachdem Sie einen Skalierungsplan erstellt haben, kombiniert Auto Scaling zur Unterstützung Ihrer Skalierungsstrategie Methoden für die dynamische und prädiktive Skalierung. Weitere Informationen finden Sie unter [Funktionsweise von Skalierungsplänen](https://docs.aws.amazon.com/autoscaling/plans/userguide/how-it-works.html). 
    +  Mit Amazon EC2 Auto Scaling können Sie sicherstellen, dass Ihnen die richtige Anzahl von Amazon EC2-Instances zur Verfügung steht, um die Anwendungslast zu bewältigen. Sie erstellen Sammlungen von EC2 Instances, die als Auto Scaling-Gruppen bezeichnet werden. In jeder Auto Scaling-Gruppe können Sie die Mindestanzahl von Instances angeben. Amazon EC2 Auto Scaling stellt dann sicher, dass die Gruppe diese Größe nie unter- oder überschreitet. Weitere Informationen finden Sie unter [Was ist Amazon EC2 Auto Scaling](https://docs.aws.amazon.com/autoscaling/ec2/userguide/what-is-amazon-ec2-auto-scaling.html)? 
    +  Amazon DynamoDB-Auto-Scaling verwendet den -Application-Auto-Scaling-Service, um die bereitgestellte Durchsatzkapazität in Ihrem Namen als Reaktion auf tatsächliche Datenverkehrsmuster dynamisch anzupassen. Auf diese Weise kann eine Tabelle oder ein globaler sekundärer Index die bereitgestellte Lese- und Schreibkapazität zum Verarbeiten eines plötzlichen Datenverkehrsanstiegs ohne Drosselung erhöhen. Weitere Informationen finden Sie unter [Automatische Verwaltung der Durchsatzkapazität mit DynamoDB-Auto-Scaling](https://docs.aws.amazon.com/amazondynamodb/latest/developerguide/AutoScaling.html). 

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

 **Zugehörige bewährte Methoden:** 
+ [ REL07-BP01 Automatisiertes Abrufen oder Skalieren von Ressourcen ](https://docs.aws.amazon.com/wellarchitected/latest/reliability-pillar/rel_adapt_to_changes_autoscale_adapt.html)
+  [REL11-BP01 Überwachen aller Komponenten der Workload auf Fehler](https://docs.aws.amazon.com/wellarchitected/latest/reliability-pillar/rel_withstand_component_failures_monitoring_health.html) 

 **Zugehörige Dokumente:** 
+  [AWS Auto Scaling: Funktionsweise von Skalierungsplänen](https://docs.aws.amazon.com/autoscaling/plans/userguide/how-it-works.html) 
+  [Automatische Verwaltung der Durchsatzkapazität mit DynamoDB-Auto-Scaling](https://docs.aws.amazon.com/amazondynamodb/latest/developerguide/AutoScaling.html) 
+  [Was ist Amazon EC2 Auto Scaling?](https://docs.aws.amazon.com/autoscaling/ec2/userguide/what-is-amazon-ec2-auto-scaling.html) 

# REL07-BP03 Abrufen von Ressourcen bei Feststellung, dass für eine Workload mehr Ressourcen benötigt werden
<a name="rel_adapt_to_changes_proactive_adapt_auto"></a>

 Eine der wertvollsten Funktionen von Cloud Computing ist die Fähigkeit, Ressourcen dynamisch bereitzustellen. 

 In herkömmlichen On-Premises-Computerumgebungen müssen Sie im Voraus genügend Kapazität identifizieren und bereitstellen, um Zeiten mit höchster Auslastung bewältigen zu können. Dies ist ein Problem, da es teuer ist und die Verfügbarkeit gefährdet sein kann, wenn Sie die Spitzenkapazitätsanforderungen des Workloads unterschätzen. 

 In der Cloud ist dies nicht notwendig. Hier können Sie die Rechen-, Datenbank- und sonstigen Ressourcenkapazitäten nach Bedarf bereitstellen, um den aktuellen und prognostizierten Bedarf zu decken. Automatisierte Lösungen wie Amazon EC2 Auto Scaling und Application Auto Scaling können Ressourcen basierend auf von Ihnen angegebenen Metriken online für Sie bereitstellen. Dies kann den Skalierungsprozess einfacher und vorhersehbarer machen. Ihre Workloads sind jetzt erheblich zuverlässiger, da sichergestellt wird, dass Ihnen jederzeit genügend Ressourcen zur Verfügung stehen. 

 **Gewünschtes Ergebnis**: Sie konfigurieren die automatische Skalierung von Rechenleistung und anderen Ressourcen, um den Bedarf zu decken. Sie sorgen in Ihren Skalierungsrichtlinien für ausreichend Spielraum, damit Datenverkehrsspitzen aufgefangen werden können, während zusätzliche Ressourcen online geschaltet werden. 

 **Typische Anti-Muster:** 
+  Sie stellen eine feste Anzahl von skalierbaren Ressourcen bereit. 
+  Sie wählen eine Skalierungsmetrik, die nicht dem tatsächlichen Bedarf entspricht. 
+  Sie bieten in Ihren Skalierungsplänen nicht genügend Spielraum, um Nachfragespitzen Rechnung zu tragen. 
+  Ihre Skalierungsrichtlinien erhöhen die Kapazität zu spät, dadurch kommt es zu einer Erschöpfung der Kapazitäten und zu einem schlechten Service, während zusätzliche Ressourcen online geschaltet werden. 
+  Sie konfigurieren die minimale und maximale Anzahl an Ressourcen nicht korrekt, was zu Skalierungsfehlern führt. 

 **Vorteile der Einführung dieser bewährten Methode:** Ausreichend Ressourcen zur Deckung des aktuellen Bedarfs sind entscheidend, um eine hohe Verfügbarkeit Ihres Workloads zu gewährleisten und Ihre definierten Servicelevel-Ziele (SLOs) einzuhalten. Durch die automatische Skalierung können Sie die richtige Menge an Rechen-, Datenbank- und sonstigen Ressourcen bereitstellen, die Ihr Workload benötigt, um den aktuellen und prognostizierten Bedarf zu decken. Sie müssen den Spitzenkapazitätsbedarf nicht ermitteln und Ressourcen nicht statisch zuweisen, um dem Bedarf gerecht zu werden. Sie haben vielmehr die Möglichkeit, bei steigendem Bedarf mehr Ressourcen zuzuweisen und bei einem Rückgang des Bedarfs Ressourcen zu deaktivieren, um die Kosten zu senken. 

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

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

 Stellen Sie zunächst fest, ob die Workload-Komponente für die automatische Skalierung geeignet ist. Diese Komponenten werden als *horizontal skalierbar* bezeichnet, da sie dieselben Ressourcen bereitstellen und sich identisch verhalten. Beispiele für horizontal skalierbare Komponenten sind EC2-Instances, die gleich konfiguriert sind, Aufgaben von [Amazon Elastic Container Service (ECS)](https://aws.amazon.com/ecs/) und Pods, die auf [Amazon Elastic Kubernetes Service (EKS)](https://aws.amazon.com/eks/) ausgeführt werden. Diese Rechenressourcen befinden sich in der Regel hinter einem Load Balancer und werden als *Replikate* bezeichnet. 

 Weitere replizierte Ressourcen können Datenbanklesereplikate, [Amazon-DynamoDB-Tabellen](https://aws.amazon.com/dynamodb/) und [Amazon ElastiCache](https://aws.amazon.com/elasticache/) (Redis OSS)-Cluster sein. Eine vollständige Liste der unterstützten Ressourcen finden Sie unter [AWS-Services, die Sie mit Application Auto Scaling verwenden können](https://docs.aws.amazon.com/autoscaling/application/userguide/integrated-services-list.html). 

 Bei containerbasierten Architekturen müssen Sie möglicherweise auf zwei verschiedene Arten skalieren. Zunächst müssen Sie möglicherweise die Container skalieren, die horizontal skalierbare Services bereitstellen. Zweitens müssen Sie möglicherweise die Rechenressourcen skalieren, um Platz für neue Container zu schaffen. Für jede Ebene gibt es unterschiedliche automatische Skalierungsmechanismen. Um ECS-Aufgaben zu skalieren, können Sie [Application Auto Scaling](https://docs.aws.amazon.com/AmazonECS/latest/developerguide/service-auto-scaling.html) verwenden. Um Kubernetes-Pods zu skalieren, können Sie [Horizontal Pod Autoscaler (HPA)](https://kubernetes.io/docs/tasks/run-application/horizontal-pod-autoscale/) oder [Kubernetes Event-Driven Autoscaling (KEDA)](https://keda.sh/) verwenden. Zum Skalieren der Rechenressourcen können Sie [Kapazitätsanbieter](https://docs.aws.amazon.com/AmazonECS/latest/developerguide/asg-capacity-providers.html) für ECS oder, für Kubernetes, [Karpenter](https://karpenter.sh) oder [Cluster Autoscaler](https://kubernetes.io/docs/concepts/cluster-administration/cluster-autoscaling/) verwenden. 

 Wählen Sie als Nächstes aus, wie Sie die automatische Skalierung durchführen möchten. Es gibt drei Hauptoptionen: metrikbasierte Skalierung, geplante Skalierung und prädiktive Skalierung. 

 **Metrikbasierte Skalierung** 

 Bei der metrikbasierten Skalierung werden Ressourcen auf der Grundlage des Werts einer oder mehrerer *Skalierungsmetriken* bereitgestellt. Eine Skalierungsmetrik entspricht dem Bedarf Ihres Workloads. Eine gute Methode, um geeignete Skalierungsmetriken zu ermitteln, besteht darin, Lasttests in einer Nicht-Produktionsumgebung durchzuführen. Halten Sie während der Lasttests die Anzahl skalierbarer Ressourcen konstant und erhöhen Sie die Nachfrage langsam (z. B. Durchsatz, Parallelität oder simulierte Benutzer). Suchen Sie dann nach Metriken, die sich bei steigender Nachfrage erhöhen (oder verringern) und sich umgekehrt bei sinkender Nachfrage verringern (oder erhöhen). Zu den typischen Skalierungsmetriken gehören die CPU-Auslastung, die Tiefe der Arbeitswarteschlange (z. B. einer [Amazon SQS](https://aws.amazon.com/sqs/)-Warteschlange), die Anzahl der aktiven Benutzer und der Netzwerkdurchsatz. 

**Anmerkung**  
 AWS hat beobachtet, dass bei den meisten Anwendungen die Speicherauslastung in der Aufwärmphase der Anwendung zunimmt und dann einen konstanten Wert erreicht. Wenn die Nachfrage sinkt, bleibt die Speicherauslastung in der Regel erhöht und geht nicht parallel zurück. Da die Speicherauslastung in beiden Richtungen nicht dem Bedarf entspricht, also nicht mit dem Bedarf steigt und fällt, sollten Sie es sich genau überlegen, bevor Sie diese Metrik für die automatische Skalierung auswählen. 

 Die metrikbasierte Skalierung ist eine *latente Operation*. Es kann mehrere Minuten dauern, bis die Nutzungsmetriken auf Auto-Scaling-Mechanismen übertragen werden. Diese Mechanismen warten in der Regel auf ein deutliches Signal für eine erhöhte Nachfrage, bevor sie reagieren. Wenn der Autoscaler dann neue Ressourcen erstellt, kann es zusätzliche Zeit dauern, bis diese voll funktionsfähig sind. Aus diesem Grund ist es wichtig, dass Sie Ihre Skalierungsmetrikziele nicht zu nahe an der Vollauslastung festlegen (z. B. 90 % CPU-Auslastung). Ansonsten besteht die Gefahr, dass die vorhandene Ressourcenkapazität ausgeschöpft wird, bevor zusätzliche Kapazität verfügbar ist. Um eine optimale Verfügbarkeit zu erreichen, können die Ziele für die Ressourcennutzung typischerweise zwischen 50 und 70 % liegen, je nach Bedarfsmuster und Zeitaufwand für die Bereitstellung zusätzlicher Ressourcen. 

 **Geplante Skalierung** 

 Bei der geplanten Skalierung werden Ressourcen basierend auf dem Kalender oder der Tageszeit bereitgestellt oder entfernt. Sie wird häufig für Workloads mit vorhersehbarem Bedarf verwendet, wenn es beispielsweise zu den Geschäftszeiten an Wochentagen oder bei Verkaufsveranstaltungen zu einer Spitzenauslastung kommt. Sowohl [Amazon EC2 Auto Scaling](https://docs.aws.amazon.com/autoscaling/ec2/userguide/ec2-auto-scaling-scheduled-scaling.html) als auch [Application Auto Scaling](https://docs.aws.amazon.com/autoscaling/application/userguide/application-auto-scaling-scheduled-scaling.html) unterstützen die geplante Skalierung. Der [Cron Scaler](https://keda.sh/docs/latest/scalers/cron/) von KEDA unterstützt die geplante Skalierung von Kubernetes-Pods. 

 **Prädiktive Skalierung** 

 Die prädiktive Skalierung verwendet Machine Learning, um Ressourcen automatisch basierend auf der erwarteten Nachfrage zu skalieren. Bei der prädiktiven Skalierung wird der historische Wert einer von Ihnen angegebenen Nutzungsmetrik analysiert und ihr zukünftiger Wert kontinuierlich prognostiziert. Der prognostizierte Wert wird dann verwendet, um die Ressource nach oben oder unten zu skalieren. [Amazon EC2 Auto Scaling](https://docs.aws.amazon.com/autoscaling/ec2/userguide/ec2-auto-scaling-predictive-scaling.html) kann eine prädiktive Skalierung durchführen. 

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

1.  Ermitteln Sie, ob die Workload-Komponente für die automatische Skalierung geeignet ist. 

1.  Finden Sie heraus, welche Art von Skalierungsmechanismus für den Workload am besten geeignet ist: metrikbasierte Skalierung, geplante Skalierung oder prädiktive Skalierung. 

1.  Wählen Sie den geeigneten automatischen Skalierungsmechanismus für die Komponente aus. Verwenden Sie Amazon EC2 Auto Scaling für Amazon-EC2-Instances. Verwenden Sie Application Auto Scaling für andere AWS-Services. Für Kubernetes-Pods (wie z. B. solche, die in einem Amazon-EKS-Cluster ausgeführt werden) können Sie Horizontal Pod Autoscaler (HPA) oder Kubernetes Event-Driven Autoscaling (KEDA) in Betracht ziehen. Für Kubernetes- oder EKS-Knoten sollten Sie Karpenter und Cluster Auto Scaler (CAS) in Betracht ziehen. 

1.  Führen Sie für die metrikbasierte oder geplante Skalierung Lasttests durch, um die geeigneten Skalierungsmetriken und Zielwerte für Ihren Workload zu ermitteln. Ermitteln Sie für die geplante Skalierung die benötigte Ressourcenanzahl zu den von Ihnen ausgewählten Daten und Uhrzeiten. Ermitteln Sie die maximale Anzahl an Ressourcen, die benötigt werden, um die erwartete Verkehrsspitze zu bewältigen. 

1.  Konfigurieren Sie den Autoscaler auf der Grundlage der oben gesammelten Informationen. Weitergehende Informationen finden Sie in der Dokumentation zum Auto-Scaling-Service. Stellen Sie sicher, dass die Ober- und Untergrenze für die Skalierung korrekt konfiguriert sind. 

1.  Vergewissern Sie sich, dass die Skalierungskonfiguration wie erwartet funktioniert. Führen Sie Lasttests in einer Nicht-Produktionsumgebung durch, beobachten Sie, wie das System reagiert und nehmen Sie gegebenenfalls Anpassungen vor. Wenn Sie Auto Scaling in der Produktion aktivieren, konfigurieren Sie entsprechende Alarme, damit Sie über unerwartetes Verhalten informiert werden. 

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

 **Zugehörige Dokumente:** 
+  [Was ist Amazon EC2 Auto Scaling?](https://docs.aws.amazon.com/autoscaling/ec2/userguide/what-is-amazon-ec2-auto-scaling.html) 
+  [AWS – Präskriptive Leitlinien: Anwendungen für Lasttests](https://docs.aws.amazon.com/prescriptive-guidance/latest/load-testing/) 
+  [AWS Marketplace: Für Auto Scaling geeignete Produkte](https://aws.amazon.com/marketplace/search/results?searchTerms=Auto+Scaling) 
+  [Automatische Verwaltung der Durchsatzkapazität mit DynamoDB-Auto-Scaling](https://docs.aws.amazon.com/amazondynamodb/latest/developerguide/AutoScaling.html) 
+  [Predictive Scaling for EC2, Powered by Machine Learning](https://aws.amazon.com/blogs/aws/new-predictive-scaling-for-ec2-powered-by-machine-learning/) 
+  [Scheduled Scaling for Amazon EC2 Auto Scaling](https://docs.aws.amazon.com/autoscaling/ec2/userguide/schedule_time.html) 
+  [Berichte über das Gesetz von Little](https://brooker.co.za/blog/2018/06/20/littles-law.html) 

# REL07-BP04 Belastungstest Ihr Workload
<a name="rel_adapt_to_changes_load_tested_adapt"></a>

 Messen Sie anhand von Lasttests, ob die Skalierung den Workload-Anforderungen gerecht wird. 

 Es ist wichtig, regelmäßige Lasttests durchzuführen. Auslastungstests sollten die Belastungsgrenze ermitteln und die Leistung Ihres Workloads testen. AWS macht es einfach, temporäre Testumgebungen einzurichten, die den Umfang Ihrer Produktionslast modellieren. Sie können in der Cloud bei Bedarf eine Testumgebung in Produktionsgröße einrichten, Ihre Tests abschließen und die Ressourcen dann wieder stilllegen. Weil Sie für die Testumgebung nur dann zahlen, wenn sie genutzt wird, können Sie Ihre Live-Umgebung zu einem Bruchteil der Kosten testen, die Sie an einem On-Premises-Standort hätten. 

 Lasttests in der Produktion sollten auch im Rahmen von Ernstfallübungen durchgeführt werden, bei denen das Produktionssystem in einem Zeitraum mit geringer Kundennutzung stark belastet wird. Alle Mitarbeiter sollten an dieser Übung beteiligt sein, die Ergebnisse gemeinsam interpretieren und auftretende Probleme beheben. 

 **Typische Anti-Muster:** 
+  Es werden Lasttests für Bereitstellungen durchgeführt, die nicht mit der Konfiguration der Produktionsumgebung übereinstimmen. 
+  Lasttests werden nur für einzelne Teile, nicht aber für den gesamten Workload durchgeführt. 
+  Es werden Lasttests mit einer Teilmenge von Anfragen durchgeführt, aber nicht mit einer repräsentativen Gruppe tatsächlicher Anfragen. 
+  Es werden Lasttests mit einem kleinen Sicherheitsfaktor durchgeführt, der über der erwarteten Last liegt. 

 **Vorteile der Nutzung dieser bewährten Methode:** Sie wissen, welche Komponenten in der Architektur unter Last ausfallen, und können die zu überwachenden Metriken festlegen, die rechtzeitig auf die Annäherung an die Belastungsgrenze hinweisen, damit Sie das Problem beheben und entsprechende Auswirkungen vermeiden können. 

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

## Implementierungsleitfaden
<a name="implementation-guidance"></a>
+  Bestimmen Sie anhand von Lasttests, welcher Aspekt der Workload angeben soll, dass Kapazität hinzugefügt oder entfernt werden muss. Bei Lasttests sollte ein repräsentativer Datenverkehr zum Einsatz kommen, der dem in der Produktion ähnelt. Erhöhen Sie unter Beobachtung der instrumentierten Metriken die Last, um zu bestimmen, welche Metrik angibt, wann Ressourcen hinzugefügt oder entfernt werden müssen. 
  +  [Distributed Load Testing auf AWS: Simulieren Sie Tausende verbundener Benutzer](https://aws.amazon.com/solutions/distributed-load-testing-on-aws/) 
    +  Ermitteln Sie die Zusammensetzung von Anfragen. Möglicherweise haben Sie unterschiedliche Zusammensetzungen von Anfragen. Daher sollten Sie sich bei der Ermittlung der Zusammensetzung des Datenverkehrs verschiedene Zeiträume ansehen. 
    +  Implementieren Sie einen Lasttreiber. Zum Implementieren eines Lasttreibers können Sie Software mit eigenem Code, Open-Source-Software oder kommerzielle Software verwenden. 
    +  Führen Sie Lasttests zunächst mit geringer Kapazität durch. Schon bei der Erhöhung der Last für eine Einheit mit geringerer Kapazität, etwa einer einzelnen Instance oder einem einzelnen Container, stellen Sie unmittelbare Auswirkungen fest. 
    +  Führen Sie Lasttests mit größerer Kapazität durch. Bei einer verteilten Last sehen die Auswirkungen anders aus. Daher müssen Sie bei Tests Bedingungen herstellen, die der Produktionsumgebung möglichst nahekommen. 

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

 **Zugehörige Dokumente:** 
+  [Distributed Load Testing aktiviert AWS: simulieren Sie Tausende verbundener Benutzer](https://aws.amazon.com/solutions/distributed-load-testing-on-aws/) 
+  [Anwendungen für Lasttests](https://docs.aws.amazon.com/prescriptive-guidance/latest/load-testing/welcome.html) 

 **Zugehörige Videos:** 
+  [AWS Summit ANZ 2023: Mit AWS Distributed Load Testing können Sie mit Zuversicht schneller vorankommen](https://www.youtube.com/watch?v=4J6lVqa6Yh8) 