Gymterview
middle

Какие архитектурные стили существуют, сравните монолит, 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-процессов.

На собеседовании: Интервьюер проверяет, можете ли вы обоснованно выбрать стиль для конкретной задачи, а не просто перечислить варианты. Частая ошибка — считать микросервисы «лучше» монолита во всех случаях, не учитывая стоимость инфраструктуры и координации.