C4-модель
Тема дорожной карты · Software Architecture
C4-модель (Simon Brown) — это простая и эффективная нотация для создания архитектурных диаграмм. Она состоит из четырёх уровней масштабирования, которые помогают понять структуру системы на разных уровнях детализации. Эти уровни включают Context (система в среде), Container (деплоябельные единицы), Component (модули внутри контейнера) и Code (классы внутри компонентов, опционально). Каждый уровень диаграммы добавляет детализацию, сохраняя при этом общий словарь терминов, что делает C4-модель удобной для понимания и использования.
Инструменты для создания C4-диаграмм включают Structurizr (разработан автором модели), C4-PlantUML и шаблоны draw.io. Эти инструменты позволяют создавать наглядные и понятные диаграммы, которые могут быть легко обновлены и расширены по мере развития проекта.
Как это работает
C4-модель начинается с уровня Context (Уровень 1), где система изображается как black box, окружённая пользователями и внешними системами. Этот уровень помогает понять, как система взаимодействует с внешним миром. Затем переходите к уровню Container (Уровень 2), который представляет основные деплоябельные единицы внутри системы, такие как веб-приложение, backend, база данных и кэш.
На третьем уровне, Component (Уровень 3), вы можете детализировать один контейнер за раз, показывая модули внутри него. Этот уровень полезен для более глубокого понимания внутренней структуры системы. Наконец, на четвёртом уровне, Code (Уровень 4), вы можете изучать классы внутри компонентов, но этот уровень часто пропускается, так как IDE-генерируемые диаграммы лучше подходят для детального анализа кода.
Для создания эффективных диаграмм C4-модели важно держать каждую диаграмму на одном экране, избегая перегрузки информации. Сложность диаграмм увеличивается по мере добавления новых уровней, но важно не перегружать одну диаграмму слишком большим количеством информации.
Когда применять
C4-модель особенно полезна для современных софтверных проектов, от соло-прототипов до больших enterprise-систем. Она является отличным инструментом для onboarding-документации, так как новый инженер может быстро понять структуру системы, прочитав C4-диаграммы. Однако, для чисто внутренней class-level документации, где требуется более детализированное представление кода, C4-модель может быть менее эффективной по сравнению с генерируемыми UML-диаграммами или самим кодом.
Типичные ошибки
- Пропуск уровня Context — прыжок сразу к Container без показа среды системы. Это может привести к тому, что читатель не сможет правильно понять, как система взаимодействует с внешним миром.
- Устаревшие диаграммы — диаграммы, которые были созданы на начальной стадии проекта и не обновляются. Такие диаграммы могут стать источником documentation debt, что усложняет понимание текущей структуры системы.
- Путаница 'container' с Docker — термин 'container' в C4-модели относится к любой запускаемой единице, такой как веб-приложение, backend или мобильное приложение, а не только к Docker-контейнерам.
Связанные понятия
Полезные ресурсы
Проверить знания (2)
Загрузка вопросов…