Testes de Estresse
Resiliência
Confiabilidade
Engenharia
Performance

Stresstests: Finden Sie heraus, wie das System kaputt geht, bevor es sich selbst kaputt macht

Jedes System hat eine Bruchstelle. Stresstests sind die Entscheidung, bewusst damit umzugehen, anstatt sich davon überraschen zu lassen.

Die Frage, die reife Teams von optimistischen Teams unterscheidet, ist einfach: Wissen Sie, wie Ihr System ausfällt?

Nicht „wenn“ es ausfällt, sondern jedes System fällt bei einem bestimmten Bedarfsniveau aus. Die Frage ist wie. Verlangsamt es sanft und kehrt zum Normalzustand zurück, wenn der Druck weg ist? Oder stürzt es mitten in der Nacht ab, beschädigt Daten und erfordert manuelles Eingreifen? Der Unterschied zwischen diesen beiden Szenarien ist selten Glück. Es ist das Ergebnis davon, ob das Limit absichtlich getestet wurde oder nicht.

Beim Stresstest geht es genau darum, das System über das Maß hinaus zu beanspruchen, mit dem es zurechtkommen sollte, um zu sehen, was passiert, wenn das Seil reißt. Es klingt kontraintuitiv, Fehler zu verursachen. Es handelt sich tatsächlich um eine der verantwortungsvollsten Praktiken im Ingenieurwesen.

Was ist Stresstest und was nicht?

Bei Stresstests wird das System extremen Bedingungen ausgesetzt, die weit über den erwarteten Bedarf hinausgehen, um sein Verhalten am Limit und darüber hinaus zu beobachten. Das Ziel besteht nicht darin, zu überprüfen, ob es normale Lasten bewältigen kann, sondern darin, zu verstehen, was passiert, wenn es diese nicht mehr bewältigen kann.

Darin unterscheidet es sich vom Lasttest, mit dem es ständig verwechselt wird. Beim Lasttest wird das Verhalten bei erwarteter und steigender Nachfrage gemessen: Wie viele Benutzer kann das System mit hoher Qualität unterstützen? Stresstests ignorieren das Erwartete und gehen absichtlich bis zum Äußersten, um den Bruchpunkt zu finden und die Erholung zu beobachten.

Mit anderen Worten: Die Ladung antwortet: „Kann sie damit umgehen, was passieren wird?“. Stress antwortet: „Was passiert, wenn man es nicht aushält?“ Beide Fragen sind wichtig, aber die zweite bereitet das Team auf den schlimmsten Tag vor.

Warum es eine strategische Entscheidung ist, Fehler zu verursachen

Bei Systemen, die noch nie einer Belastung ausgesetzt waren, kommt es zu einem nicht zugeordneten Fehler, der auf den schlimmsten Moment wartet. Und der schlimmste Zeitpunkt ist immer dann, wenn die Nachfrage am größten ist, also genau dann, wenn das System am wichtigsten ist.

Stellen Sie sich ein Bürgerserviceportal an einem Stichtag vor. Die tatsächliche Auslastung übersteigt jede vernünftige Schätzung, da alle bis zur letzten Minute darauf gewartet haben. Ein System, das nur auf die „erwartete“ Last getestet wird, weiß nicht, ob es sich langsam verschlechtern wird oder ganz in diese Situation gerät. Ein gestresstes System hat dieses Szenario bereits im Labor gesehen und das Team weiß bereits, was passieren wird und wie es reagieren muss.

In einer kontrollierten Umgebung ein Scheitern zu provozieren bedeutet, eine teure Überraschung gegen billiges Lernen einzutauschen. Es ist die gleiche Logik wie bei einer Brandschutzübung: Man wartet nicht auf den echten Brand, um herauszufinden, ob die Ausgänge funktionieren.

Was Sie bei einem Systemabsturz beachten sollten

Die wichtigste Zahl bei einem Stresstest ist nicht die Bruchgrenze selbst. Es ist das Verhalten um ihn herum.

Als erstes muss man sich ansehen, wie die Verschlechterung erfolgt. Verlangsamt sich das System allmählich, gibt Signale oder stürzt es ohne Vorwarnung ab? Eine sanfte Verschlechterung ist beherrschbar; Ein abrupter Sturz ist gefährlich, da keine Zeit zum Reagieren bleibt.

Das Zweite ist das, was zuerst scheitert. Unter Stress gibt immer eine Komponente vor den anderen nach, die Datenbank, ein Verbindungspool, Speicher, eine Warteschlange. Die Identifizierung dieses schwächsten Glieds macht den halben Wert des Tests aus, denn darin lohnt es sich, zu investieren, um die Grenze zu verschieben.

Der dritte und vielleicht wichtigste Aspekt ist die Genesung. Wenn der Druck nachlässt, kehrt das System von selbst in den Normalzustand zurück? Oder bleibt es in einem heruntergekommenen Zustand, mit verstopften Warteschlangen und losen Verbindungen, was einen manuellen Neustart erfordert? Ein System, das sich nicht von selbst erholt, verwandelt einen vorübergehenden Spitzenwert in eine längere Nichtverfügbarkeit.

Verhalten unter Stress: Erniedrigung mit Würde

Es gibt ein Konzept, das all dies leitet: anmutige Erniedrigung. Ein gut konzipiertes System sollte, wenn es über seine Grenzen hinausgeht, das Wesentliche bewahren und das Sekundäre opfern, anstatt völlig auseinanderzufallen.

Das heißt zum Beispiel, neue Anfragen kontrolliert abzulehnen, statt sie alle anzunehmen und abzustürzen. Es bedeutet den Schutz des Kernbetriebs, einer Zahlungstransaktion, eines kritischen Datensatzes, während Zusatzfunktionen nicht verfügbar sind. Es bedeutet, einen Fehler klar und schnell zurückzugeben, anstatt den Benutzer in ewigem Laden hängen zu lassen.

Durch Stresstests lässt sich feststellen, ob Ihr System dieses Verhalten aufweist oder nicht. Und es zeigt sich fast immer, dass dies noch nicht der Fall ist. Sobald das Problem erkannt wird, können Schutzmechanismen wie Ratenbegrenzungen, Verwerfungswarteschlangen und Fehlerisolierung gezielt entworfen werden.

Die Fehler, die den Test leeren

Der erste Fehler besteht darin, sich in einer Umgebung zu stressen, die nicht nach Produktion aussieht. Das Ermitteln der Grenzen einer kleineren Testinfrastruktur sagt nichts über die Grenzen der realen Infrastruktur aus. Die Umgebung muss repräsentativ sein, sonst täuschen die Zahlen.

Die zweite besteht darin, an der Sollbruchstelle anzuhalten. Viele Leute machen den Test, finden heraus, wo das System kaputt geht, notieren die Nummer und machen Schluss. Gold ist auf dem Vormarsch: Beobachten Sie die Erholung. Ein System, das früh ausfällt, sich aber von selbst erholt, ist gesünder als eines, das länger durchhält, aber manuellen Eingriff erfordert, um wieder hochzufahren.

Die dritte besteht darin, den Test als ein einzelnes Ereignis zu behandeln. Jede Architekturänderung kann die Bruchstelle verschieben und das Fehlerverhalten ändern. In kritischen Systemen ist Stress eine wiederkehrende Praxis und kein Gründungsritual.

Reife bedeutet zu wissen, wie man fällt

Es gibt einen kulturellen Unterschied zwischen Organisationen, die es vermeiden, über Misserfolge nachzudenken, und solchen, die sich damit befassen. Die ersten leben in der Hoffnung, dass der Höhepunkt nie erreicht wird. Die zweiten wissen genau, was passieren wird, wenn er kommt, und haben bereits entschieden, wie sie reagieren sollen.

Stresstests sind die Praxis, die diese zweite Haltung verwirklicht. Es verhindert kein Scheitern; Kein Test macht das. Aber es tauscht den unbekannten und katastrophalen Fehler gegen einen bekannten, vorhergesagten und eingedämmten Fehler ein. In Systemen, die wesentliche Dienste unterstützen, ist dies der Unterschied zwischen einem Schluckauf und einer Krise.

Zu wissen, wie Ihr System funktioniert, ist die Grundvoraussetzung. Zu wissen, wie es zerbricht und wie es wieder zurückkommt, unterscheidet diejenigen, die mit Zuversicht handeln, von denen, die im Glauben handeln.

Wenn Ihre Organisation auf Systeme angewiesen ist, die kritische Spitzenwerte aufweisen, und niemand sie jemals absichtlich zum Scheitern gebracht hat, lohnt es sich, diese Übung durchzuführen, bevor die Realität es für Sie erledigt. Ich habe auf dem Blog weitere Texte über Zuverlässigkeit, Leistung und Belastbarkeit, die mit diesem Thema in Zusammenhang stehen.

Lesen Sie auch