Модель C4 — это подход к моделированию архитектуры системы, фокусирующийся на простоте нотации и различных уровнях абстракции. Простая и нестрогая нотация делает диаграммы легко читаемыми и моделируемыми. Разные уровни абстракции подходят как для бизнеса, так и для разработчиков.
Модель C4 включает четыре уровня абстракции:
Уровни абстракции в модели C4
- Контекст: Самый высокий и абстрактный уровень. Диаграмма контекста показывает, как документируемая система взаимодействует с другими системами и их назначение.
- Элементы диаграммы:
- Пользователь: прямоугольник с закруглёнными углами и кружком внутри.
- Документируемая система: синий прямоугольник.
- Внешняя система: серый прямоугольник.
- Стрелки: указывают направление взаимодействия (от вызывающего к вызываемому).
- Элементы диаграммы:
- Контейнеры: Этот уровень абстракции подходит для пользователей, которым необходимо понять архитектуру приложения без глубокого погружения в технические детали. Цель – ответить на вопросы об используемых технологиях, составе системы из контейнеров, взаимодействии контейнеров между собой и с внешними системами, а также о взаимодействии пользователей с системой.
- Элементы диаграммы:
- Контейнер: голубоватый прямоугольник (самостоятельная часть системы).
- Хранилище данных: цилиндр.
- Брокер/очередь сообщений: горизонтально расположенный цилиндр.
- Группа контейнеров: пунктирная рамка.
- Элементы из диаграммы контекста.
- Элементы диаграммы:
- Компоненты: Целевая аудитория – программисты и архитекторы. Перед использованием рекомендуется обсудить необходимость этого уровня с командой. Цель – ответить на вопросы о составе контейнеров из компонентов, взаимодействии компонентов между собой и с внешними системами, а также о взаимодействии пользователей с компонентами.
- Элементы диаграммы:
- Компонент: голубоватый прямоугольник (абстракция, из которой состоит контейнер).
- Хранилище данных.
- Брокер/очередь сообщений.
- Группа компонентов: пунктирная рамка.
- Пользователь.
- Внешняя система.
- Стрелки.
- Элементы диаграммы:
- Код: Низкоуровневая детализация системы. Рекомендуется использовать UML Class Diagram и Entity Relationship Diagram (ERD) или схожие нотации.
Работа с моделью C4: пример системы заказа лекарств
Работа над документированием системы начинается с диаграммы контекста (первый уровень). Далее, последовательно создаются диаграммы контейнеров, компонентов и кода. Примеры диаграмм иллюстрируют процесс моделирования на каждом уровне, показывая взаимодействие элементов и использование различных нотаций.
Рекомендации по использованию модели C4
- Единообразное расположение элементов: пользователи в верхней части, хранилища данных в нижней, внешние системы по периметру.
- Небольшие диаграммы: размер A4.
- Объединение и декомпозиция элементов: для упрощения сложных диаграмм.
- Условное использование диаграммы компонентов: в некоторых случаях диаграмма компонентов может быть не нужна.
- Использование диаграмм последовательности: вместо UML Class Diagram и ERD для отображения интеграций между системами.
- Декомпозиция интеграций: для упрощения диаграмм с большим количеством интеграций.
- Использование интерактивных элементов: (например, в Confluence) для навигации между уровнями абстракции.
Выводы
Модель C4 позволяет экономить время на чтение и поиск документации, позволяя получать нужную информацию быстро. Однако, необходимо учитывать затраты времени на создание и актуализацию диаграмм.