C4 Модель: Архитектура за 15 минут

Модель C4 — это подход к моделированию архитектуры системы, фокусирующийся на простоте нотации и различных уровнях абстракции. Простая и нестрогая нотация делает диаграммы легко читаемыми и моделируемыми. Разные уровни абстракции подходят как для бизнеса, так и для разработчиков.

Модель C4 включает четыре уровня абстракции:

Уровни абстракции в модели C4

  1. Контекст: Самый высокий и абстрактный уровень. Диаграмма контекста показывает, как документируемая система взаимодействует с другими системами и их назначение.

    • Элементы диаграммы:
      • Пользователь: прямоугольник с закруглёнными углами и кружком внутри.
      • Документируемая система: синий прямоугольник.
      • Внешняя система: серый прямоугольник.
      • Стрелки: указывают направление взаимодействия (от вызывающего к вызываемому).
  2. Контейнеры: Этот уровень абстракции подходит для пользователей, которым необходимо понять архитектуру приложения без глубокого погружения в технические детали. Цель – ответить на вопросы об используемых технологиях, составе системы из контейнеров, взаимодействии контейнеров между собой и с внешними системами, а также о взаимодействии пользователей с системой.

    • Элементы диаграммы:
      • Контейнер: голубоватый прямоугольник (самостоятельная часть системы).
      • Хранилище данных: цилиндр.
      • Брокер/очередь сообщений: горизонтально расположенный цилиндр.
      • Группа контейнеров: пунктирная рамка.
      • Элементы из диаграммы контекста.
  3. Компоненты: Целевая аудитория – программисты и архитекторы. Перед использованием рекомендуется обсудить необходимость этого уровня с командой. Цель – ответить на вопросы о составе контейнеров из компонентов, взаимодействии компонентов между собой и с внешними системами, а также о взаимодействии пользователей с компонентами.

    • Элементы диаграммы:
      • Компонент: голубоватый прямоугольник (абстракция, из которой состоит контейнер).
      • Хранилище данных.
      • Брокер/очередь сообщений.
      • Группа компонентов: пунктирная рамка.
      • Пользователь.
      • Внешняя система.
      • Стрелки.
  4. Код: Низкоуровневая детализация системы. Рекомендуется использовать UML Class Diagram и Entity Relationship Diagram (ERD) или схожие нотации.

Работа с моделью C4: пример системы заказа лекарств

Работа над документированием системы начинается с диаграммы контекста (первый уровень). Далее, последовательно создаются диаграммы контейнеров, компонентов и кода. Примеры диаграмм иллюстрируют процесс моделирования на каждом уровне, показывая взаимодействие элементов и использование различных нотаций.

Рекомендации по использованию модели C4

  • Единообразное расположение элементов: пользователи в верхней части, хранилища данных в нижней, внешние системы по периметру.
  • Небольшие диаграммы: размер A4.
  • Объединение и декомпозиция элементов: для упрощения сложных диаграмм.
  • Условное использование диаграммы компонентов: в некоторых случаях диаграмма компонентов может быть не нужна.
  • Использование диаграмм последовательности: вместо UML Class Diagram и ERD для отображения интеграций между системами.
  • Декомпозиция интеграций: для упрощения диаграмм с большим количеством интеграций.
  • Использование интерактивных элементов: (например, в Confluence) для навигации между уровнями абстракции.

Выводы

Модель C4 позволяет экономить время на чтение и поиск документации, позволяя получать нужную информацию быстро. Однако, необходимо учитывать затраты времени на создание и актуализацию диаграмм.

Что будем искать? Например,программа