Диаграмма компонентов

Тема дорожной карты · Software Architecture

Диаграмма компонентов (C4 Уровень 3) — это важный инструмент для визуализации внутренней структуры одного контейнера. Она помогает понять, как различные компоненты (модули, сервисы, классы) взаимодействуют между собой. Эта диаграмма особенно полезна для команд, которые работают с сложными системами, где требуется глубокое понимание внутренней структуры.

Как это работает

Для создания диаграммы компонентов необходимо выбрать один контейнер, который имеет сложную внутреннюю структуру. Затем показываются 5-15 основных компонентов внутри этого контейнера, каждый из которых представлен как отдельный блок. Каждый блок должен быть подписан соответствующим назначением и, при необходимости, технологией, используемой в этом компоненте. Стрелки используются для показа взаимодействия между компонентами, таких как вызовы или потоки данных. Важно помнить, что каждая диаграмма компонентов должна представлять только один контейнер и не смешивать контейнеры на одной диаграмме.

Когда применять

Диаграммы компонентов следует использовать с умом и только в тех случаях, когда сложность контейнера действительно требует более детального представления. Обычно это касается основного backend бизнес-логики. Для простых контейнеров, таких как статическое веб-приложение или тонкий BFF (Backend for Frontend), создание диаграммы компонентов может быть излишним и приведет к дополнительной нагрузке на разработчиков. Диаграммы компонентов должны обновляться только при значительных изменениях на уровне компонентов, а не после каждого pull request.

Типичные ошибки

  1. Рисование для каждого контейнера — это может привести к усталости от диаграмм, и никто не будет читать множество подобных диаграмм.
  2. Уход на class-уровень — это уже Уровень 4 диаграммы, и они обычно лучше генерируются из кода, чем рисуются вручную.
  3. Быстро устаревает — компоненты меняются быстрее контейнеров, и если команда не может поддерживать актуальность диаграммы, то лучше пропустить создание диаграммы.

Связанные понятия

Полезные ресурсы