С помощью диаграмм можно объяснить что угодно. Тем более для этого есть классные инструменты

Язык коммуникации, о котором все забывают.

Я обожаю диаграммы. Рисовать их на доске или на бумажке и одновременно обсуждать с программистами. Это мой способ разобраться самому и объяснить что-то сложное другим.

Как бы я не любил маркерную доску — я часто рисую диаграммы на компьютере. Во первых, так их можно сделать очень «профессионально выглядящими» — это помогает в переговорах. Во вторых, сложно собраться у физической маркерной доски удаленно по зуму (хотя мы и это делали). В третьих, цифровые диаграммы проще редактировать, поддерживая документацию в актуальном состоянии.

Есть несколько классических типов диаграмм. Здесь речь пойдет об инструментах на примере «общей схемы архитектуры». На одном листе мы отразим основные группы пользователей, важные элементы системы и инфраструктуры — мобильные приложения, API, бэкенд, база данных, лоад-балансеры и прочие. На такой схеме удобно объяснять бизнесу, куда именно утекают денжищи, которые мы тратим на разработку.

Необходимые ресурсы

Можно нарисовать всю схему из квадратиков, треугольников и кругов, но для простоты восприятия я рекомендую использовать библиотекой иконок Amazon Web Services. Этот или аналогичный набор иконок есть во всех популярных инструментах.

С помощью диаграмм можно объяснить что угодно. Тем более для этого есть классные инструменты

Иконки сервисов вроде Яндекс.Метрики, Google BigQuery и прочих удобно скачать в SVG на VectorLogoZone — они добавят ярких элементов и упростят визуальную навигацию в большой схеме:

С помощью диаграмм можно объяснить что угодно. Тем более для этого есть классные инструменты

Самые популярные редакторы

Один из самых популярных сервисов для построения диаграмм — Lucidchart. В нем есть всё, что ожидаешь от подобного инструмента в 2020-м: встроенные библиотеки компонент, возможность редактировать документы вместе и оставлять друг другу комментарии прямо внутри, возможность легко встроить готовые диаграммы внутрь Notion и других баз знаний. В бесплатной версии есть ограничение на 3 документа, личная лицензия 7 евро в месяц, командная — 8 евро на человека.

Draw.io — бесплатный сервис, в нем нельзя редактировать один и тот же документ двум людям одновременно, зато можно хранить файлы в любом хранилище и нет никаких ограничений. Создатели зарабатывают на перепродаже программного движка сервиса корпорациям.

общая архитектура дорогого igooods в draw.io
общая архитектура дорогого igooods в draw.io

Мне не нравится пользоваться обоими этими сервисами (что-то про «чувство инструмента в руках») и не нравится качество картинок, которые получаются на выходе, но я не вижу смысла углубляться в эту тему. Проще остановиться на том, что это — вопрос вкуса.

Оба инструмента очень популярны и делают то, что обещают.

Если нужна очень красивая картинка

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

Основной минус — схемы рисовать долго, поддерживать и редактировать — не особо удобно.

В этом редакторе я рисую схемы для слайдов конференций и прочих важных штук, когда в «одноразовую» красивую картинку имеет смысл вложить много времени и сил. Ещё этот редактор удобен тем, что можно сделать грубую версию и отдать её хорошему дизайнеру — в своем редакторе они работают существенно быстрее, чем любой программист, и результат получается ещё круче.

та же самая диаграмма в фигме
та же самая диаграмма в фигме

Суперприятный редактор

Я открыл для себя Whimsical, пока готовил эту статью, но уже успел влюбиться. Удобные шорткаты, невиданная в подобных редакторах отзывчивость интерфейса, множество продуманных мелочей, благодаря которым схемы получаются аккуратными и красивыми.

Неудобно то, что нет поддержки библиотек иконок (например от AWS) и не понятно, какие у сервиса перспективы. В большую команду я его не потащу, но для своих личных целей и небольших проектов теперь буду пользоваться исключительно им.

рекомендую попробовать, в этом редакторе я перерисовал ту же самую схему в несколько раз быстрее и получил при этом удовольствие
рекомендую попробовать, в этом редакторе я перерисовал ту же самую схему в несколько раз быстрее и получил при этом удовольствие

Варианты для «программистов»

Если вы робот или схема слишком велика для того, чтобы нарисовать и поддерживать её руками — не беда. Используйте инструменты моделирования, а не рисования: Graphviz, yworks, Structurizr, Archi, Sparx Enterprise Architect. Описываете схему формально, в коде, финальную картинку компьютер сгенерирует автоматически.

Graphviz — научный инструмент для визуализации <a href="https://api.vc.ru/v2.8/redirect?to=https%3A%2F%2Fru.wikipedia.org%2Fwiki%2F%25D0%2593%25D1%2580%25D0%25B0%25D1%2584_%28%25D0%25BC%25D0%25B0%25D1%2582%25D0%25B5%25D0%25BC%25D0%25B0%25D1%2582%25D0%25B8%25D0%25BA%25D0%25B0%29&postId=151374" rel="nofollow noreferrer noopener" target="_blank">графов</a> из соответствующего <a href="https://api.vc.ru/v2.8/redirect?to=https%3A%2F%2Fru.wikipedia.org%2Fwiki%2F%25D0%25A2%25D0%25B5%25D0%25BE%25D1%2580%25D0%25B8%25D1%258F_%25D0%25B3%25D1%2580%25D0%25B0%25D1%2584%25D0%25BE%25D0%25B2&postId=151374" rel="nofollow noreferrer noopener" target="_blank">раздела математики</a>, но им часто пользуются для описания сложных схем
Graphviz — научный инструмент для визуализации графов из соответствующего раздела математики, но им часто пользуются для описания сложных схем

Базовый язык для описания моделей и схем — UML, Unified Modelling Language, но почти все инструменты используют свои собственные DSL и/или поддерживают обычные языки программирования.

Автоматизация создания схем

Есть попытки построить диаграммы автоматически, на основе анализа кода или даже инфраструктуры. Яркий пример — Cloudcraft. Если у вас вся инфраструктура в AWS — он не только сам нарисует схему, но ещё подсчитает расходы и даже покажет актуальный статус компонент:

С помощью диаграмм можно объяснить что угодно. Тем более для этого есть классные инструменты

Интерактивные диаграммы для веба

GoJS — классная библиотека, если диаграмма должна быть интерактивной и её хочется встроить в веб. У них очень приятные примеры диаграмм на сайте, рекомендую поиграть:

С помощью диаграмм можно объяснить что угодно. Тем более для этого есть классные инструменты

Вторая очень популярная js-библиотека для рендеринга диаграмм в вебе — mermaid.

С помощью диаграмм можно объяснить что угодно. Тем более для этого есть классные инструменты

JointJs — мощный фреймворк для разработки приложений для создания интерактивных диаграмм. Есть платная версия Rappid.

С помощью диаграмм можно объяснить что угодно. Тем более для этого есть классные инструменты

Немного теории перед развлекательным блоком

Пост про диаграммы будет не полным без упоминания c4 model — попытки формализовать искусство построения диаграмм. Предоставлю слово автору в пяти диаграммах (кликните на картинки для того, чтобы они открылись на полный экран):

ASCII-диаграммы (ШТОА?)

Теоретически, ASCII-диаграммы удобны тем, что их можно вставить прямо в файл исходного кода или в RFC-документ, в который картинку не добавишь. На самом деле, это, конечно, просто такой вид искусства.

Хороший веб-инструмент Textik:

С помощью диаграмм можно объяснить что угодно. Тем более для этого есть классные инструменты

и очень красивый маковский Monodraw:

С помощью диаграмм можно объяснить что угодно. Тем более для этого есть классные инструменты

Наконец, самое важное — пример использования диаграмм в реальном проекте

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

Все схемы ниже разработаны и нарисованы Антоном Давыдовом. Антон помогает нам в igooods с архитектурой и хардкорной ruby-разработкой. Инструмент — Lucidchart.

Архитектура проекта и схема его взаимодействия с реальным миром и остальными частями приложения:

С помощью диаграмм можно объяснить что угодно. Тем более для этого есть классные инструменты

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

Кстати, у igooods есть классный блог на vc.ru о том, как , как живет один из крупнейших сервисов доставки продуктов в России. Подписывайтесь!

За всем этим богатством важно не забыть главное:

диаграммы — такой же инструмент коммуникации, как быстрый разговор по видео, сообщение в слеке или хорошо продуманный текст письма. У инструмента есть свои плюсы и минусы.

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

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

А в чем вы рисуете схемы?

4545
16 комментариев

именно для диаграмм архитектуры и разработки совсем не зашло :(

хотя сервис конечно огонь, пытаются заменить вообще всё

2

С языка сняли, один из наиболее удобных продуктов по теме. Перешел на него с draw.io (diagrams.net) и не жалею.

1

класс! Как будто от руки рисуешь!