ADR и документирование архитектуры (C4)

↑ 8.2 Архитектурные стили и DDD · ← Предыдущая

Обязательно~3 мин чтенияУровень: senior

Зачем это на собесе

Как вы фиксируете и объясняете архитектурные решения — важно для senior и техлида.

Объяснение

ADR (Architecture Decision Record) — короткий документ об одном решении: контекст, варианты, решение, последствия. Хранится в репозитории рядом с кодом и не редактируется после принятия (замещается новым ADR).

# ADR-007: Брокер сообщений — Kafka вместо RabbitMQ
Статус: принято (2025-06-12) · Заменяет: — · Участники: команда платформы
 
## Контекст
Нужен replay событий и поток 20k msg/s; несколько независимых потребителей.
 
## Варианты
1. RabbitMQ — проще эксплуатация, нет replay.
2. Kafka — replay, масштабирование партициями, сложнее эксплуатация.
 
## Решение
Kafka (KRaft), 3 брокера, retention 7 дней.
 
## Последствия
+ replay, масштабирование; − эксплуатационная сложность, нужен Schema Registry.
Пересмотреть при падении нагрузки ниже 2k msg/s.

Модель C4 — иерархия диаграмм архитектуры:

УровеньЧто показываетАудитория
1. System Contextсистема и её окружение (пользователи, внешние системы)все
2. Containerприложения и хранилища внутри системы (API, БД, брокер)разработчики, ops
3. Componentкомпоненты внутри контейнераразработчики
4. Codeклассы (обычно не рисуют)

Инструменты: Structurizr, PlantUML, Mermaid, draw.io; «диаграммы как код» лежат в репозитории.

Прочее: arc42-шаблон, README сервиса, runbook, OpenAPI/AsyncAPI, карта контекстов, диаграммы последовательностей для ключевых потоков.

Нюансы и подводные камни

  • Документация устаревает: держите рядом с кодом, включайте в ревью, генерируйте где возможно.
  • ADR фиксирует «почему», а не «как»: код и так показывает «как».
  • Не документируйте всё: только значимые решения и диаграммы, которые читают.
  • Диаграмма без легенды и уровня детализации вводит в заблуждение.

Практика

  1. Напишите три ADR для решений вашего проекта (брокер, хранилище, аутентификация).
  2. Нарисуйте C4 уровня Context и Container для своей системы.
  3. Внедрите шаблон ADR и добавьте его в процесс ревью.

Вопросы с ответами

Связанные темы