Un gran banco migró de Java a C++: resultados después de un año
A principios de 2021, uno de los bancos rusos de importancia sistémica (fuentes mencionan a "Alfa-Bank") tomó una decisión radical: reemplazar el núcleo de su sistema transaccional de alta carga, escrito en Java, por código nativo en C++. Un año después de completar la migración, la dirección compartió los primeros resultados. Las cifras son impresionantes.
Según un informe interno, el rendimiento de los servicios críticos aumentó entre un 40% y un 60%. El tiempo medio de procesamiento de una transacción (P99) se redujo de 12 ms a 4.5 ms. La razón principal fue la eliminación de la máquina virtual de Java (JVM) y el recolector de basura, que durante los picos de carga provocaba "lags" de hasta 200 ms. "Con C++ obtuvimos una gestión de memoria determinista, lo que nos permitió eliminar el 90% de los problemas de latencia en horas punta", citó el servicio de prensa al director técnico del departamento de desarrollo.
Sin embargo, la transición no fue fácil. De los 120 desarrolladores del equipo, 35 renunciaron por no querer recapacitarse. El banco tuvo que contratar a 50 ingenieros de C++ del mercado fintech y de desarrollo de videojuegos, y el salario medio aumentó un 25%. La migración tomó 14 meses y alrededor de 2.3 mil millones de rublos (incluyendo reescritura de código, pruebas y depuración).
Efecto económico: los costos operativos de infraestructura se redujeron en un 30%: para manejar el mismo volumen de transacciones se necesitaron un 40% menos de servidores. Se espera que el proyecto se amortice en 2.5 años. "No vamos a reescribir todo. El frontend y las aplicaciones móviles permanecen en Java/Kotlin. Pero el núcleo es solo código nativo", añadió un representante del banco en la conferencia HighLoad++ 2022.
Los expertos están divididos. Algunos creen que para el trading de alta frecuencia y los cálculos, C++ está justificado. Otros recuerdan los riesgos: fugas de memoria y la complejidad del mantenimiento del código legacy. "Java es un compromiso entre velocidad de desarrollo y rendimiento. El banco eligió la velocidad de ejecución a costa de la velocidad de desarrollo. Veremos qué pasa en 5 años", comenta el analista principal de TAdviser.
No obstante, el caso ya está siendo estudiado por otros actores del mercado. Según rumores, Sberbank y VTB también han lanzado proyectos piloto para migrar microservicios específicos a C++ y Rust.