Почему этот вопрос возникает так часто
«Микросервисы» — модное слово, и многие команды хотят строить «как в Netflix» с первого дня. Это почти всегда ошибка. Netflix перешёл на микросервисы после нескольких лет работы монолита, когда размер команды и объём трафика сделали монолит узким местом. Для нового продукта путь обычно обратный.
Монолитная архитектура: когда это правильный выбор
Монолит — это приложение, где все компоненты работают в одном процессе и деплоятся как единое целое. Для большинства новых продуктов это оптимальный старт:
- Проще разрабатывать и тестировать — вся логика в одном месте.
- Проще деплоить — один артефакт, одна операция.
- Дешевле поддерживать на ранних этапах — нет оверхеда на управление распределённой системой.
- Легче рефакторить — нет контрактных зависимостей между сервисами.
Хорошо структурированный монолит (с чёткими модулями и разделением ответственности) способен выдержать значительную нагрузку и размер команды. Amazon, GitHub, Stack Overflow работали на монолитах миллионы пользователей.
Когда микросервисы оправданы
Микросервисная архитектура — это разбиение приложения на независимые сервисы, каждый из которых отвечает за конкретную область бизнес-логики и деплоится отдельно. Оправдано, когда:
- Команда выросла до 15+ разработчиков и монолит стал узким местом для параллельной работы.
- Разные части системы имеют принципиально разные требования к масштабированию.
- Нужна технологическая независимость — разные сервисы могут использовать разные языки и фреймворки.
- Требования к доступности критических компонентов несовместимы с монолитом.
Цена микросервисов
Микросервисная архитектура создаёт серьёзный оверхед: распределённые транзакции, сетевые задержки между сервисами, сложность отладки распределённых запросов, необходимость в оркестрации (Kubernetes), более сложный CI/CD. Это реальные расходы — как в деньгах, так и в сложности системы.
Практическое правило
Начинайте с хорошо структурированного монолита. Выделяйте сервисы тогда, когда конкретная часть системы становится узким местом — не раньше. Это называется «модульный монолит» или «монолит, готовый к декомпозиции», и это наиболее здравый подход для большинства продуктов.
Вывод
Архитектура должна соответствовать текущим задачам, а не воображаемому будущему. Преждевременная микросервисная архитектура — это один из самых дорогих способов усложнить продукт без видимой пользы на ранних стадиях.