Gymterview
middle

Когда стоит использовать микросервисы, а когда нет?

Решение о переходе на микросервисы определяется масштабом системы, размером команды и зрелостью DevOps-культуры. Начинать новый проект с микросервисов почти всегда ошибочно.

Стоит использовать, когда

  • Система большая и сложная, разрабатывается несколькими командами.
  • Требуется независимое масштабирование отдельных компонентов.
  • Нужны разные циклы релизов для разных частей системы.
  • Организация достаточно зрелая: есть CI/CD, мониторинг, опыт работы с распределёнными системами.
  • Разные части системы имеют разные требования к доступности, нагрузке или технологиям.
  • Команда разработки достаточно большая (обычно больше 20-30 человек).

НЕ стоит использовать, когда

  • Проект маленький или находится на ранней стадии — лучше начать с монолита (или «модульного монолита»).
  • Команда маленькая (3-5 разработчиков) — накладные расходы на инфраструктуру съедят все преимущества.
  • Домен недостаточно изучен — невозможно правильно определить границы сервисов.
  • Нет DevOps-культуры и инфраструктуры — без CI/CD, мониторинга, оркестрации контейнеров микросервисы будут кошмаром.
  • Жёсткие требования к транзакционной согласованности — если все данные должны быть строго консистентны, eventual consistency создаст серьёзные проблемы.

Совет Мартина Фаулера: «Не начинайте с микросервисов. Начните с монолита, правильно структурируйте его по модулям, и когда почувствуете боль масштабирования — выделяйте микросервисы.»

Хорошей промежуточной стратегией является модульный монолит — единое приложение, но с чёткими границами модулей, которые потом можно выделить в отдельные сервисы:

Пример
// Модульный монолит — чёткие границы модулей
// module-payment/src/main/java/com/bank/payment/PaymentModule.java
// module-customer/src/main/java/com/bank/customer/CustomerModule.java
// Модули взаимодействуют только через определённые интерфейсы

На собеседовании: ключевой посыл — «it depends». Интервьюер хочет увидеть, что вы не фанатик микросервисов и понимаете, когда монолит лучше. Упомяните модульный монолит как промежуточный вариант.