Skip to content
IRC-CodingIRC-Coding
Паттерны архитектурыC4ADRHexagonal ArchitectureСлоистая архитектураCQRS

Паттерны архитектуры: цели, компромиссы, C4/ADR

Паттерны архитектуры: контекст, силы, решение, последствия. Примеры, данные, синхронная/асинхронная коммуникация.

S

schutzgeist

1 min read
Паттерны архитектуры: цели, компромиссы, C4/ADR

Паттерны архитектуры

Этот материал представляет собой определение понятия паттернов архитектуры с примерами, вопросами к экзаменам и тегами.

Кратко

Паттерны архитектуры — это переиспользуемые структуры решений на уровне системы. Они описывают контекст, противоречия (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

Основные компоненты

  1. Контекст и допущения
  2. Проблема и противоречия
  3. Структура и элементы
  4. Стиль коммуникации (синхронный или асинхронный)
  5. Стратегия данных
  6. Интерфейсы и протоколы
  7. Build, тестирование, развертывание, observability
  8. Архитектурные элементы (слои, адаптеры)
  9. Безопасность (аутентификация, авторизация, изоляция)
  10. Тесты (contract, chaos)

Практический пример (гексагональная архитектура, упрощенно)

Domain: Order.confirm() генерирует Domain Event
Application Service оркестрирует Use Case
Ports определяют контракты (Repo, Bus)
Adapter подключают REST, SQL, Kafka

Плюсы и минусы

Плюсы

  • Лучшая изменяемость
  • Тестируемость
  • Целенаправленные качественные атрибуты

Минусы

  • Больше сложности
  • Требуется инфраструктура и observability
  • Риск Distributed Monolith

Типичные экзаменационные вопросы (с кратким ответом)

  1. Когда послойная архитектура имеет смысл? Когда есть четкое разделение ответственности и зависимости направлены внутрь.
  2. Микросервисы против монолита: в чем принципиальное отличие? В развертывании, способе хранения данных и управлении транзакциями.
  3. Что дает гексагональная архитектура? Отделяет основную логику от входов и выходов через ports и adapters.

Свободный ответ

Учи паттерны через проблему, противоречия, решение и его последствия. Документируй архитектурные решения как ADRs и визуализируй с помощью C4.

Стратегия обучения

  1. Нарисуй C4 для какой-то системы.
  2. Отметь для каждого use case синхронные и асинхронные пути.
  3. Практикуй краткие определения и компромиссы.
  4. Назови риски и меры противодействия.

Дополнительные материалы

  1. https://microservices.io/patterns
  2. https://c4model.com/
  3. https://martinfowler.com/architecture
Назад к блогу
Share:

Nächster Artikel in Архитектура программного обеспечения

Weiterlesen
Паттерны проектирования: Singleton, Observer, Factory

Похожие статьи