El Niño
Autor
Marcus HeldHi,
El Niño ist zurück. Periodisch schwankt die Oberflächentemperatur des Pazifischen Ozean. Diese scheinbar unscheinbare Änderung löst eine Kaskade von Wetterveränderungen aus, die ihren Einfluss bis in die entlegensten Winkel des Globus ausüben. Überschwemmungen in Südamerika, Dürren in Australien und sogar Schneestürme in Nordamerika - alles verursacht durch ein paar Grad Temperaturunterschied im Pazifik. Dieses Phänomen tritt alle 2 bis 7 Jahre auf. Dieses Jahr ist es wieder soweit.
Im Backend passiert uns das auch. Ein scheinbar kleines Ereignis, eine kleine zusätzliche Komponente, eine kleine Änderung am Code. Das kann zu massiven Auswirkungen an ganz anderen Enden unseres Systems führen.
Vor einigen Jahren beobachtete ich in einer Anwendung, dass periodisch Requests in einen timeout liefen. Lokal war das Phänomen nicht nachzuvollziehen. Ein Blick ins JFR brachte keine neue Erkenntnis. Wo also schauen?
Die Anwendung lief in Kubernetes. Und nach einem Blick auf die Load des Systems sahen wir spitzen in ähnlichen Mustern. Es war also ein Phänomen, dass die gesamte Maschine betraf. Also nahmen wir den SRE unseres Vertrauen hinzu und nach nur wenigen Worten wusste er Bescheid. Auf dem selben Node lief nicht nur unsere Anwendung. Sondern auch ein Log Aggregator. Und - natürlich - lief dieser periodisch los und schnappte sich alle Ressourcen die er kriegen konnte.
Wir teilen Ressourcen. Alles ist miteinander verbunden. Wenn die Oberflächentemperatur im Pazifik steigt, dann sind wir - auf der anderen Seite der Welt, in Europa - genauso betroffen. Wenn wir mehrere Anwendungen auf derselben Maschine laufen lassen, dann nehmen sie Einfluss aufeinander.
Nimm davon zwei Dinge mit. Zum Ersten, verstehe dein System. Wenn die Verantwortung über das System mit weiteren Abteilungen geteilt ist, dann spricht dich das nicht frei. Du musst das System immer verstehen. Vielleicht nicht in allen Details. Aber du musst wissen, was du nicht weißt.
Zum Anderen, isoliere deine Komponenten. Wäge ab, ob es die Einsparungen wert ist, wenn du deine physikalischen Ressourcen mit Virtualisierung teilst. Eine Einstellung zu übersehen wird vorkommen. Vielleicht ist es einfacher stupide zwei Rechner zu nutzen? Aber egal wie du dich entscheidest, verstehe es!
Rule the Backend,
~ Marcus