Условие
Что из перечисленного относится к архитектурным стилям?
- Монолит
- Микросервис
- Сервис-ориентированная архитектура
- Событийно-ориентированная архитектура
- Ничего из этого
Задание засчитывается, если все варианты выбраны правильно.
Решение
Все четыре стиля корректны: Монолит, Микросервис, SOA, EDA.
Краткая характеристика каждого
| Стиль | Суть | Когда применять |
|---|---|---|
| Монолит (Monolith) | Всё приложение — один развёртываемый артефакт. Один кодбэйс, одна БД. | Маленькие/средние проекты, MVP, стартапы |
| Микросервисы (Microservices) | Множество мелких независимых сервисов, каждый со своей БД. Связь через API/события. | Крупные продукты, разные команды, независимое масштабирование |
| SOA (Service-Oriented Architecture) | Сервисы покрупнее, чем микро; единая ESB (шина) для интеграции. | Корпоративные системы, легаси-интеграция |
| EDA (Event-Driven Architecture) | Компоненты обмениваются событиями через брокер (Kafka, RabbitMQ). Слабая связанность. | Реальное время, реактивные системы, сложные потоки |
Сравнение
| Аспект | Монолит | Микросервисы | SOA | EDA |
|---|---|---|---|---|
| Размер сервисов | один | очень мелкие | средние/крупные | переменные |
| Связь | внутри процесса | HTTP/gRPC | через ESB | через брокер событий |
| БД | одна общая | per-service | общая или per-service | per-service |
| Развёртывание | один артефакт | независимое | вместе или раздельно | независимое |
| Сложность ops | низкая | высокая | средняя | высокая |
Другие стили (не из списка задачи)
- Многоуровневая (Layered) — UI → бизнес-логика → DAL → БД.
- Hexagonal / Ports & Adapters — внутренний домен изолирован, адаптеры на границах.
- Pipe & Filter — конвейер обработки (Unix shells, ETL).
- Client-Server — два слоя.
- Peer-to-Peer (P2P) — равноправные узлы (BitTorrent).
- Serverless / FaaS — функции в облаке (AWS Lambda).
Подводные камни
- Считать монолит «плохим стилем». Это нормальный выбор для многих задач. «Microservices first» — антипаттерн для маленьких команд.
- Путать SOA и микросервисы. SOA исторически тяжелее (ESB, WSDL/SOAP); микросервисы — легче (REST/gRPC, без центральной шины).
- EDA не про размер, а про коммуникацию. Можно иметь монолит с EDA внутри (модули общаются событиями).
- Распределённый монолит. Микросервисы, которые жёстко связаны и деплоятся вместе — антипаттерн, наследует минусы обоих стилей.
Эталонный ответ
Монолит, Микросервис, Сервис-ориентированная архитектура, Событийно-ориентированная архитектура — всё это валидные архитектурные стили.