Первый доклад Podlodka PHP Crew 5 Упорядочиваем хаос архитектурная документация по модели C4
Только что закончился первый доклад в рамках Podlodka PHP Crew #5. Это моя первая подлодка, и многие темы для меня сложные, поэтому решил стараться документировать те доклады на которых был, хоть в каком либо виде.
Этот доклад был на тему «Упорядочиваем хаос: архитектурная документация по модели C4» / Кирилл Сурогатов (Oxagile, Head of JS)!
Расскажу в двух словах, что я понял и для чегов се это нужно.
C4-модель была разработана для упрощения и улучшения процесса документирования архитектуры программного обеспечения.
Диаграммы организованы в соответствии с их иерархическим уровнем:
Диаграммы контекста (уровень 1): показывают систему в масштабе ее взаимодействия с пользователями и другими системами;
Диаграммы контейнеров (уровень 2): разбивают систему на взаимосвязанные контейнеры. Контейнер - это исполняемая и развертываемая подсистема;
Диаграммы компонентов (уровень 3): разделяют контейнеры на взаимосвязанные компоненты и отражают связи компонент с другими контейнерами или другими системами;
Диаграммы кода (уровень 4): предоставляют дополнительные сведения о дизайне архитектурных элементов, которые могут быть сопоставлены с программным кодом. Модель C4 на этом уровне опирается на существующие нотации, такие как UML, диаграммы отношений сущностей (ERD) или диаграммы, созданные интегрированными средами разработки (IDE)
Подробнее можно почитать в этой статье хабр .
Так же на докладе спикер демонстрировал инструмент Structurizr.
Это инструмент для визуализации архитектуры программного обеспечения, который поддерживает C4-модель. Он позволяет создавать диаграммы архитектуры, используя текстовые описания на DSL (domain-specific language) или через API.
Посмотрим пример описания через DSL язык:
workspace {
model {
user = person "User"
softwareSystem = softwareSystem "My Laravel App" {
webapp = container "Web Application" {
technology "PHP / Laravel"
}
database = container "Database" {
technology "MySQL"
}
user -> webapp "Uses"
webapp -> database "Reads from and writes to"
}
}
views {
systemContext softwareSystem {
include *
autolayout lr
}
container softwareSystem {
include *
autolayout lr
}
theme default
}
}
Сам Structurizr можно поднять в отдельном докер контейнере.
Это очень краткий пересказ без сути проблемы.
Для себя я вынес несколько плюсов:
- на много проще поддерживать текстовое описание диаграм, чем рисовать их в UML, draw.io и т.д;
- само описание диаграмм можно хранить в проекте, что значит мы его можем хранить в гите, что уже лучше чем изображения и проекты для диаграм;
- соответсвенно есть версионирование от гита и прочая прочая что мы применяем к своему программному коду .
Похожие статьи
Второй доклад Podlodka PHP Crew 5 Как стать x2 разработчиком, используя явное состояние
Доклад о том как использовать конечные автоматы от сооснователя Хекслета.
Читать дальше...