Зачем пилить монолит?
У клиента были работающие мобильные приложения для Android и iOS, а также веб-кабинет. Было принято решение оставить их в существующем виде, и только после того, как будет заменен бэкенд, наращивать их функциональность.
Легаси-решение, которое обеспечивало всю логику работы системы и взаимодействие с биржей, состояло из различных блоков, написанных с использованием разных языков программирования. Попытки что-то изменить в одном блоке, часто приводили к сбоям в других местах. Переписать систему полностью тоже не представлялось возможным. Нужно было заменить ее более гибким решением, не останавливая работу клиентских приложений. На следующих этапах планировалось развивать сам сервис: добавлять функциональность, работу с новыми биржевыми инструментами, переходить на собственный банкинг и подключать дополнительные сервисы.
Самый очевидный вариант — переход на микросервисы.
Для того, чтобы постепенно заменять функциональность текущего решения и не нарушать работу мобильного фронтенда, команда бэкенда написала промежуточное решение.
Фактически, это был сервис проксирования с минимальной бизнес-логикой. Он подменял функциональность «монолитной» системы клиента и ее токены на те, которые будут использоваться в новой системе. Постепенно отключались блоки старой системы, для которых были реализованы микросервисы.
По состоянию на сентябрь 2021 года старое решение не отключено полностью, в работе приложения задействовано несколько процентов его функциональности. Эта часть взаимодействует с мобильным приложением через старое API.