Крупный банк перешел с Java на C++: результаты через год
В начале 2021 года один из системообразующих российских банков (источники называют «Альфа-Банк») принял радикальное решение: заменить ядро высоконагруженной транзакционной системы, написанной на Java, на нативный C++ код. Спустя год после завершения миграции руководство поделилось первыми итогами. Цифры впечатляют.
По данным внутреннего отчёта, производительность критических сервисов выросла на 40–60%. Среднее время обработки одной транзакции (P99) сократилось с 12 мс до 4.5 мс. Основной причиной называют отказ от виртуальной машины Java (JVM) и сборщика мусора, который в пиковые нагрузки вызывал «лаги» до 200 мс. «В C++ мы получили детерминированное управление памятью — это позволило убрать 90% проблем с задержками в часы пик», — цитирует пресс-служба слова технического директора департамента разработки.
Однако переход дался нелегко. Из 120 разработчиков команды 35 уволились, не желая переучиваться. Банку пришлось нанять 50 C++ инженеров с рынка финтеха и геймдева, средняя зарплата выросла на 25%. На миграцию ушло 14 месяцев и около 2.3 млрд рублей (с учётом переписывания кода, тестирования и отладки).
Экономический эффект: операционные затраты на инфраструктуру снизились на 30% — для обслуживания того же объёма транзакций потребовалось на 40% меньше серверов. Окупаемость проекта ожидается через 2.5 года. «Мы не собираемся переписывать всё. Фронт и мобильные приложения остаются на Java/Kotlin. Но ядро — только нативный код», — добавил представитель банка на конференции HighLoad++ 2022.
Эксперты разделились. Одни считают, что для высокочастотной торговли и расчётов C++ оправдан. Другие напоминают о рисках: утечки памяти и сложность поддержки legacy кода. «Java — это компромисс между скоростью разработки и производительностью. Банк выбрал скорость выполнения ценой скорости разработки. Посмотрим, что будет через 5 лет», — комментирует ведущий аналитик TAdviser.
Тем не менее, кейс уже изучают другие игроки рынка. По слухам, Сбербанк и ВТБ также запустили пилотные проекты по переводу отдельных микросервисов на C++ и Rust.