Ответ
Плюсы:
- Масштабируемость: можно масштабировать отдельные сервисы по потребностям
- Гибкость: разные сервисы можно писать на разных языках/технологиях
- Независимость команд: каждая команда работает над своим сервисом
- Устойчивость: падение одного сервиса не приводит к падению всей системы
- Быстрое развертывание: можно обновлять отдельные сервисы без полного деплоя
Минусы:
- Сложность: требуется оркестрация множества сервисов
- Нагрузка на сеть: много межсервисных вызовов
- Сложность отладки: трассировка запросов между сервисами
- Согласованность данных: сложнее поддерживать консистентность
- Операционные расходы: требуется инфраструктура для мониторинга и управления
Пример:
// Вместо монолита:
class OrderService {
createOrder() { /* логика заказа, оплаты, доставки */ }
}
// Разбиваем на микросервисы:
// order-service, payment-service, delivery-service