«Разбейте монолит на микросервисы» — один из самых вредных советов, которые можно услышать без контекста.
Монолит — это не плохо
Монолит — это простота. Один деплой, один процесс, простая отладка, транзакции из коробки.
Когда монолит правильный выбор:
- Стартап с командой до 10 человек
- Нет чёткой границы между доменами
- Скорость разработки важнее масштабируемости
Когда микросервисы оправданы
- Независимое масштабирование разных частей системы
- Несколько команд, работающих параллельно
- Разные требования к технологическому стеку
- Разные SLA для разных компонентов
Правило Мартина Фаулера
«Не начинайте с микросервисов. Начните с монолита, хорошо спроектируйте границы модулей, и только потом — при наличии реальной необходимости — разбивайте.»
Практика
Модульный монолит — золотая середина. Чёткие границы между доменами, единый деплой, возможность постепенного выделения сервисов по мере роста.
src/
├── modules/
│ ├── users/
│ ├── orders/
│ └── catalog/
└── shared/
Рефакторинг к микросервисам станет намного проще, когда границы уже проведены.