Разработка микросервисов
Микросервисы решают организационную проблему: когда над проектом работает несколько команд и общий релиз становится узким местом. Если команда одна, разделение чаще добавляет сложности, чем убирает, — и мы скажем об этом прямо.
Когда переход действительно нужен, главное правило — не переписывать всё сразу. Выносим один модуль, убеждаемся, что он работает рядом со старым кодом, переводим трафик, повторяем.
Обсудить задачуКогда разделение оправдано
- 01Несколько команд мешают друг другу в общем релизе
- 02Части системы нужно масштабировать по-разному: одна под нагрузкой, другая простаивает
- 03Отдельный модуль требует другого технологического стека
- 04Сбой в одной части кладёт всё приложение целиком
- 05Релизный цикл растянулся настолько, что правки копятся неделями
Чем платят за микросервисы
Разделение не бесплатно. Появляются сетевые вызовы вместо обращений в памяти, распределённые ошибки, необходимость следить за согласованностью данных и разбираться, в каком из десяти сервисов произошёл сбой.
Всё это требует зрелой инфраструктуры: логирования, трассировки, автоматического развёртывания. Без них микросервисы превращаются в тот же монолит, но с задержками сети и вдесятеро более сложной отладкой. Если такой инфраструктуры нет, начинать нужно с неё.
Что обычно спрашивают
Нам точно нужны микросервисы?
Скорее всего нет, если у вас одна команда и понятный релизный процесс. Мы честно проверяем это перед началом: часто проблема решается наведением порядка внутри монолита.
Можно ли разделять постепенно?
Только так и стоит. Выносим по одному сервису, оставляя остальное работать. Переписывание целиком с остановкой развития почти всегда заканчивается плохо.
Что делать с общей базой данных?
Это самый сложный вопрос перехода. Разделение данных обычно идёт медленнее разделения кода и требует отдельного плана.
Какая инфраструктура нужна?
Как минимум централизованные логи, мониторинг, автоматическое развёртывание и понятный способ найти, в каком сервисе ошибка. Без этого разделение навредит.
Сколько это займёт?
Месяцы, и это нормально: переход идёт параллельно с обычной разработкой. Оценку даём по каждому выделяемому сервису отдельно.
