Architecture Decision Log (ADL) — это документ или набор документов, в которых фиксируются решения, принятые в процессе проектирования архитектуры системы. Эти записи позволяют отслеживать, какие архитектурные решения были приняты, когда и почему. В ADL, как правило, содержится следующая информация:

  1. Заголовок решения: Краткое название решения.
  2. Контекст и проблема: Описание контекста, в котором возникла проблема, и сама проблема, требующая решения.
  3. Решение: Описание выбранного решения.
  4. Причины выбора: Обоснование, почему было выбрано именно это решение, а не другие возможные варианты.
  5. Последствия: Описание возможных последствий принятого решения, как положительных, так и отрицательных.
  6. Альтернативы: Краткое описание рассмотренных альтернатив и причины, по которым они были отвергнуты.
  7. Дата: Дата принятия решения.
  8. Автор: Имя или инициалы лица, принявшего решение.

Цели ведения ADL:

  • Прозрачность: Обеспечение понимания того, почему были приняты определенные архитектурные решения.
  • Документирование: Сохранение истории решений для текущих и будущих членов команды.
  • Анализ и оценка: Возможность анализа и пересмотра принятых решений в будущем.
  • Улучшение коммуникации: Упрощение обсуждения архитектурных вопросов внутри команды и с заинтересованными сторонами.

Ведение ADL помогает структурировать процесс принятия решений и обеспечивает более глубокое понимание архитектуры системы всеми членами команды.

Пример записи в ADL:

ADR 1: Выбор базы данных для нового проекта Ссылка на заголовок

Контекст и проблема Ссылка на заголовок

Для нового проекта необходимо выбрать систему управления базами данных (СУБД). Основные требования включают поддержку транзакций, горизонтальную масштабируемость и активное сообщество поддержки.

Решение Ссылка на заголовок

Мы выбрали PostgreSQL в качестве основной СУБД для проекта.

Причины выбора - PostgreSQL Ссылка на заголовок

  • поддерживает ACID-транзакции.
  • Высокая производительность и возможности горизонтального масштабирования.
  • Активное сообщество и обширная документация.
  • Хорошая поддержка расширений и дополнительного функционала.

Последствия Ссылка на заголовок

  • Повышенная сложность настройки кластеров для масштабирования.
  • Потребуется обучение команды для эффективного использования всех возможностей PostgreSQL.

Альтернативы Ссылка на заголовок

  • MySQL: Отказано из-за меньшей поддержки транзакций и ограниченной функциональности.
  • MongoDB: Отказано из-за отсутствия поддержки ACID-транзакций.

Дата Ссылка на заголовок

2023-10-05

Автор Ссылка на заголовок

Иван Иванов