Паттерны архитектуры
Этот материал представляет собой определение понятия паттернов архитектуры с примерами, вопросами к экзаменам и тегами.
Кратко
Паттерны архитектуры — это переиспользуемые структуры решений на уровне системы. Они описывают контекст, противоречия (forces), решение и его последствия, сосредотачиваясь на качественных целях вроде поддерживаемости, масштабируемости, безопасности и тестируемости.
Техническое определение
Паттерн архитектуры определяет общую структуру системы (например, слои, Ports & Adapters, микросервисы, потоки событий) и влияет на качественные атрибуты.
Ключевые компромиссы:
- Консистентность против доступности
- синхронные RPC-цепочки против асинхронного обмена сообщениями
- единая база данных против отдельных хранилищ для каждого сервиса
Современные системы комбинируют паттерны (например, DDD-срез плюс гексагональная архитектура на сервис). Для экзамена важны определение, последствия, сценарии применения и риски (например, Distributed Monolith).
Материал для экзамена
- Различия и последствия монолита и микросервисов
- Послойная архитектура и Dependency Inversion
- Ports & Adapters (гексагональная)
- IHK: назвать качественные цели и метрики (MTTR, latency)
- Security: Zero Trust, secrets, Service-to-Service Auth
- Экономика: операционные расходы, лицензирование, разделение командой
- Документирование: C4 (уровни 1–3) и ADRs
Основные компоненты
- Контекст и допущения
- Проблема и противоречия
- Структура и элементы
- Стиль коммуникации (синхронный или асинхронный)
- Стратегия данных
- Интерфейсы и протоколы
- Build, тестирование, развертывание, observability
- Архитектурные элементы (слои, адаптеры)
- Безопасность (аутентификация, авторизация, изоляция)
- Тесты (contract, chaos)
Практический пример (гексагональная архитектура, упрощенно)
Domain: Order.confirm() генерирует Domain Event
Application Service оркестрирует Use Case
Ports определяют контракты (Repo, Bus)
Adapter подключают REST, SQL, Kafka
Плюсы и минусы
Плюсы
- Лучшая изменяемость
- Тестируемость
- Целенаправленные качественные атрибуты
Минусы
- Больше сложности
- Требуется инфраструктура и observability
- Риск Distributed Monolith
Типичные экзаменационные вопросы (с кратким ответом)
- Когда послойная архитектура имеет смысл? Когда есть четкое разделение ответственности и зависимости направлены внутрь.
- Микросервисы против монолита: в чем принципиальное отличие? В развертывании, способе хранения данных и управлении транзакциями.
- Что дает гексагональная архитектура? Отделяет основную логику от входов и выходов через ports и adapters.
Свободный ответ
Учи паттерны через проблему, противоречия, решение и его последствия. Документируй архитектурные решения как ADRs и визуализируй с помощью C4.
Стратегия обучения
- Нарисуй C4 для какой-то системы.
- Отметь для каждого use case синхронные и асинхронные пути.
- Практикуй краткие определения и компромиссы.
- Назови риски и меры противодействия.



