Многие рисуют диаграммы в Draw.io и радуются. А я что-то чем дальше, тем реже пользуюсь этим инструментом.
Попытался сформулировать почему.
🔸 Что такое архитектурная диаграмма? Это модель, представление, форма описания какого-то аспекта будущего или существующего решения.
Диаграммы мы обычно рисуем в какой-то нотации, которая задает язык, понятия и смыслы, с помощью которых мы формируем модель.
С помощью выразительных средств выбранной нотации мы формулируем набор утверждений, например:
- Наша система состоит из 5 сервисов, которые называются вот так
- Нашей системе для работы необходима Kafka, которая обеспечивает функционирование топиков, через которые наши сервисы обмениваются данными
- Сервис "А" взаимодействует с сервисом "Б" по интерфейсу "И"
- Сервис "С" использует СУБД "У"
ну и так далее.
Да, нарисовать такую схемку в Draw.io легко и просто почти в любой нотации. А дальше начинаются многочисленные "НО".
🔹 Во-первых, Draw.io - это просто рисовалка квадратиков и стрелочек. Она не контролирует корректность утверждений с точки зрения выбранного языка. Запросто можно нарисовать, что интерфейс "И" реализует Сервис "Б", и ничего за это не будет. Отсюда два возможных последствия - либо архитектор сам строго и внимательно следит за корректностью диаграммы с точки зрения нотации, либо строгость и точность диаграмм будет "плавать", и как следствие, будет снижаться точность принятых решений, ведь неточности и расплывчатости каждый "читатель" будет трактовать по-своему. И что-то мне подсказывает, что второй кейс будет встречаться существенно чаще.
🔹 Во-вторых, такие модели просто невозможно поддерживать в сколько-нибудь сложных проектах. Ну вот, нарисовали мы такую диаграммку, обсудили с коллегами и решили, что нужно сделать разбиение чуть-чуть иначе, функции сервисов чуть-чуть по другому разложить. Теперь нужно это решение отразить в модели. Хорошо, когда у нас одна, ну две диаграммы. А если их десятки, а то и сотни, причем один и тот же элемент системы в разных видах представлен на разных диаграммах? Конечно, можно на это забить, и поменять только ту пару диаграмм, которые обсуждали, но дальше это приводит к тому, что накапливается большое число диаграмм непонятного статуса: невозможно понять, отражают они реальность или нет?
По итогу, я для себя выбрал два подхода к моделям, и ни для одного из них Draw.io не подошел:
- Нестрогие диаграммы, картинки, схемки и прочие наброски, которые делаются "в моменте", для текущих обсуждений и не поддерживаются в дальнейшем.
Тут нужен инструментарий максимально простой, легковесный, доступный. Чаще всего я использую легковесные рисовалки типа Excalidraw или yEd. Попытки использовать в этом качестве Draw.io не увенчались успехом, чтобы сделать даже простенький набросок нужно очень много всего нажимать и корректировать.
- Строгое моделирование для документирования решений и отслеживания изменений. Делается в специализированных моделерах, которые контролируют нотацию, отслеживают представления, в которых используются элементы модели.
Вносить изменения в модель может быть трудоемко, поэтому все изменения вносятся после того, как ключевые моменты уже обсуждены и приняты на уровне набросков. В качестве моделера Draw.io использовать не получается, каждая диаграмма - сама по себе. Тут я использую что-то вроде Archi, Visual Paradigm, Sparx EA, для таких инструментов диаграмма - это лишь интерфейс для работы с моделью.
#инструменты
Post #87
452
- 👏 3
- 🔥 1