Die Deutsche Bahn-Schnittstelle (”API”) ist tief in VIA integriert. Darum hatte die Störung teils sehr große Auswirkungen auf die Funktionen von VIA - auch in Bereichen, wo man das vielleicht nicht erwartet.

Was war der Fehler?

Die Bahn gewährt Zugriffe auf deren APIs nur ohne den Abschluss von Service-Level-Agreements (SLAs), sprich ohne Garantie der Verfügbarkeit. Das allein ist für einen Staatskonzern schon kein ruhmhaftes Verhalten. Dass deren Verfügbarkeit dann aber für Monate auf ca. 97% gefallen ist, ist bedenklich.

Das Problem war nicht, dass es einen Ausfall der API gab, sondern dass plötzlich Anfragen von VIA an die API schier zufällig abgelehnt oder unbeantwortet blieben. Damit konnte VIA nicht umgehen - wir haben bei der Entwicklung nicht damit gerechnet, dass die Verfügbarkeit sich derartig verschlechtern kann.

Wir mussten also in VIA, sowie in einem Submodul, mehrere Prozeduren umbauen. Das war sehr zeitaufwändig, weil wir immer erst bei der konkreten Benutzung durch Anwender*innen sehen konnten, ob die Änderungen auch Verbesserungen brachten. Nicht zuletzt haben Änderungen an der einen Stelle eines Programmes auch Auswirkungen an ganz anderen, oft unerwarteten, Stellen. Mit jeder Verbesserung gab es also potentiell neue Fehlerstellen, die es zu finden und zu beheben galt.

Dass dies nun in der Hauptbelastungszeit notwendig geworden war, machte die Situation nur noch trickreicher.

Was haben wir behoben?

Wir haben VIA beigebracht damit umzugehen, wenn die DB-API seltsame oder auch keine Ergebnisse zurück gibt. Wir haben außerdem eingebaut, dass VIA bei einem Fehlversuch mehrmals versucht die Anfrage zu stellen, oft bekommen wir nämlich beim zweiten oder dritten Versuch eine Antwort.

Diese Änderungen mussten wir an dutzenden Stellen vornehmen, sowie die daraus resultierenden Nachfolge-Probleme beheben.

Gleichzeitig konnten wir auch Code verbessern, optimieren und einige andere Fehler mit beheben.

Wir konnten so die Stabilität von VIA nochmal deutlich verbessern.

Kann das wieder vorkommen?

Diese konkrete Fehlerursache ist behoben und kann nicht wieder vorkommen. Nichtsdestotrotz kann die DB neue Probleme “erfinden”, für die wir dann neue Lösungen finden werden.