4 Wege zur stabileren Infrastruktur

"Everything fails all the time". Dieses Zitat von Werner Vogels, welches ich auch sehr oft wiederhole, sollte sich jeder Cloud Anwender tatowieren lassen.

Zu häufig sehe ich bei meinen Kunden noch Server, die geschäftskritisch, aber nicht redundant sind. Auto Scaling Groups und skalierbare Anwendungen sind ebenfalls sehr selten anzutreffen.

Das dies im Zweifel hohe Kosten verursachen kann, direkten negativen Einfluss auf das Kundenerlebnis hat und auch Mitarbeiterzeit bindet, wird häufig ignoriert. Zu wichtig ist es die neusten Features und weitere Komponenten aufzusetzen.

Maßnahmen zur Stabilisierung der Cloud sind wie auch Ausgaben für die Sicherheit erst einmal genau das: Ausgaben.
Um die Vorteile dieser Ausgaben auch als Argumentation für Budgeterhöhungen greifbar zu machen, nutze ich gerne Fault Testing und Ausfallsimulationen.

1. CPU/Memory Auslastung simulieren

Mit dem Tool stress simuliere ich hohe CPU und Memory Auslastungen. Dies nutze ich vor allem um die Funktionalität von Auto Scaling Automatismen oder Monitoring Alarme zu testen.

Soll eine Auto Scaling Group bei einer Gesamtbelastung der CPU von z. B. 80% eine neue Instanz bereitstellen, kann dies mit diesem Tool simuliert werden.

Ein Scale-In kann simuliert werden, in dem die Lastsimulation beendet wird.

2. Infrastruktur Ausfälle simulieren

Durch die Terminierung von Instanzen können Failover Tests durchgeführt werden. Hierdurch lässt sich prüfen, was passiert, wenn eine EC2 Instanz, der physische Host der Instanz oder die Availability Zone ausfällt.

Außerdem lässt sich hierdurch die Resilienz einer Anwendung testen.

  • Führt die Terminierung einer Instanz zum Ausfall weiterer Instanzen?
  • Können Anfragen, die eigentlich nichts mit der terminierten Instanz zutun haben, weiterhin ausgeführt werden?
  • Ist die Gesamtanwendung weiterhin funktional?

All diese Fragen können durch das simple Terminieren einer Instanz beantwortet werden.

3. Lastspitzen erzeugen

Mit dem Tool JMeter generiere ich API-Anfragen und teste das Verhalten der API, bei unerwarteten Lastspitzen.

In der Vergangenheit habe ich auch schon das Tool wrk verwendet, welches sich für simple HTTP Requests ebenfalls gut eignet.

Eine weitere Möglichkeit ist die Verwendung einer vorgefertigten AWS Lösung. Hierbei handelt es sich um ein CloudFormation Template, welches die benötigten Ressourcen provisioniert. Mithilfe von Containern können verteilte Lasstest durchgeführt werden.

Dieses Tool ist über eine Weboberfläche erreichbar und intuitiv bedienbar. Dieses Tool ist nicht kostenfrei, da es Infrastrukturkosten verursacht.

Ob die Anwendung auch auf erhöhte Anfrageaufkommen reagieren kann und wie lange die Skalierung dauert, lässt sich mit diesen Tools beantworten.

Wichtig: Lasttests müssen dem AWS Support vorher angekündigt werden!

4. AWS Fault Injection Simulator

Mit dem AWS Fault Injection Simulator können verschiedene Szenarien mittels sog. Aktionen simuliert werden. Neben dem Terminieren einer Instanz oder eines gesamten Clusters können auch API Fehler injeziert werden oder eigene Fehlerszenarien mittels SSM implementiert werden.

Dieses Tool ist besonders für Failover Tests bei RDS Datenbanken oder zur Simulation von Netzwerkproblemen hilfreich.

Beim AWS Fault Injection Simulator fallen allerdings je nach Laufzeit der einzelnen Aktionen Kosten an. Diese Kosten sind vernachlässigbar im Vergleich zur manuellen Durchführung der Aktionen. Jedoch habe ich einige Kunden aus dem öffentlichen Sektor, welche nicht ohne weiteres neue kostenpflichtige Services nutzen dürfen.

Fazit

Ein Hauptversprechen der Cloud Nutzung ist die Flexibilität, die Verfügbarkeit von Ressourcen und die Automatisierbarkeit.

Dennoch lassen viele Unternehmen genau diese Vorteile ungenutzt. Durch instabile Architekturen und Infrastrukturkonfigurationen entsteht ein hohes Geschäftsrisiko.

Mithilfe von Infrastrukturtests und der Simulation von Ausfällen kann die Robustheit einer Architektur getestet werden.

Mich interessiert Deine Meinung!

Testest du regelmäßig deine Infrastruktur? Welche Maßnahmen unternimmst du, um Workloads stabiler zu gestalten?

Antworte gerne auf diesen Newsletter und teile mir mit, was dir gefallen hat, was dir gefehlt hat und was du dir für die Zukunft wünschst. Auch über fachlichen Input freue ich mich!

Leseempfehlungen

Bei weiterem Interesse empfehle ich die folgenden Artikel:

stress zur Generierung von CPU und Memory Lasten

AWS Fault Injection Simulator Actions ist der AWS Service für die Simulation von Ausfällen.

Verteilte Lasttests aus dem AWS Lösungsportfolio

Apache JMeter ist ein Tool zur Generierung von Anfragen und durchführung von Tests. Hiermit können komplexe Anfragen simuliert werden.

wrk ist ein Loadtesting Tool zur Generierung von HTTP Anfragen.

Wann immer du so weit bist, dies sind die Arten, wie wir dich unterstützen können:

  1. Führe unseren kostenlosen Cloud-Reifegrad Self-Check durch und erhalte eine Einschätzung deiner aktuellen Cloud-Architektur.
  2. Wir verhelfen unseren Kunden zu einer erfolgreichen Cloud-Migration und -Optimierung. Wenn du Unterstützung benötigst, lass uns reden!
  3. Du möchtest wissen, wie es um deine Cloud-Infrastruktur steht? Dann ist ein Architektur-Review für dich interessant!
Teile diesen Beitrag:

Verwandte Beiträge