Pull to refresh

Comments 15

Подождите.

На plant uml же вроде можно с4 писать?

Можно, но это какое-то извращение. Yaml точно проще.

Да, конечно проще

Просто пока статью читал, не нашёл упоминания, паззл разошёлся.

Всё, ок

При всем уважении к искусству рисования диаграм - важность их часто преувеличена. Нет, продираться через портянку текста без единой иллюстрации - никакого удовольствия нет. Но практика показала что диаграммы почти всегда представляют собой не более чем визуальные приманки, на которые можно навешивать и заякоривать дополнительную информацию.

Если же рассматривать диаграмму как самостоятельный источник знания - то там или показывается что-то общеизвестное ("солнышко всходит и заходит", "устройство состоит из корпуса, крышки, и запчастей внутри"), или наоборот из-за высокого полёта опущены системы и связи которые на самом деле есть. Добро пожаловать нарисовать вменяемую диаграмму, я не знаю - почтовой системы, которая запускает своих воркеров на нодах кубера, алерты которого идут в эту же почтовую систему... И не просто нарисовать (нарисовать-то можно) - а чтобы по этой диаграмме можно было делать нетривиальные наблюдения - например что при отказе кубера, алерты тоже скорее всего не доставятся.

Делу бы помогло, если можно бы было описать систему на каком-то языке, и потом генерировать нужные представления и диаграммы, выделяя слои и накладывая фильтры. Тогда было бы понятное и самосогласованное описание системы (и хорошо бы - версионированное), а из него уже генерировались какие хочешь диаграммы типа: "выбери вот эту и ту ключевую систему - и все их связи первого уровня".

А пока такого описания нет - диаграмма остается чисто иллюстрацией, которая зависит от того а) на чем хочет сделать акцент источник информации и б) что ожидает увидеть приемник. И каждый ее рисует в силу своих способностей и усидчивости... И уж C4 оно или нет - в конечном счете не имеет значения... И версионировать именно диаграмму (и не описание системы в целом) - я тоже большой выгоды не вижу...

Вы недооцениваете силу нотаций. Такое есть с boxes and arrows. Но если стейкхолдеры читают тот же C4, визуализация ускоряет процесс обмена знаниями многократно. Ваш архитектор.

Еще раз - в 99% случаев, стейкхолдер уже и так прекрасно знает всё что вы нарисовали на диаграмме. А если не знает - то диаграмма ему мало поможет (без чтения оставшейся портянки). При этом я ни разу не отрицаю полезности диаграмм! Схематический рисунок - нечто очень древнее, и очень сильно отзывающееся в мозгу homo - что позволяет лучше раскладывать прилагающуюся к рисунку информацию. "Лучше один раз увидеть - чем сто раз услышать" (С) народная мудрость. Самое смешное - что даже ошибки на диаграмме типа перепутанных названий и ведущих "в никуда" стрелок - никого особо не смущают. Если рисунок релевантный - то он все-равно улучшает восприятие сопровождающего текста/рассказа. Но ровно по этой причине - будете ли вы на схеме соблюдать строгий канон, или просто накидаете кружков/квадратиков/стрелочек - практически ни на что не влияет. Конечно, если стейкхолдер привык к C4 - не надо его мучать ничем другим, так и рисуйте. Но вот делать вид что "мы сейчас научим всех C4, введем его как корпоративный стандарт - и ух, у нас все сразу улучшится" - я бы сильно поостерегся...

Все верно и потому я и предлагаю YAML из которого можно собрать любую визуализацию в том числе C4. Полагаю что при правильных танцах с бубнами можно сконвертировать и в нотации Archmate. В чем у меня лично претензии к C4 и Blocks&Lines, один слишком ограничен (не возможности указать интерфейсы), другой слишком свободен (рисуй что хочешь, понимай как хочешь). В yaml же один раз описал структуру, разложил все по полочкам, и конвертируй куда хочешь. Плюс возможно каждый модуль описать в yaml и потом, так как это машиночитаемая нотация, можешь визуализировать все связи, все интерфейсы, потоки, ограничения, протоколы и т.п. Тут прям поле для деятельности архитектора. С удовольствием бы занялся типизацией yaml и созданием редактора (конвертора), но как обычно нет времени и достойного финансирования, да и Structurizr DSL уже есть. Знаю что в больших компаниях (говорю про Россию) уже есть системы машиночитаемых нотаций, ну или зачатки этих систем. Так что будущее мне видится именно так: источник знаний один который конвертируется в любые нотации.

Автор или ИИ смешал нотацию с языком разметки. Structurizr и PlantUML машиночитаемы, прекрасно версионируются и автоматизируются. Несложным преобразованием можно тащить манифесты прямо с оркестратора. Кстати, у Саймона есть ещё диаграмма развертывания.

Когда много мыслей, а хочется донести мысль не раздувая статью до уровня документации приходится чем-то жертвовать. Если быть совсем честным, любой код можно положить в гит и сделать diff, тот же C4 от drawio по факту xml как файл word или excel и да тут получается версионировать, но вот без знания структуры разметки будет сложно понять что изменилось. С UML или Structurizr попроще, но будем честны UML это про бизнес процессы, все остальное опции, рисовать там диаграммы c4 тот еще вариант. Structurizr поинтересней и чуть понятней, можно еще mermaid добавить в эту же историю. Что касается диаграммы развертывания, отличная история, но до тех пор пока не появляется георезервирование, изолированые vlan и т.п. Тут уже нотации от google поинтересней.

Гибрид нужен. C4 + YAML. Понятное дело...

Ну я пытался донести эту мысль что собираем все в yaml а потом конвертируем в то что требуется в том числе в C4. C4 к сожалению имеет очень ограниченную нотацию, так не возможно обозначить интерфейсы, а их к слову может быть очень много у одного микросервиса - особенно если он является адаптером.

Коррекцию текстов я всегда делаю через AI, чтобы избежать ошибок. При наличии такого корректора (в реальной жизни это был бы редактор) глупо, потому как в процессе написания очень часто возникает тавтология и другие стилистические ошибки.

В литературе видел перевод "стейкхолдер" как "заинтересованная сторона". Бюрократично, но люди понимают)

Sign up to leave a comment.

Articles