JUNIOR-BLOG

Для всех кто увлекается программированием

Первый доклад 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 разработчиком, используя явное состояние

Доклад о том как использовать конечные автоматы от сооснователя Хекслета.

Читать дальше...

Комментарии