Simoorg vereinfacht Testing der Widerstandskraft von Applikationsinfrastrukturen

Simoorg – LinkedIns neues Open Source Failure-Induction-Framework
Kommentare

Bereits in der Vergangenheit hat LinkedIn mit dem Open Sourcing von Tools wie etwa dem Metadaten-Management-Tool WhereHows auf sich aufmerksam gemacht. Mit Simoorg hat das Entwicklerteam nun ein neues Failure-Induction-Framework vorgestellt, das das Testing der Widerstandskraft von Applikationsinfrastrukturen bei unerwarteten Ausfallsszenarien vereinfachen soll.

Zwar gibt es bereits eine Reihe von ähnlichen Failure-Induction-Frameworks wie etwa Netflix’ Chaos Monkey, allerdings ließen sich diese, so erklärt Arjun Shenoy im LinkedIn-Engineering-Blog, nicht ausreichend an die Bedürfnisse des sozialen Netzwerks anpassen. Stattdessen benötigte man ein System, das es nicht nur erlaubt, mehrere Custom-Ausfallszenarien zu überprüfen, sondern das gleichzeitig genug Flexibilität bietet, um über verschiedene Plattformen hinweg zu funktionieren.

Simoorg überprüft Widerstandskraft von Applikationsinfrastrukturen

Genau hierfür wurde Simoorg entwickelt. Das Ziel des in Python geschriebenen Open-Source-Frameworks soll es sein, zu überprüfen, wie sich Cluster in einem Ausfallszenario verhalten:

The main motivation behind the process is to observe how a healthy cluster will respond to a particular failure, or a set of failures.

Daraus sollen sich anschließend verschiedenste Analysen ablesen lassen, etwa mit wie viel Traffic ein Service umgehen kann, bevor er sich auf die Performance auswirkt, wie sich ein Service in einer Low-Latency-Umgebung gegenüber der Nutzung in einer High-Latency-Umgebung verhält oder welche Änderungen sich während einer vollständigen Garbage Collection ergeben.

Ebenso soll Simoorg die Infrastruktur einer Applikation auf ihre Widerstandsfähigkeit testen. Dafür werden Ausfälle erzeugt, die einen oder mehrere Hosts zum Ausschalten zwingen und so einen Neustart der Applikation auslösen. Außerdem lässt sich ein solches Failure-Induction-Framework auch zum Performance-Benchmarking, der Ressourcen-Optimierung sowie zum Stress- und Skalierbarkeits-Testing genutzt werden.

Failure-Induction mit Simoorg

Üblicherweise besteht der Prozess der Failure-Induction aus drei verschiedenen Schritten: den Ausfall herbeiführen, den Cluster im Ausfallszenario überprüfen und den Cluster zu einem „gesunden“ Status zurückzuführen. Je nach genutztem Framework oder Tool unterscheiden sich die Methoden der Failure-Induction und Failure-Reversion. Simoorg unterscheidet sich davon jedoch in mehreren Key-Features, etwa Custom-Failures, konfigurierbaren Einschränkungen oder einer pluggable Architektur.

Insgesamt besteht Simoorg aus verschiedenen Komponenten (siehe Screenshot):

  • dem Root-Observer Moirai: zentraler Single-Thread-Prozess, der alle Aktivitäten des Frameworks überwacht
  • Atropos: ein individueller Prozess, der sich auf alle Aktivitäten konzentriert, die zu einem bestimmten Service gehören
  • HealthCheck: stellt die Stabilität des Clusters und der einzelnen Nodes sicher, bevor der Ausfall ausgelöst wird
  • API-Server: dient als Frontend zum Einholen der Details von den einzelnen Observer-Units
Komponenten in Simoorg

Komponenten in Simoorg, Quelle: LinkedIn

Darüber hinaus besteht eine Atropos-Unit ebenfalls aus einzelnen Komponenten, die verschiedene Aufgaben übernehmen (siehe Screenshot):

  • Topology
  • Scheduler
  • Handler
  • Logger
  • Journal
Atropos-Unit in Simoorg

Atropos-Unit in Simoorg, Quelle: LinkedIn


Mehr Informationen dazu bietet der oben angesprochene Blogpost von Arjun Shenoy. Simoorg steht auf GitHub zur Verfügung, dort finden sich auch zahlreiche weitere nützliche Tipps zur Nutzung sowie die Dokumentation des Simoorg-APIs.

Name Simoorg
Hersteller LinkedIn
GitHub https://github.com/linkedin/simoorg/

Aufmacherbild: Stethoscope on an electrocardiogram (ECG) chart von Shutterstock / Urheberrecht: piotr_pabijan

Unsere Redaktion empfiehlt:

Relevante Beiträge

Meinungen zu diesem Beitrag

X
- Gib Deinen Standort ein -
- or -