Почему мы вернулись к модульному монолиту
Команды разработчиков меняют свою стратегию. Многие команды потратили годы на разделение приложений на микросервисы. Теперь они собирают всё воедино. И они не строят старые, запутанные монолиты. Они строят модульные монолиты.
Микросервисы создают скрытые издержки. Распределенные системы добавляют огромную сложность. Многие команды переходят на микросервисы из-за хайпа, а не из-за необходимости масштабирования. Если у вас небольшая команда, микросервисы могут только замедлять вашу работу.
Модульный монолит дает лучшее из обоих миров. Он остается единицей развертывания, но код организован в строгие модули. Вы получаете четкие границы без высоких затрат на эксплуатацию распределенной системы.
Сравнение двух подходов:
• Развертывание: Монолиты используют одну единицу. Микросервисы — множество. • Границы: В монолитах используются строгие правила кода. В микросервисах — сеть. • Взаимодействие: В монолитах используются простые вызовы функций. В микросервисах — сетевые вызовы. • Накладные расходы: У монолитов низкие эксплуатационные расходы. У микросервисов — высокие.
Когда стоит выбрать модульный монолит?
- В вашей команде менее 50 инженеров.
- Вам нужно снизить затраты на облачную инфраструктуру.
- Вы хотите упростить отладку и тестирование.
- Ваши сервисы всё равно часто приходится развертывать вместе.
Реальные компании уже делают это. Shopify использует модульный подход для управления миллионами мерчантов. Amazon Prime Video перевела определенную рабочую нагрузку с микросервисов обратно на монолит. Они добились 90-процентного снижения затрат на инфраструктуру.
Не пытайтесь строить систему масштаба Netflix, если у вас маленькая команда. Начинайте с модульности. Выделяйте сервис только тогда, когда данные подтвердят, что это действительно необходимо.
Используйте этот чек-лист, чтобы понять, нужно ли вам консолидировать систему:
- Вы тратите больше времени на отладку соединений между сервисами, чем на создание новых функций?
- Ваш счет за облако растет быстрее, чем число пользователей?
- У вас менее 5 DevOps-инженеров на множество сервисов?
- Инженерам приходится отслеживать один запрос через 3 или более сервисов, чтобы найти баг?
Если вы ответили «да», то переход на модульный монолит, скорее всего, будет правильным решением.
Дополнительное обучающее сообщество: https://t.me/GyaanSetuAi