От монолита к микросервисам
Переход крупного банка от монолитного приложения к управляемым микросервисам
Задача
Основное приложение представляло собой большой монолит на устаревшем корпоративном стеке, который был сложно и рискованно изменять - любая доработка затрагивала всю систему сразу. Код хранился в закрытом репозитории, а выпуск обновлений выполнялся вручную администратором с помощью набора скриптов, что делало процесс медленным, зависимым от конкретного человека и подверженным ошибкам.
Что сделано
Разбили монолитное приложение на независимые микросервисы и перенесли их в современную контейнерную платформу, что позволило развивать и обновлять отдельные части системы без риска для всей платформы. Автоматизировали процесс сборки и доставки обновлений, убрав ручные операции администратора. Организовали пять независимых контуров - для разработки, нескольких уровней тестирования и рабочей системы - чтобы каждое изменение проходило проверку перед тем, как попасть к пользователям. Выстроили полностью автоматизированный процесс передачи релиза от разработчика до конечного пользователя с фиксацией каждого шага в системе управления задачами.
Результат
Банк получил управляемую, гибкую архитектуру вместо монолита: отдельные части системы можно развивать и обновлять независимо друг от друга. Выпуск обновлений перестал зависеть от вручную выполняемых операций администратора, а процесс передачи релиза стал полностью автоматическим и прозрачным - каждый шаг фиксируется и виден всем участникам.
Ситуация до начала работ
Клиент - крупный банк. Основное приложение представляло собой большой монолит на устаревшем корпоративном стеке: вся бизнес-логика была собрана в единой системе, из-за чего любое изменение затрагивало приложение целиком и требовало осторожности и длительного тестирования.
Код хранился в закрытом корпоративном репозитории, а выпуск обновлений выполнялся вручную - администратор запускал набор скриптов для развертывания новой версии. Такой процесс был медленным, зависел от конкретного человека и его доступности, а вероятность ошибки при ручных операциях оставалась высокой.
Что мы сделали
Провели поэтапную трансформацию архитектуры и процессов разработки банка:
- Разбили монолитное приложение на независимые микросервисы - теперь каждую часть системы можно развивать, тестировать и обновлять отдельно, не затрагивая остальные;
- Перенесли микросервисы в современную контейнерную платформу для управления приложениями;
- Автоматизировали процесс сборки и доставки обновлений - убрали ручной запуск скриптов администратором;
- Организовали пять независимых контуров - для разработки и нескольких последовательных уровней тестирования, вплоть до рабочей системы - чтобы каждое изменение проходило проверку перед тем, как дойти до пользователей;
- Выстроили полностью автоматизированный процесс передачи релиза от разработчика к конечному пользователю, где каждый шаг фиксируется в системе управления задачами и виден всем участникам процесса.
Результат
- Вместо монолита банк получил управляемую архитектуру из независимых сервисов - изменения в одной части системы больше не рискуют затронуть все приложение;
- Выпуск обновлений перестал зависеть от ручных операций и доступности конкретного администратора;
- Процесс передачи релиза стал полностью автоматическим и прозрачным - видно, на каком этапе находится каждое изменение;
- Благодаря пяти независимым контурам изменения проходят несколько уровней проверки перед тем, как попасть к пользователям, что снижает риск ошибок в рабочей системе.