JavaLand 2023, März 2023, (Dirk Kröhan) Slides ansehen
Debugging ist fester Bestandteil im Alltag eines Software Entwicklers. Bugs passieren, Bugs sind normal, Bugs wird es auch immer geben. Es gibt viele Maßnahmen um Bugs möglichst frühzeitig zu erkennen, wie z.B. PairProgramming, Code Reviews, automatisierte Tests, QA Environment, etc.
Aber eins ist sicher: Auch mit der besten Vorsorge, werden es Bugs auf Produktion schaffen.
Bugs lassen sich dabei am besten auf der Umgebung untersuchen, wo sie auch auftreten. Doch für Logs von Produktion gelten sehr oft andere Spielregeln, sei es ein allgemein höheres Log Level oder aus Gründen des Datenschutzes. Oft fehlen genau die Informationen die für eine Fehleranalyse benötigt werden. Den Fehler dann erst lokal oder auf einer anderen Umgebung nachzustellen ist mühsam und kostet viel Zeit, wertvolle Zeit.
Für unsere Microservice-Architektur haben wir daher eine Lösung gebaut, die sich „On-Demand Debug Logging“ nennt. Damit sind wir in der Lage für einzelne Nutzer unseres Systems für ein bestimmtes Zeitintervall debug logs zu aktivieren. Innerhalb weniger Sekunde, ganz ohne Code Change oder Deployment. Somit sehen wir debug logs für alles was dieser User auf unserer API tut über alle beteiligten Microservices hinweg. Alle anderen Logs, insbesondere die von anderen Nutzern bleiben dabei unverändert.
Wie wir das ganze technisch realisiert haben, welche Vorteile es bringt und welchen Impact das für unsere Fehleranalysen hatte erfahrt hier in diesem Erfahrungsbericht.