Получить доступ

Стартап начинает новый продукт и спрашивает: сразу микросервисы или монолит? Что вы порекомендуете и почему?

MiddleМонолит и микросервисы
Ещё спрашивают так:
  • С чего начинать новый проект — монолит или микросервисы?
  • Что такое модульный монолит?
Коротко

Модульный монолит: границы внутри процесса стоят дёшево и переносятся рефакторингом, а границы сервисов закрепляются сетевым контрактом и стоят дорого.

  • В начале предметная область ещё не понятна — граница наверняка будет неверной
  • Постоянный налог микросервисов маленькой команде не по силам
  • Модули с явным API, своими таблицами и запретом JOIN через границу — потом режутся по готовым швам

А ещё Выделять сервис, когда появляется организационная или нагрузочная причина

Так подсказку видит пользователь sotto на живом собеседовании — за пару секунд, пока вы думаете вслух.

Подробно

Рекомендация — начать с модульного монолита и сказать это прямо.

Почему. В начале проекта предметная область понятна плохо, и первые границы почти всегда окажутся неверными. Граница внутри монолита переносится рефакторингом за день; граница сервиса закреплена API, развёртыванием и миграцией данных — переделка занимает месяцы. Кроме того, микросервисы требуют постоянных вложений: CI/CD на каждый сервис, наблюдаемость и трассировка, контракты и их версионирование, локальное окружение, дежурства. Маленькая команда тратит на это силы, которые нужны продукту.

Как сделать монолит готовым к разделению:

  • модули по бизнес-возможностям с явным публичным API;
  • у модуля свои таблицы, запрет прямых JOIN и записей в чужие таблицы;
  • взаимодействие модулей через интерфейсы и внутренние события;
  • проверка правил зависимостей в сборке (ArchUnit, import-linter).

Когда выделять сервис: растут команды и мешают друг другу выкатками; у части системы резко другие требования к масштабированию, надёжности или стеку; нужна изоляция по безопасности. Тогда модуль режется по уже существующему шву. И обратное движение — объединение сервисов — тоже нормальное решение.

Что хотят услышать

  • Прямая рекомендация и обоснование через стоимость ошибки в границах.
  • Налог микросервисов для маленькой команды.
  • Практики модульного монолита.
  • Критерии, когда выделять сервисы.

Частые ошибки

  • Отвечать «зависит» без рекомендации.
  • Предлагать микросервисы «на вырост».

Что спросят дальше

  • Как вы будете следить, что модули не срастаются?
  • Какой первый сервис вы бы выделили и почему?

Разбор темы

Связанные вопросы

Закрытая бета

Подсказки на собеседовании — в реальном времени

sotto слышит вопрос интервьюера и показывает короткий ответ и план, как в блоке «Коротко». Оставьте контакт — пришлём доступ и промокод.

  • Промокод на 2 часа — сверх пробных 30 минут
  • Программа для Windows — скачать сразу, войти — через Яндекс ID или VK ID
  • Прямая связь с разработчиком: что улучшить — сделаем