Какие архитектурные стили существуют, сравните монолит, SOA, микросервисы и serverless
Четыре основных стиля
1. Монолит — единое приложение, все компоненты в одном процессе.
2. SOA (Service-Oriented Architecture) — приложение разделено на крупные сервисы, взаимодействующие через Enterprise Service Bus (ESB). Типично используется SOAP, WSDL.
3. Микросервисы — приложение состоит из множества мелких независимых сервисов, каждый из которых отвечает за свой Bounded Context. Общение через REST/gRPC/Message Broker.
4. Serverless — код исполняется в виде функций (FaaS), управляемых облачной платформой. Нет необходимости управлять серверами.
Схематичное сравнение
Пример
Монолит:
┌──────────────────────────┐
│ Всё в одном процессе │
└──────────────────────────┘
SOA:
┌────────┐ ESB ┌────────┐
│Service │◄──────►│Service │
│ A │ │ B │
└────────┘ └────────┘
(крупные сервисы, общая шина)
Микросервисы:
┌───┐ ┌───┐ ┌───┐ ┌───┐
│ S1│ │ S2│ │ S3│ │ S4│
└─┬─┘ └─┬─┘ └─┬─┘ └─┬─┘
│ │ │ │
└───────┴──────┴──────┘
(REST / MQ / gRPC)
Serverless:
Event → λ Function → Result
(управляет облачная платформа)
Сравнительная таблица
| Критерий | Монолит | SOA | Микросервисы | Serverless |
|---|---|---|---|---|
| Размер сервисов | Один | Крупные | Мелкие | Функции |
| Развёртывание | Единый артефакт | По сервисам | Независимое | Автоматическое |
| Масштабирование | Вертикальное | По сервисам | По сервисам | Автоматическое |
| Технологический стек | Единый | Может различаться | Независимый | Ограничен платформой |
| Связь между компонентами | Прямые вызовы | ESB (централизованная) | API / очереди (децентрализованная) | События |
| Сложность инфраструктуры | Низкая | Средняя | Высокая | Средняя |
| Транзакции | ACID (просто) | Распределённые | Eventual consistency | Eventual consistency |
| Подходит для | Малые/средние проекты | Enterprise legacy | Крупные проекты, большие команды | Event-driven задачи, нестабильная нагрузка |
Комбинированный подход
На практике часто используется комбинация стилей: монолитное ядро для критичных транзакций (ACID) и микросервисы для сопутствующих функций (уведомления, отчёты, аналитика). Выбор архитектурного стиля определяется размером команды, требованиями к масштабированию и зрелостью DevOps-процессов.
На собеседовании: Интервьюер проверяет, можете ли вы обоснованно выбрать стиль для конкретной задачи, а не просто перечислить варианты. Частая ошибка — считать микросервисы «лучше» монолита во всех случаях, не учитывая стоимость инфраструктуры и координации.