n3s.agency
Связаться

← Все статьи · Engineering · 11 апреля 2026 г. · 2 мин чтения

Когда microservices — ошибка, а модульный монолит — правильный выбор

Когда microservices — ошибка, а модульный монолит — правильный выбор

Микросервисы продали как панацею. Но за гибкость платится сложностью: distributed tracing, message brokers, eventual consistency, service mesh, deployment pipelines на каждый сервис. Для большой команды на большом продукте — это окупается. Для средней — обычно нет.

Когда микросервисы реально нужны

По нашему опыту — три кейса:

  • Большая команда (50+ разработчиков), которая физически не может работать на одном репозитории без блокировок.
  • Разные SLA для разных частей системы. Например: каталог должен выдерживать 10000 RPS, а админка — 5 RPS. Имеет смысл вынести каталог в отдельный сервис со своим горизонтальным масштабированием.
  • Разные стеки. Например, ML-сервис на Python, фронт-API на Go. Микросервис — естественная граница.

Когда монолит лучше

Если у вас 5–15 разработчиков, единые SLA и единый стек — монолит обычно выигрывает по всем метрикам: время разработки, надёжность, операционная нагрузка, стоимость инфраструктуры. И главное — латентность транзакций, которые в микросервисах развалятся на 5–10 HTTP-запросов с разными ошибками в каждом.

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

Если есть подозрение что когда-нибудь придётся пилить на сервисы — можно сразу строить монолит с жёсткими границами модулей. Каждый модуль:

  • Имеет публичное API (Python: класс с методами; Java: interface).
  • Не лезет в чужие таблицы напрямую — только через API владельца таблицы.
  • Тестируется изолированно.

В итоге у вас один процесс, одна база, простой деплой — но если завтра понадобится вынести модуль в отдельный сервис, граница уже есть.

Реальный пример

На одном из наших проектов (e-commerce, 80 разработчиков клиента) мы делали аудит архитектуры. У них была классическая «спагетти-микросервисная» система из 47 сервисов. После аудита рекомендовали склеить 30 из них обратно в три модульных монолита. Через полгода клиент сообщил: время доставки фич выросло в 2 раза, операционная нагрузка упала на 60%.

Как принять решение

Спросите себя: «Если бы мы начали проект сегодня — мы бы сразу делали микросервисы?» Если ответ «нет, потому что нас всего 7 разработчиков» — то и сейчас они вам не нужны. Если «да, потому что у нас отдельные команды на каждый домен и разные SLA» — тогда нужны.

Правило простое: не идите в микросервисы, пока боль монолита не станет дороже боли распределённой системы.

Есть тема для статьи или задача? Расскажите.

Обсудить проект