Зачем PlantUML, когда есть С4?
PlantUML
Если вы хоть чуть-чуть в сфере ИТ, вы точно встречали PlantUML диаграммы. Это такие схемки с пошаговым описанием действий в системе, или описанием структуры проекта (сервисы, базы, и тд). Визуализация это, конечно, прекрасно, но хорошая визуализация ещё лучше. А PlantUML предоставляет хорошую визуализацию только для одного уровня абстракции.
С4
В проекте всегда можно выделить несколько уровней абстракции, и именно про это модель C4. Четверка в названии означает уровни:
1. Диаграмма системы — что приносит пользу пользователю. Система состоит из контейнеров.
2. Диаграмма контейнера — наши программистские сущности: базы данных, s3, отдельные приложения и микросервисы, это всё контейнеры. И каждый контейнер состоит из компонентов.
3. Диаграмма компонента — это модули ПО. Например, микросервис состоит из нескольких компонентов: СУБД, контейнер с приложением, веб-сервер.
4. Диаграмма кода — каждый компонент как-то напрограммирован. Вот тут можно сделать описание модулей и классов (опускаться до этого уровня обычно не нужно).
Кто кого?
Ещё есть правило, что нужно указывать направленность взаимодействия. Например, код ходит в базу данных. Да, тут сразу понятно, кто к кому обращается, ведь БД сама не ходит к приложению.
Если взаимодействие с API, то указывать направленность очень важно: мы можем запрашивать данные с внешнего ресурса, а также ресурс может уведомлять наше приложение о новом событии. И при указании направленности мы ещё и подписываем стрелочку, уточняем, что именно тут происходит.
А самый кайф C4, что никому не нужно приближение дальше второго уровня, изредка третьего.
PlantUML всё ещё актуален для Sequence диаграмм — схем с последовательностью действий, например “пользователь запросил А, система вытащила данные из B, перепроверила через C и отдала пользователю”. А вот если структура системы описана по C4, то это гораздо понятнее.
Кстати, что PlantUML, что C4 рисовать руками не нужно, используйте для этого текстовый формат: его легко версионировать и распространять. Есть свои языки для этого, а также реализации на привычных нам Python, JS и тд.
текст
MaksSh
О, интересную тему поднял.
Мне с С4 пока не доводилось работать ещё плотно, но девопсы очень хотели
Всё никак не доберусь изучить тему.
Всё никак не доберусь изучить тему.Aug 06 2024 22:17 

1
Сурен Хоренян
MaksSh, мне как-то сказали, что очень нужна схема к "завтра", я больной в ночи делал, утром отдал, днём спрашиваю ну как, а мне сказали что не пригодилось. Вот это обидно было
Aug 07 2024 00:02
Георгий Дубовицкий
только сегодня коллега восторгался PlantUML, как Сурен с альтернативой)
Aug 06 2024 22:22
Сурен Хоренян
Георгий Дубовицкий, хаа
Aug 07 2024 00:01
simforum
в UML ценные и рабочие диаграммы: классов, состояний, последовательности, активности (это чаще заменяется BPMNом, т.к. для описания процесса он удобнее, а для взаимодействия компонентов - диаграмма последовательности). В целом С4 сильно коррелирует с UML, в UML есть виды диаграмм для всех уровней С4.
PlantUML очень прикольная штуковина, она кстати не только UML умеет визуализировать. Она охренительно отрисовывает JSON - https://plantuml.com/ru/json
Прямо в онлайне скармливаешь ей - и вуаля ))
https://www.plantuml.com/plantuml/uml/RP71RuCW5CRl_XKlx6epfUeQJsrssy5BJysoWrCiR0W6S4kp-ByFdjh4f0SW_3xUnyVZQ5rjt9VLAdhYuigb7mw8hAshwfwH3QtRrZ1h2Jm3QOIxRTM1QyMgiVzaPZwIuAoGaEWl0Y2TC8jn2UHDSqNYWE_NUNhkXUCp5lOanK-WpemCKNqDMtgODqkU4eAv1zOPnjpfZWbDWQeMpiZH59ReNgpOBroq-LwvRuN32DLbHOFsKBxg5dcQ93JTxVr2l3nXXishItZ7kZcELzrjm4gk_UFYbIujmNmKyZpVfNIV4PId-B63xZhHFFGeiW8zihnuMJpy_87f6YwaRuOAoMPY1ptQuAX6AQCfEZBLulV_0m00
Aug 07 2024 01:02 

1
Сурен Хоренян
simforum, оооо крутяк! Как-то меня обошло использование JSON в UML
Aug 07 2024 01:21
simforum
Там не столько в UML, сколько конкретно в plantuml, это ж библиотека визуализации, она не только UML умеет визуализировать. Кроме json там ещё много всего.
Aug 07 2024 11:40 

1
Сурен Хоренян
simforum, а, точно. Не подумал
Aug 07 2024 12:13