Перейти к содержимому
Блог · Разработка

Монолит vs микросервисы для бизнеса: как выбрать без моды

Разбираем, когда монолит даёт скорость и предсказуемость, а когда микросервисы оправданы — через KPI, границы домена и TCO.

Введение. Спор «монолит vs микросервисы» в 2026 году решается не религией, а скоростью поставки ценности и стоимостью сопровождения. Материал для product- и engineering-лидеров, которые принимают решения на горизонте 12–24 месяцев, а не гонятся за хайпом в презентации.

Бизнес-контекст выбора архитектуры

Большинство срывов в теме «монолит и микросервисы» начинается не с кода, а с размытого scope: маркетинг обещает одно, продажи фиксируют другое, а ИТ закрывает техдолг третьим приоритетом. В итоге бюджет уходит в интеграции «на скотч» и ручные сверки в Excel. Мы видим это в проектах, где не описаны границы MVP, нет владельца метрик и не зафиксированы SLA на данные между системами.

Команда теряет 20–40% спринтов на переделки, потому что не согласовала критерии готовности: что считается лидом, какая атрибуция в CRM, какой latency API допустим для витрины. Без этих договорённостей любая архитектура — лотерея.

Trade-offs: скорость vs гибкость

Опорный принцип: сначала поток ценности, потом стек. Нарисуйте journey от первого касания до оплаты и поддержки, отметьте ручные шаги и точки отказа. Только после этого выбирайте Kubernetes и модель данных. Для монолит и микросервисы мы обычно рекомендуем модульный монолит с явными bounded context и контрактами между модулями: она даёт предсказуемый TCO и не блокирует масштабирование команды.

Зафиксируйте ADR по ключевым решениям: хранилище, очереди, авторизация, наблюдаемость. Включите в Definition of Done контрактные тесты API, схему событий и политику миграций. микросервисы имеет смысл заказывать только когда есть согласованный backlog с приоритетами P0/P1 и измеримые KPI на квартал.

Наблюдаемость — не «логи на сервере», а корреляция user_id → trace_id → заказ. Без этого невозможно честно считать ROI и оптимизировать воронку. Добавьте дашборды для продуктовых и инженерных метрик в одном timezone и с единым справочником статусов.

Когда хватает простого контура

Кейс A (оптовая дистрибуция). Клиент пришёл с болью: заказы «зависали» между складом и 1С, а nightly batch ломал отчёты. Мы разбили релиз на три волны: стабилизация данных, автоматизация рутины, персонализация. Через 14 недель latency оформления заказа снизился с 4,2 до 0,9 с без полного разрезания монолита. Критично было не «переписать всё», а остановить утечку лидов на стыке каналов.

Кейс B (маркетплейс услуг). Другая ситуация: разные команды деплоили общую БД и ломали соседние фичи. Здесь сработала обратная стратегия — сначала интеграция с CRM и нормализация справочников, затем редизайн витрины. Итог: после выделения каталога и биллинга в сервисы частота инцидентов P1 упала в 3 раза.

Когда нужна более сложная схема

  1. Выбор технологии до описания доменных границ.
  2. Отсутствие каталога событий аналитики — спор о цифрах вместо роста.
  3. «Временный» монолит без модульных контрактов, который нельзя резать на сервисы.
  4. Игнорирование non-functional requirements: RPO/RTO, лимиты PII, требования 152-ФЗ.
  5. Параллельный редизайн и миграция данных без feature flags.

Как мигрировать без простоя

  • [ ] Есть единый glossary для бизнеса и разработки
  • [ ] KPI привязаны к измеримым событиям в продукте
  • [ ] Описаны интеграции и владельцы данных
  • [ ] План релизов с rollback и мониторингом
  • [ ] Оценён TCO на 3 года, а не только CAPEX первого спринта
  • [ ] Согласованы критерии приёмки с заказчиком и поддержкой

Практический вывод

Микросервисы покупают организационную автономию и независимые релизы, но требуют зрелого DevOps. Монолит остаётся лучшим стартом, если домен ещё меняется каждый квартал. Если нужна внешняя экспертиза — начните с брифа или оценки: так быстрее получить реалистичный план, чем спорить о стеке в вакууме.

  • До 15 инженеров и один продукт — чаще модульный монолит
  • Разные SLA для подсистем — кандидат на выделение сервиса
  • Считайте стоимость observability и on-call до разрезания
КритерийСлабый сигналСильный сигнал
КомандаОдна сквознаяНесколько автономных
ДеплойРаз в неделю достаточноНужны daily/canary
ДанныеОдна схемаEvent-driven и саги

Критерии решения для бизнеса

Сравнивайте не «модно / не модно», а три числа: частота релизов, MTTR и стоимость инцидента. Если продукт один и команда до 12–15 человек, модульный монолит на PostgreSQL с чёткими пакетами домена почти всегда дешевле, чем сеть из восьми сервисов с частичным падением корзины. Микросервисы оправданы, когда разные части системы имеют разный профиль нагрузки (каталог vs биллинг), разные команды с отдельными OKR или регуляторные границы (PII, платежи). Перед разрезанием зафиксируйте strangler-fig: какой модуль выносите первым, какие контракты событий и как откатываетесь, если новый сервис не выдерживает пик.

Миграция «big bang» с монолита редко удаётся. Рабочая схема: вынести read-модели и отчётность, затем интеграционный слой с или CRM, и только потом транзакционное ядро. На каждом шаге — feature flag, синтетические проверки критичных сценариев и сравнение бизнес-метрик до/после. Если после выноса сервиса time-to-deploy команды не улучшился за два квартала, возможно, проблема была в процессе, а не в монолите.

FAQ

Частые вопросы

Когда микросервисы оправданы?

Независимые команды/деплои, разный scale, ясные границы домена.

Иначе — распределённый монолит.

DevOps должен быть готов.

Модульный монолит — компромисс?

Да, наш частый старт. Границы модулей сохраняем.

Резать позже дешевле.

Статья с критериями.

Как не купить хайп?

Считайте операционку: сети, наблюдаемость, онколы.

Нет команды — нет K8s ради резюме.

См. Kubernetes.

Можно ли мигрировать постепенно?

Да, strangler pattern.

Big bang редко.

Пилот одного домена.

Влияет ли на сайт-витрину?

Часто витрина остаётся проще бэкенда продукта.

Не усложняйте маркетинг-сайт.

Разделяйте контуры.

Следующий шаг

Нужна архитектура
под ваш KPI?

Опишите контекст в брифе — вернёмся с планом, оценкой и рисками в течение рабочего дня.