«У нас будут микросервисы» — фраза, которую мы слышим на старте почти каждого второго проекта, даже когда команда — три разработчика.

Какую проблему решают микросервисы#

  • Независимый деплой разных частей системы разными командами.
  • Изоляция отказа одного сервиса от остальной системы.
  • Возможность использовать разные технологии под разные задачи.

Микросервисы — это решение проблемы Конвея, а не проблемы производительности.

— парафраз известного тезиса в архитектурных обсуждениях

Модульный монолит

Чёткие границы между доменами внутри одного деплоя дают большую часть изоляции микросервисов без сетевых издержек и отдельной инфраструктуры на сервис.

Ключевые выводы

  • Микросервисы решают организационную проблему (много команд), а не техническую (нагрузка).
  • Модульный монолит с чёткими границами между доменами даёт почти все плюсы микросервисов без сетевых издержек.
  • Разделение на сервисы имеет смысл, когда команды физически не могут деплоиться независимо иначе.
  • Миграция монолит → сервисы дешевле, чем обратная — начинать с монолита почти всегда безопаснее.