30 июня 2025 г.
Обе архитектуры направлены на разбиение монолитных систем на отдельные сервисы, но отличаются подходом и степенью детализации.
Сервис-ориентированная архитектура (SOA)
SOA — это подход, где приложение строится из
крупных, слабосвязанных сервисов, взаимодействующих через стандартные протоколы (SOAP, REST, ESB).
Ключевые черты:
- Крупные сервисы (например, «Управление заказами», «Аутентификация»).
- Общий централизованный оркестратор (ESB — Enterprise Service Bus).
- Акцент на повторном использовании сервисов в разных системах.
- Жёсткие стандарты (часто XML/SOAP).
Пример:
[Клиент] → [ESB] → [Сервис заказов]
[ESB] → [Сервис оплаты]
Плюсы:
- Подходит для корпоративных систем (банки, ERP).
- Упрощает интеграцию разных технологий.
Минусы:
- Централизованное управление (ESB — единая точка отказа).
- Сложность масштабирования.
Микросервисная архитектура (Microservices)
Микросервисы — это
мелкие, независимые сервисы, каждый из которых решает одну бизнес-задачу и работает как отдельное приложение.
Ключевые черты:
- Мелкие сервисы (например, «Корзина», «Рекомендации», «Отзывы»).
- Децентрализованное управление (каждый сервис самодостаточен).
- Гибкие технологии (можно использовать разные языки/БД).
- Общение через API (REST/gRPC) или асинхронно (Kafka, RabbitMQ).
Пример:
[Клиент] → [API Gateway] → [Сервис A (Node.js)]
[Сервис B (Python)]
[Сервис C (Java)]
Плюсы:
- Масштабируемость (можно обновлять сервисы по отдельности).
- Отказоустойчивость (падение одного сервиса не ломает всю систему).
- Гибкость (разные команды работают независимо).
Минусы:
- Сложность мониторинга и отладки (Distributed Tracing нужен).
- Накладные расходы на сетевые вызовы.
Сравнение SOA и Microservices
| Критерий |
SOA |
Микросервисы |
| Размер сервисов |
Крупные |
Мелкие |
| Управление |
Централизованное (ESB) |
Децентрализованное |
| Протоколы |
SOAP/XML, строгие стандарты |
REST/gRPC, гибкость |
| Масштабируемость |
Горизонтальная (сервисы) |
Горизонтальная + вертикальная |
| Сложность |
Высокая (ESB) |
Средняя (но требует DevOps) |
Когда что выбирать?
- SOA: Корпоративные системы с унаследованным кодом (банки, госструктуры).
- Микросервисы: Современные облачные приложения (стартапы, высоконагруженные сервисы).
Примеры:
- SOA: SAP, Oracle ERP.
- Микросервисы: Netflix, Uber, Spotify.
Заключение
- SOA — «тяжёлая» архитектура для интеграции сложных систем.
- Микросервисы — «гибкая» архитектура для быстрого развития и масштабирования.
- Общее: Обе избегают монолита, но микросервисы — это эволюция SOA в сторону большей автономности сервисов.
- Для новых проектов чаще выбирают микросервисы, а SOA остаётся в legacy-системах.