С помощью диаграмм можно объяснить что угодно. Тем более для этого есть классные инструменты
Язык коммуникации, о котором все забывают.
Я обожаю диаграммы. Рисовать их на доске или на бумажке и одновременно обсуждать с программистами. Это мой способ разобраться самому и объяснить что-то сложное другим.
Как бы я не любил маркерную доску — я часто рисую диаграммы на компьютере. Во первых, так их можно сделать очень «профессионально выглядящими» — это помогает в переговорах. Во вторых, сложно собраться у физической маркерной доски удаленно по зуму (хотя мы и это делали). В третьих, цифровые диаграммы проще редактировать, поддерживая документацию в актуальном состоянии.
Есть несколько классических типов диаграмм. Здесь речь пойдет об инструментах на примере «общей схемы архитектуры». На одном листе мы отразим основные группы пользователей, важные элементы системы и инфраструктуры — мобильные приложения, API, бэкенд, база данных, лоад-балансеры и прочие. На такой схеме удобно объяснять бизнесу, куда именно утекают денжищи, которые мы тратим на разработку.
Необходимые ресурсы
Можно нарисовать всю схему из квадратиков, треугольников и кругов, но для простоты восприятия я рекомендую использовать библиотекой иконок Amazon Web Services. Этот или аналогичный набор иконок есть во всех популярных инструментах.
Иконки сервисов вроде Яндекс.Метрики, Google BigQuery и прочих удобно скачать в SVG на VectorLogoZone — они добавят ярких элементов и упростят визуальную навигацию в большой схеме:
Самые популярные редакторы
Один из самых популярных сервисов для построения диаграмм — Lucidchart. В нем есть всё, что ожидаешь от подобного инструмента в 2020-м: встроенные библиотеки компонент, возможность редактировать документы вместе и оставлять друг другу комментарии прямо внутри, возможность легко встроить готовые диаграммы внутрь Notion и других баз знаний. В бесплатной версии есть ограничение на 3 документа, личная лицензия 7 евро в месяц, командная — 8 евро на человека.
Draw.io — бесплатный сервис, в нем нельзя редактировать один и тот же документ двум людям одновременно, зато можно хранить файлы в любом хранилище и нет никаких ограничений. Создатели зарабатывают на перепродаже программного движка сервиса корпорациям.
Мне не нравится пользоваться обоими этими сервисами (что-то про «чувство инструмента в руках») и не нравится качество картинок, которые получаются на выходе, но я не вижу смысла углубляться в эту тему. Проще остановиться на том, что это — вопрос вкуса.
Оба инструмента очень популярны и делают то, что обещают.
Если нужна очень красивая картинка
Нарисуйте вашу схему в фигме — онлайн редакторе, в котором дизайнеры рисуют интерфейсы. Полная свобода творчества. Вы сможете настроить шрифты, отступы и все цвета так, что результат будет произведением искусства. Как бонус — возможность совместного редактирования и хороший онлайн-шеринг.
Основной минус — схемы рисовать долго, поддерживать и редактировать — не особо удобно.
В этом редакторе я рисую схемы для слайдов конференций и прочих важных штук, когда в «одноразовую» красивую картинку имеет смысл вложить много времени и сил. Ещё этот редактор удобен тем, что можно сделать грубую версию и отдать её хорошему дизайнеру — в своем редакторе они работают существенно быстрее, чем любой программист, и результат получается ещё круче.
Суперприятный редактор
Я открыл для себя Whimsical, пока готовил эту статью, но уже успел влюбиться. Удобные шорткаты, невиданная в подобных редакторах отзывчивость интерфейса, множество продуманных мелочей, благодаря которым схемы получаются аккуратными и красивыми.
Неудобно то, что нет поддержки библиотек иконок (например от AWS) и не понятно, какие у сервиса перспективы. В большую команду я его не потащу, но для своих личных целей и небольших проектов теперь буду пользоваться исключительно им.
А ещё у них очень необычный технологический стек.
Варианты для «программистов»
Если вы робот или схема слишком велика для того, чтобы нарисовать и поддерживать её руками — не беда. Используйте инструменты моделирования, а не рисования: Graphviz, yworks, Structurizr, Archi, Sparx Enterprise Architect. Описываете схему формально, в коде, финальную картинку компьютер сгенерирует автоматически.
Базовый язык для описания моделей и схем — UML, Unified Modelling Language, но почти все инструменты используют свои собственные DSL и/или поддерживают обычные языки программирования.
Автоматизация создания схем
Есть попытки построить диаграммы автоматически, на основе анализа кода или даже инфраструктуры. Яркий пример — Cloudcraft. Если у вас вся инфраструктура в AWS — он не только сам нарисует схему, но ещё подсчитает расходы и даже покажет актуальный статус компонент:
Интерактивные диаграммы для веба
GoJS — классная библиотека, если диаграмма должна быть интерактивной и её хочется встроить в веб. У них очень приятные примеры диаграмм на сайте, рекомендую поиграть:
Вторая очень популярная js-библиотека для рендеринга диаграмм в вебе — mermaid.
Немного теории перед развлекательным блоком
Пост про диаграммы будет не полным без упоминания c4 model — попытки формализовать искусство построения диаграмм. Предоставлю слово автору в пяти диаграммах (кликните на картинки для того, чтобы они открылись на полный экран):
ASCII-диаграммы (ШТОА?)
Теоретически, ASCII-диаграммы удобны тем, что их можно вставить прямо в файл исходного кода или в RFC-документ, в который картинку не добавишь. На самом деле, это, конечно, просто такой вид искусства.
Хороший веб-инструмент Textik:
и очень красивый маковский Monodraw:
Наконец, самое важное — пример использования диаграмм в реальном проекте
Мы сейчас переделываем систему выплат линейному персоналу — курьерам и пикерам в igooods. Проект взаимодействует с другими финансовыми организациями, затрагивает систему биллинга и множество внутренних интерфейсов, которыми пользуются эти сотрудники.
Все схемы ниже разработаны и нарисованы Антоном Давыдовом. Антон помогает нам в igooods с архитектурой и хардкорной ruby-разработкой. Инструмент — Lucidchart.
Архитектура проекта и схема его взаимодействия с реальным миром и остальными частями приложения:
Ну и совершенный космический интерактивный план разработки. Зеленым Антон красит части системы, которые уже реализованы. Переключаясь между вкладками можно увидеть, как идет разработка, в каком состоянии находится каждый компонент. Обратите внимание, что эта интерактивная диаграмма встроена внутрь Notion-документации! Нажмите на картинку, если видео у вас не запустится автоматически.
Кстати, у igooods есть классный блог на vc.ru о том, как , как живет один из крупнейших сервисов доставки продуктов в России. Подписывайтесь!
За всем этим богатством важно не забыть главное:
диаграммы — такой же инструмент коммуникации, как быстрый разговор по видео, сообщение в слеке или хорошо продуманный текст письма. У инструмента есть свои плюсы и минусы.
Как в здоровых личных отношениях мы иногда шепчем на ушко, а иногда кричим — так и в бизнес-коммуникации порой к месту нарисовать схему.
Надеюсь, эта статья была вам полезна и теперь вы лучше знаете, какой выбор современных инструментов для этого существует.
А в чем вы рисуете схемы?
А как же flowmapp?
miro.com не благодарите
именно для диаграмм архитектуры и разработки совсем не зашло :(
хотя сервис конечно огонь, пытаются заменить вообще всё
С языка сняли, один из наиболее удобных продуктов по теме. Перешел на него с draw.io (diagrams.net) и не жалею.
Мне нравится http://excalidraw.com/
класс! Как будто от руки рисуешь!
если история про диаграммы сайтов — https://octopus.do