Einer der frustrierendsten Erfahrungen in meinem Leben waren die Momente, wo man als Vater sein Kind schreien hört und keinen blassen Schimmer hat, was los ist – und noch weniger, wie man ihm helfen kann. Wir Menschen wollen verstehen, wollen kommunizieren, wollen Probleme lösen. All das klappt in diesem Moment einfach (noch) nicht und man muss sich damit abfinden, eine unergründliche Black-box vor sich zu haben. Das Gute ist, dass diese Black-box sich auch irgendwann wieder beruhigt. Und dann ist die Frustration auch wieder vergessen – bis zum nächsten Schreikonzert…
Eine ähnliche Erfahrung kennen vermutlich alle, die irgend etwas mit IT zutun haben. Wir interagieren mit einem IT-System, doch dieses verhält sich nicht so wie angedacht. Wir hämmern auf die Tastatur ein, wir flehen es mit unserer Computer-Maus an, wir beschwören alle IT-Geister. Doch die einzige Reaktion bleibt ein monotoner “Internal Server Error”, ein hämisch grinsendes “User not allowed” oder ein vieldeutiges „Unknown Error“ angezeigt. Dann weiß man, dass zumindest auch der Entwickler diesen Fehlen nicht gekannt hat. Geteiltes Leid ist etwas weniger leid.
Blöderweise sind IT-Systeme aber noch um einiges sturer als Babies. Reagiert das IT-System einmal mit einer Fehler-Meldung, dann bleibt es auch dabei. Denselben Befehl lauter, schneller oder drohender zu schreiben, ändert rein gar nichts am Ergebnis. Klar, vermutlich sitzt das Problem ja tatsächlich “vor dem Computer”, entweder als Anwender oder derjenige, der das IT-System programmiert hat. An diesem Faktum hat sich seit Beginn von Computern nichts geändert.
Ebenso wenig hat sich die Empfehlung geändert, wie man darauf reagieren soll. Am besten sollten Computer-Programme einfach ohne Fehler programmiert werden bzw. die Bedienung so intuitiv sein, dass jeder Anwender („DAU – dümmster anzunehmender User“) damit zurecht kommt. Realistischerweise werden aber beide Ziele niemals zu erreichen sein. Deswegen ist die zweit beste Empfehlung, IT-Systeme so zu programmieren, dass sie jederzeit, vollumfänglich Auskunft über ihren Zustand geben können. Der moderne Fachbegriff für dieses Kriterium ist “Observability”. Man könnte auch sagen, das IT-System verlässt das Baby-Stadium und wird zum auskunftsfähigen Kind.
Das Kriterium “Observability” gilt grundsätzlich als Best-practice für jedes IT-System. Allerdings war früher durch die überschaubare Anzahl von IT-Systemen eine Sonder-Behandlung möglich. Die System-Administratoren kannten wie Mütter bei ihren Kindern jede noch so kleinste Nuancen und konnten daraus mögliche Problemursachen erkennen und beheben.
In modernen Cloud-Plattformen mit einer Vielzahl von unterschiedlichen IT-Systemen und einer dynamisch skalierenden Anzahl von Instanzen, ist “Observability” allerdings ein Muss. Ein IT-System muss – wie ein reifes Kind – klar artikulieren können:
- ob es bereits Probleme hat oder diese bald bekommen wird
- welche Faktoren zu diesen Problemen geführt haben
- Hilfestellungen geben, wie diese Probleme behoben werden könnten oder
- am besten diese Probleme auch selber zu lösen (“self-healing”)
Das bedeutet natürlich einen höheren Aufwand bei der Entwicklung der IT-Systeme, um nachträglich einen niedrigeren Aufwand beim Betrieb der IT-Systeme zu verursachen. Das klingt also fast nach einem Nullsummenspiel. Doch das stimmt so nicht:
- Es wäre falsch daraus zu schließen, dass Unternehmen durch “Observability” mehr Ressourcen für die Entwicklung statt für den Betrieb benötigt. Tatsächlich geht es darum, die bestehenden Betriebs-Verantwortlichen mehr und früher in die Entwicklung einzubinden. Genau das definiert auch DevOps als eines der Grund-Prinzipien!
- Ebenso ist es illusorisch zu glauben, dass Unternehmen dann keine Betriebs-Verantwortlichen mehr benötigen würden. Vielmehr geht es darum, die Betriebs-Verantwortlichen frei zu spielen, damit sie sich um die schwer wiegenden Probleme kümmern können. Genauso werden Eltern von älteren Kindern nicht komplett überflüssig, sondern können sich auf anspruchsvollere Betreuungstätigkeiten konzentrieren. (z.B. Taxi spielen, Liebeskummer lösen, etc 🙂
Es wäre eine spannende Fragestellung für eine empirische Studie, ob Entwickler mit Kleinkindern “auskunftsfreudigere” IT-Systeme bauen als Entwickler ohne eigene Kinder. Vermutlich würde es aber schon ausreichen, Entwickler von Zeit zu Zeit in die Rolle von System-Administratoren schlüpfen zu lassen. Die dabei erlebte Frustration durch eine “Unbekannter Fehler”-Meldung oder vom IT-System mit komplettem Schweigen gestraft zu werden, sollte die Motivation für “observable” IT-Systeme schlagartig steigern.