Entfesselte Transaktionspipelines bei Check24
Niemand mag es zu viel Geld auszugeben—Aber viele tun es, einfach weil sie keinen ganzheitlichen Überblick haben oder nicht genügend Zeit haben sich über bessere Alternativen zu informieren. Nicht einmal der sonst so pragmatische deutsche Kunde ist dagegen immun.
Check24, Deutschland's führendes Preisvergleichsportal, sah hier eine Chance: Geldströme der Kunden visualisieren, die Suche nach besseren Angeboten automatisieren und daraus Umsätze generieren.

“Die Anwendung wurde von Data-Scientists, nicht von Software-Engineers gebaut. Durch eine schlechte Architektur häuften sich die Fehler.”
Der Anwendung, gebaut von Data-Scientists, mangelte es an technischer Robustheit. Mit zunehmender Skalierung durch steigende Nutzerzahlen wurde das System so instabil, dass es im Wochenrhythmus aufgrund von Speicherproblemen neu-gestartet werden musste. Die Transaktionen blieben unverarbeitet und unkategorisiert - Die eigentliche Aufgabe der Anwendung war nicht mehr gegeben.
Wir begannen damit uns mit dem Data-Science Team zusammenzusetzen und das Problem zu analysieren. Nachdem wir verstanden hatten was die Software tat und wo die kritischen Punkte lagen begannen wir mit der Problemlösung.
Auf den ersten Blick sah alles gut aus—Die Python (3.7/3.8) Services liefen auf eigenen Servern, ohne weitere Hyperscaler-Abhängigkeiten. Wir fanden einen großen Django-Monolithen mit Celery-Workern vor, welche jeweils die ganze Anwendung replizierten um im Hintergrund komplexe Aufgaben durchführen zu können. Diese Architektur machte den Service und seine Ableger speicherintensiv und ineffizient in der Skalierung.

Den Monolithen aufbrechen.
Wir erkannten die Notwendigkeit einer tiefgreifenden Veränderung. Den Monolithen zur besseren Skalierbarkeit in einzelne Microservices aufzubrechen.
Wir begannen damit die komplexesten und ressourcenintensivste Teile der Anwendung herauszubrechen und in einzelne, skalierbare Microservices auszulagern.
Anstatt vier voller Monolithen-Instanzen konnten wir nun einzelne Teilaufgaben bei Bedarf auf bis zu acht Instanzen skalieren.
Das Ergebnis war ein dreischichtige Service-Architektur. Python und FastAPI für die ML-Algorithmik, sowie Golang und Java (Spring Boot) Services, welche die Anwendungen mit Daten und Logik aus dem Check24 Banking Backend versorgten.
Das neue, modulare, Setup isolierte die speicher- und rechenintensiven Prozesse und stabilisierte deren Performance. Weiterhin implementierten wir ein umfangreiches Testing-Framework und ein Dashboard für die Data-Scientists mithilfe dessen sie die Korrektheit der Transaktionsklassifikationen und der Vertragserkennung validieren konnten.

Das System entschlüsselte Transaktionen.
IBANs, Beträge, und Transaktionsdetails geben Rückschlüsse über den Hintergrund und Typ jeder Transaktion.
In vielen Fällen gab nur die Überweisungsnotiz Anhaltspunkte. Durch NLP-Algorithmen und einen Decision-Tree konnten die Transaktionen transparent und nachvollziehbar klassifiziert werden. Genau wie von der Regulatorik gefordert.

Bessere Deals für die Kunden. Umsätze für Check24.
Über einen Zeitraum von 18 Monaten optimierte unser Team aus drei Experten die Systeme und trainierte das InHouse Data-Science Team hinsichtlich fehlender Software-Engineering Fähigkeiten, sodass das Projekt im Anschluss wieder in deren Hände übergeben werden konnte.
Aufbauend auf Software-Engineering Best Practices eliminierte ie neue, verbesserte, Architektur die Speicher- und Performanceprobleme und garantierte einen langfristigen, reibungslosen Betrieb unter Einhaltung aller BaFin Regulatorien.
Mit dem Erhalt einer eigenen Vollbankenlizenz überführte Check24 die entwickelten Services in die neue C24 Bank. Heute werden so Millionen an Banktransaktionen klassifiziert und Verträge kategorisiert.

Welche Erkenntnisse konnten wir aus dem Projekt gewinnen?
Für unsere Analysen mussten wir tief in das Speichermanagement von Python, dessen Garbage-Collection und die Details von Celery blicken. Wir haben erfolgreich den großen, mit der Zeit und den Anforerungen gewachsenen, Monolithen aufgeräumt und kritische Komponenten skalierbar ausgelagert.
Unser größter Erfolg: Wir konten dem InHouse Data-Science Team das notwendige Handwerkszeug des Software-Engineerings näher bringen, sodass diese die Anwendungen auch in Zukunft, nachhaltig betreiben und weiterentwickeln können.