Переход с легаси-монолита на микросервисы без даунтайма
Практический кейс: как мы распилили легаси-монолит логистической компании без даунтайма.
Проблема легаси-монолита
Когда бизнес растет, монолитное приложение начинает трещать по швам. Развертывание занимает часы, любая мелкая ошибка валит всю систему, а онбординг новых разработчиков превращается в ад.
Паттерн Strangler Fig
Мы использовали паттерн "Душитель" (Strangler Fig). Суть проста: мы ставим API Gateway (Nginx/Kong) перед старым монолитом. Затем берем один модуль (например, "Биллинг"), пишем его с нуля как независимый микросервис и переключаем трафик на Gateway.
Этапы миграции:
- Настройка API Gateway.
- Выделение домена "Управление пользователями" в отдельный сервис (NestJS).
- Синхронизация баз данных (CDC - Change Data Capture через Debezium).
- Постепенное отключение старого кода.
Синхронизация баз данных
Самая сложная часть — это данные. Мы не могли просто выключить старую базу. Поэтому настроили двустороннюю репликацию: пока микросервис пишет в новую PostgreSQL, старый монолит все еще видит эти данные в старой MySQL.
Нужна помощь с архитектурой?
Мы проектируем и разрабатываем Enterprise-решения с финансовой гарантией по SLA. Запишитесь на бесплатный аудит с нашим CTO, чтобы оценить узкие места вашего проекта.