Architecture Decision Log (ADL) — это документ или набор документов, в которых фиксируются решения, принятые в процессе проектирования архитектуры системы. Эти записи позволяют отслеживать, какие архитектурные решения были приняты, когда и почему. В ADL, как правило, содержится следующая информация:
- Заголовок решения: Краткое название решения.
- Контекст и проблема: Описание контекста, в котором возникла проблема, и сама проблема, требующая решения.
- Решение: Описание выбранного решения.
- Причины выбора: Обоснование, почему было выбрано именно это решение, а не другие возможные варианты.
- Последствия: Описание возможных последствий принятого решения, как положительных, так и отрицательных.
- Альтернативы: Краткое описание рассмотренных альтернатив и причины, по которым они были отвергнуты.
- Дата: Дата принятия решения.
- Автор: Имя или инициалы лица, принявшего решение.
Цели ведения ADL:
- Прозрачность: Обеспечение понимания того, почему были приняты определенные архитектурные решения.
- Документирование: Сохранение истории решений для текущих и будущих членов команды.
- Анализ и оценка: Возможность анализа и пересмотра принятых решений в будущем.
- Улучшение коммуникации: Упрощение обсуждения архитектурных вопросов внутри команды и с заинтересованными сторонами.
Ведение ADL помогает структурировать процесс принятия решений и обеспечивает более глубокое понимание архитектуры системы всеми членами команды.
Пример записи в ADL:
ADR 1: Выбор базы данных для нового проекта Ссылка на заголовок
Контекст и проблема Ссылка на заголовок
Для нового проекта необходимо выбрать систему управления базами данных (СУБД). Основные требования включают поддержку транзакций, горизонтальную масштабируемость и активное сообщество поддержки.
Решение Ссылка на заголовок
Мы выбрали PostgreSQL в качестве основной СУБД для проекта.
Причины выбора - PostgreSQL Ссылка на заголовок
- поддерживает ACID-транзакции.
- Высокая производительность и возможности горизонтального масштабирования.
- Активное сообщество и обширная документация.
- Хорошая поддержка расширений и дополнительного функционала.
Последствия Ссылка на заголовок
- Повышенная сложность настройки кластеров для масштабирования.
- Потребуется обучение команды для эффективного использования всех возможностей PostgreSQL.
Альтернативы Ссылка на заголовок
- MySQL: Отказано из-за меньшей поддержки транзакций и ограниченной функциональности.
- MongoDB: Отказано из-за отсутствия поддержки ACID-транзакций.
Дата Ссылка на заголовок
2023-10-05
Автор Ссылка на заголовок
Иван Иванов