Schock-Migration: Großbank ersetzt Java durch C++ – die Bilanz des Jahres

Online Python-Trainer für Anfänger

Lernen Sie Python einfach ohne theoretische Überlastung. Lösen Sie praktische Aufgaben mit automatischer Überprüfung und schreiben Sie Code direkt im Browser.

Kurs starten

Große Bank wechselte von Java zu C++: Ergebnisse nach einem Jahr

Anfang 2021 traf eine der systemrelevanten russischen Banken (Quellen nennen die "Alfa-Bank") eine radikale Entscheidung: den Kern eines hochbelasteten Transaktionssystems, das in Java geschrieben war, durch nativen C++ Code zu ersetzen. Ein Jahr nach Abschluss der Migration teilte die Führung erste Ergebnisse mit. Die Zahlen sind beeindruckend.

Laut einem internen Bericht stieg die Leistung kritischer Dienste um 40–60 %. Die durchschnittliche Bearbeitungszeit einer Transaktion (P99) sank von 12 ms auf 4,5 ms. Als Hauptgrund wird der Verzicht auf die Java Virtual Machine (JVM) und den Garbage Collector genannt, der bei Spitzenlasten "Lags" von bis zu 200 ms verursachte. "In C++ haben wir eine deterministische Speicherverwaltung erhalten – das hat 90 % der Probleme mit Verzögerungen in Stoßzeiten beseitigt", zitiert die Pressestelle den technischen Direktor der Entwicklungsabteilung.

Der Wechsel fiel jedoch nicht leicht. Von den 120 Entwicklern des Teams kündigten 35, weil sie sich nicht umschulen lassen wollten. Die Bank musste 50 C++ Ingenieure vom Fintech- und Gamedev-Markt einstellen, das Durchschnittsgehalt stieg um 25 %. Die Migration dauerte 14 Monate und kostete etwa 2,3 Milliarden Rubel (einschließlich Umschreiben des Codes, Testen und Debuggen).

Wirtschaftlicher Effekt: Die Betriebskosten für die Infrastruktur sanken um 30 % – für die Abwicklung des gleichen Transaktionsvolumens wurden 40 % weniger Server benötigt. Die Amortisation des Projekts wird in 2,5 Jahren erwartet. "Wir werden nicht alles umschreiben. Das Frontend und die mobilen Anwendungen bleiben auf Java/Kotlin. Aber der Kern – nur nativer Code", fügte ein Vertreter der Bank auf der Konferenz HighLoad++ 2022 hinzu.

Experten sind geteilter Meinung. Einige halten C++ für den Hochfrequenzhandel und Abrechnungen für gerechtfertigt. Andere erinnern an die Risiken: Speicherlecks und die Komplexität der Wartung von Legacy Code. "Java ist ein Kompromiss zwischen Entwicklungsgeschwindigkeit und Leistung. Die Bank hat die Ausführungsgeschwindigkeit gewählt, auf Kosten der Entwicklungsgeschwindigkeit. Mal sehen, was in 5 Jahren sein wird", kommentiert der leitende Analyst von TAdviser.

Trotzdem wird der Fall bereits von anderen Marktteilnehmern untersucht. Gerüchten zufolge haben auch die Sberbank und die VTB Pilotprojekte zur Umstellung einzelner Microservices auf C++ und Rust gestartet.

Empfohlene Bibliotheken