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

Почему командам трудно объяснить систему
Большинство основателей могут объяснить продукт за минуту. Они знают, что делает клиент, что продаётся и откуда приходят деньги. Трудности начинаются на уровень ниже, когда кто-то спрашивает, какая система за что отвечает, куда идут данные или что ломается первым, если один шаг не сработал.
У операционной команды другой запрос. Ей не нужен обзор каждого сервиса или таблицы. Нужна одна страница, которую можно быстро просмотреть и использовать в реальном разговоре. Если заказ клиента застрял, нужно понять, где он появился, кто его трогал и какая команда должна посмотреть дальше.
Инженеры часто усложняют это больше, чем нужно. Они рисуют каждый сервис, очередь, повторную попытку, внутреннее название и крайний случай, который накопился со временем. Страница может быть точной, но перестаёт быть полезной. Диаграмма для неинженеров должна сначала отвечать на простые вопросы. Ей не нужно доказывать, сколько сложности скрыто внутри.
Именно поэтому встречи часто расползаются. Один человек говорит о сайте. Другой — о платёжном провайдере. Кто-то ещё спрашивает о возвратах или неудачных письмах. Без общей картинки группа перескакивает между деталями, и никто не видит весь поток.
Обычно это выглядит так: основатель описывает путь клиента, операционный сотрудник спрашивает, откуда берутся обновления статуса, инженер открывает схему с 17 блоками, а встреча заканчивается с большим количеством вопросов, чем ответов.
Проблема в основном в переводе, а не в интеллекте. Каждый понимает свою часть. Просто в голове у всех разный масштаб.
Команды решают это не большим, а меньшим количеством деталей. Одна страница заставляет выбрать главное. Покажите части, которые важны для пользователей, операций, данных и точек сбоя. Обычно этого хватает, чтобы снять путаницу и сделать следующий разговор намного короче.
Четыре блока на странице
Полезная диаграмма для неинженеров должна помещаться на одну страницу и оставаться простой. Если для объяснения базовых вещей нужно десять блоков, значит, страница пытается сделать слишком много.
Начните с четырёх блоков, потому что они отвечают на четыре простых вопроса: кто запускает действие, какие системы выполняют работу, какая информация перемещается и что происходит, когда что-то ломается. Основателям и операционной команде обычно важнее именно эти ответы, а не названия серверов или детали кода.
Четыре блока простые:
- Users
- Systems
- Data
- Failure paths
Users — это люди, которые запускают поток. Это может быть клиент, сотрудник поддержки, менеджер по продажам или администратор.
Systems — это приложения и сервисы, которые участвуют в процессе. Оставьте только те, что действительно важны для действия, которое вы объясняете.
Data — это то, что перемещается между системами и где это в итоге оказывается. Используйте повседневные названия вроде заказ, счёт, запрос на возврат или токен входа.
Failure paths показывают точки поломки. Покажите, что может не сработать, что увидит пользователь и кто получит оповещение.
Порядок важен. Большинство людей быстрее понимают систему, когда читают её слева направо или сверху вниз. Пользователь начинает действие, системы отвечают, данные перемещаются или сохраняются, а пути сбоев показывают, где нормальный поток останавливается.
Держите каждый блок коротким. Обычно достаточно трёх–пяти строк. Если блок Systems превращается в плотную карту из каждого поставщика, базы, очереди и внутреннего сервиса, лучше разбить тему и позже сделать вторую страницу.
Небольшой пример помогает понять формат. Клиент нажимает «Pay». Сайт отправляет запрос в платёжный сервис и сервис заказов. Статус оплаты возвращается на сайт, а запись о заказе остаётся в хранилище. Если платёжный сервис зависает по тайм-ауту, клиент видит сообщение о неудачной оплате, а поддержка получает оповещение.
Для первого черновика этого достаточно. Любой человек в комнате может указать на блок и задать полезный вопрос. В этом и есть весь смысл.
Как нарисовать первый черновик
Выберите одно бизнес-событие и держитесь его. Новый пользователь регистрируется, клиент оплачивает заказ или возврат получает одобрение. Одно действие даёт странице понятное начало и понятный конец.
Используйте пустую страницу в альбомной ориентации. Поставьте пользователя слева, потому что именно там начинается действие. Внутренние системы разместите справа, в порядке их реакции.
Такой макет работает, потому что люди читают его как историю. Для нетехнической аудитории это важнее идеальной технической точности.
Начните с действия пользователя вверху, например «Customer pays». Нарисуйте один блок для пользователя или команды, которая запускает процесс. Затем нарисуйте от двух до четырёх блоков для внутренних систем, которые его обрабатывают. Размещайте каждое хранилище данных под системой, которая в него пишет, и соединяйте блоки стрелками только для нормального пути.
Первый путь оставьте простым. Если поток выглядит как customer -> app -> payment service -> order system, сначала нарисуйте только эти стрелки. Не добавляйте на первом проходе каждую API-операцию, повторную попытку или фоновую задачу. Команды часто портят первую страницу, пытаясь показать, сколько они знают.
Размещайте хранилища данных под системами, а не где-то посередине. Так проще понять, кто за что отвечает. Если приложение пишет записи пользователей, разместите базу пользователей под приложением. Если система заказов пишет возвраты, разместите хранилище возвратов под этим блоком.
Когда счастливый путь станет понятен, добавьте одну линию сбоя. Только одну. Выберите первый реальный сбой, который людей волнует больше всего, например «payment declined» или «order save failed». Проведите эту линию от шага, где начинается проблема, и подпишите, что пользователь или оператор увидит дальше.
Хороший первый черновик помещается на одной странице и кажется почти очевидным. Если кто-то из продаж, поддержки или операций может понять его за 30 секунд, вы нарисовали достаточно. Если всё ещё нужен устный обзор, убирайте блоки, пока история не начнёт читаться чисто.
Что писать внутри каждого блока
В каждом блоке должно быть ровно столько деталей, чтобы нетехническому читателю было легко проследить систему. Если человек из продаж, поддержки или операций может просмотреть страницу и пересказать её обратно, значит, деталей достаточно.
Используйте названия, которые люди уже произносят на встречах. Пишите «Web app», «Billing service», «CRM» или «Support team» вместо внутренних кодовых имён. Знакомые подписи экономят время, потому что никому не нужно спрашивать, что означает «checkout-v2».
Полезный блок обычно состоит из трёх маленьких частей: название системы или команды, короткая пометка о том, что она делает, и иногда владелец, если это помогает с передачей задач.
Эта пометка должна быть короткой и простой. «Принимает заказы» работает лучше, чем техническое описание. «Хранит записи клиентов» лучше, чем перечисление таблиц, сервисов и фоновых задач.
Держите подписи короткими. «Web app» легче просканировать взглядом, чем «Фронтенд-приложение для управления заказами, ориентированное на клиента». Если для названия блока нужна целая фраза, подпись слишком длинная.
Убирайте детали, которые нужны только инженерам для отладки. Имена серверов, порты, облачные продукты, названия репозиториев и мелочи от поставщиков делают страницу шумной. Для широкой аудитории такие детали отвлекают от главного вопроса: что это такое и зачем оно здесь?
Небольшой пример помогает. Один блок может называться «Web app» с пометкой «Клиенты оформляют заказы и проверяют статус». Другой — «Billing service» с пометкой «Списывает карты и отправляет запросы на возврат». Для одностраничной схемы этого достаточно.
Подписи с владельцами помогают, когда работа идёт через несколько команд. Если передача часто застревает, добавьте короткую пометку вроде «Owner: Support» или «Owner: Finance ops». Делайте это только там, где это действительно проясняет ответственность. Если у каждого блока есть владелец, но ни одна из этих подписей не меняет решение, лучше их не писать.
Каждый блок должен отвечать на один простой вопрос: что эта часть делает для бизнеса? Если написать ответ простыми словами, остальную схему будет намного легче читать.
Как показать данные без лекции о базах данных
Большинство схем становятся размытыми, когда блок просто подписывают словом «database» и на этом останавливаются. Людям вне инженерной команды не нужны названия таблиц. Им нужно понимать, что хранит бизнес, что перемещается и что может пойти не так.
Простые названия работают лучше технических. Пишите «customer email», «subscription status» или «refund amount» вместо «users table» или «S3 bucket». Такие подписи сразу показывают основателю или оператору, что именно поставлено на кон.
Есть простое правило: показывайте данные в трёх моментах. Отметьте, где они входят в систему, где меняются и где выходят. Если клиент заполняет форму — это вход. Если сотрудник поддержки редактирует заказ — это изменение. Если система отправляет чек, файл выплат или отчёт в другой инструмент — это выход.
Хранимые данные и перемещающиеся данные — не одно и то же. Запись клиента лежит где-то, пока она кому-то не понадобится. Сообщение или событие — это сигнал в движении, например «payment failed» или «refund requested». Помещайте хранимые данные внутрь системы, которая их хранит, а сообщения — на стрелки между блоками. Это маленькое решение сильно снижает путаницу.
Не нужны сложные подписи. «Хранит профиль клиента и статус оплаты», «отправляет событие об успешной оплате», «экспортирует ежедневный CSV в finance» или «удаляет неактивных лидов через 90 дней» уже рассказывает историю.
Ручные шаги важнее, чем ожидают команды. Если кто-то скачивает CSV, копирует данные в таблицу или вставляет ID в другой инструмент, обязательно напишите это на схеме. Именно такие передачи часто становятся причиной задержек, дублей и тихих ошибок.
Отмечайте чувствительные данные везде, где они появляются, а не только там, где хранятся долго. Платёжная форма, почта поддержки и CSV, отправленный в finance, могут содержать личные данные. Достаточно небольшой пометки вроде «personal data» или «card data handled by payment provider».
Когда страница остаётся читаемой, люди задают более хорошие вопросы. Они перестают спрашивать: «Где база данных?» — и начинают спрашивать: «Почему finance всё ещё нужен ручной экспорт каждую пятницу?» Это куда более полезный разговор.
Как показать пути сбоев
Чистая диаграмма может скрыть самую важную часть: где всё ломается. Если не показывать пути сбоев, основатели и операционная команда будут думать, что счастливый путь — это вся система. Но это никогда не так.
Начните с трёх главных сбоев. Больше — и одностраничная диаграмма превращается в стену стрелок. Выберите те сбои, которые влияют на деньги, доверие или нагрузку на поддержку.
Рисуйте каждый сбой рядом с нормальным потоком, а не в отдельном углу. Люди быстрее понимают систему, когда могут сравнить, что должно произойти, и что происходит при ошибке, в одном и том же месте.
Большинство путей сбоев укладываются в три простые категории: запрос не доходит до следующей системы, следующая система отвечает ошибкой, или система сообщает «готово», но данные позже не совпадают.
Для каждого сбоя укажите, кто замечает его первым. Это очень важно. Если первым это видит клиент, поддержка узнаёт об этом поздно. Если мониторинг ловит проблему первым, у команды есть шанс исправить её до жалоб.
Затем добавьте одну короткую пометку о следующем действии. Используйте простые слова: повторить попытку, отправить оповещение, поставить в очередь на проверку или исправить вручную. На странице не нужен полный план восстановления. Нужно только достаточно информации, чтобы неинженер мог ответить на простой вопрос: система восстановится сама или человеку нужно вмешаться?
Показывайте видимые для клиента сбои повседневным языком. Избегайте терминов вроде «timeout» или «exception», если только их не используют все в комнате. Пишите вместо этого, что человек ощущает: «оплата крутится и не подтверждается», «пользователь видит двойное списание» или «письмо с подтверждением не приходит».
Если сбой может стоить денег или создавать лишнюю работу, отмечайте это явно. Операционной команде важна уборка последствий. Основателям важен риск. Одна понятная подпись даёт обеим группам один и тот же взгляд за несколько секунд.
Если человек может посмотреть на страницу, указать на сбой, первого наблюдателя и следующее действие, диаграмма выполняет свою задачу.
Простой пример: онлайн-заказ и возврат
Возьмите бизнес-поток, который почти все понимают. Онлайн-заказ подойдёт даже тем, кому неинтересно, как работает код.
Его можно нарисовать четырьмя блоками: клиент и приложение, платёжный сервис, основная база данных и внутренний инструмент, которым пользуется операционная команда.
Путь заказа простой. Клиент оформляет заказ в приложении. Приложение отправляет запрос на оплату в платёжный сервис. Если оплата проходит, приложение сохраняет заказ в основной базе данных. Внутренний инструмент читает эти данные, чтобы операционная команда видела новый заказ, проверяла детали и отвечала на вопросы клиентов.
Этого уже достаточно, чтобы основатели и операционная команда получили полезный одностраничный обзор. Они видят, кто запускает действие, какой внешний сервис обрабатывает деньги, где хранится запись заказа и какая внутренняя команда её видит.
Путь возврата делает диаграмму честнее. Сотрудник операционной команды открывает внутренний инструмент и запускает возврат. Этот запрос идёт в платёжный сервис, а не напрямую в базу данных. Если возврат проходит, система обновляет статус заказа в базе данных, и внутренний инструмент показывает новый статус.
Если возврат не проходит, не скрывайте это. Нарисуйте ещё одну стрелку другим цветом или отметьте её как «failure». Направьте этот путь в поддержку и finance с короткой пометкой. Поддержка видит проблему клиента. Finance проверяет, ушли ли деньги со счёта. Операционная команда может повторить попытку или обработать возврат вручную.
Именно поэтому такая диаграмма должна показывать не только счастливые пути, но и сбои. Основатель может посмотреть на страницу и сразу задать более полезные вопросы: кто первым замечает неудачный возврат, кто говорит с клиентом и какая система показывает настоящий статус? Такие вопросы часто важнее, чем код.
Ошибки, которые путают неинженеров
Большинство плохих диаграмм проваливаются по простой причине: они копируют оргструктуру инженерной команды, а не то, как работают основатели, поддержка или операционная команда.
Первая ошибка — слишком много деталей слишком рано. Если на первой странице показаны все сервисы, очереди, воркеры и внутренние API, большинство читателей закрывают её через десять секунд. Лучше группировать движущиеся части по задачам. «Website», «payments» и «order system» работают лучше, чем двенадцать мелких блоков со стрелками повсюду.
Названия тоже быстро создают проблемы. Инженеры могут знать, что означает «orion», «billing-v2» или «refund-sync». Всем остальным приходится угадывать. Одностраничная схема должна использовать простые подписи, которые совпадают с бизнес-языком. Если руководитель поддержки говорит «инструмент возвратов», так и пишите — «инструмент возвратов».
Ещё одна частая проблема — смешивать текущую систему с той, которую хотят через квартал. Это создаёт ложную ясность. Основатель смотрит на страницу и думает, что будущий дизайн уже существует. Держите текущее состояние на одной странице. Идеи, миграции и запланированные изменения выносите в отдельный черновик.
Ручная работа часто исчезает из технических схем, даже если люди выполняют её каждый день. Это проблема, потому что скрытые человеческие шаги — именно там накапливаются задержки и ошибки. Если кто-то проверяет fraud alerts, экспортирует CSV, утверждает возврат или вручную повторно отправляет неудачный заказ, покажите это на странице.
Простой пример делает это очевидным. Клиент просит возврат, платёжная система его отклоняет, и подключается поддержка. Если на схеме показаны только системные блоки, она упускает реальный рабочий процесс. Кому-то из поддержки или finance может понадобиться проверить кейс, повторить действие или связаться с клиентом.
Пути сбоев тоже нуждаются во владельце. «Payment failed» — недостаточно. Кто видит это первым? Кто решает, что делать дальше? Когда шаг ломается, добавьте рядом с путём короткую пометку вроде «support checks», «finance approves» или «engineering fixes webhook».
Быстрая проверка ловит большую часть путаницы. Может ли новый сотрудник понять название каждого блока? Показывает ли страница то, что происходит сейчас, а не потом? Видны ли ручные шаги? Есть ли у каждого пути сбоя человек или команда? Если хотя бы на один вопрос ответ «нет», страница всё ещё слишком близка к инженерному жаргону.
Короткая проверка перед тем, как делиться
Если кому-то нужно быть в комнате, чтобы объяснить страницу, значит, она ещё не готова. Хорошая диаграмма для неинженеров должна позволять новому сотруднику прочитать её один раз и пересказать поток примерно за минуту.
Начните с направления. Стрелки должны двигаться в одном очевидном направлении по странице. Слева направо обычно проще всего. Когда одна линия идёт вправо, другая вверх, а третья возвращается назад, люди перестают следить за историей и начинают расшифровывать рисунок.
Слова важны не меньше, чем стрелки. Используйте названия, которые ваша команда уже говорит на встречах, в тикетах и чатах поддержки. Если все говорят «payments», не переименовывайте это в «transaction layer». Красивые подписи только замедляют людей.
Быстрая проверка ловит большинство проблем. Попросите нового коллегу пересказать поток без вашей помощи. Проведите пальцем по каждой стрелке и проверьте, что направление остаётся последовательным. Убедитесь, что названия блоков совпадают со словами, которые используют продукт, поддержка и инженеры. Покажите, где лежат данные, например записи клиентов или история заказов, и где они переходят в другую систему. Затем добавьте один или два пути сбоев из реальной жизни, а не десять редких крайних случаев.
Блок данных тоже должен оставаться простым. Читателю не нужна лекция о базах данных. Ему нужно только увидеть, где информация хранится и куда она движется. «Customer details stay in CRM» и «order total goes to billing» уже рассказывают историю.
Пути сбоев требуют такого же подхода. Выберите случаи, которые команда видит чаще всего. Например, оплата проходит, но проверка склада не срабатывает. Или сообщение в систему доставки так и не приходит. Покажите, что ломается, кто это замечает и что происходит дальше. Один честный путь сбоя учит больше, чем пять расплывчатых значков предупреждения.
Эта проверка короткая, но потом экономит время. Люди редко спорят о самом рисунке. Они спорят потому, что схема скрывает шаг, использует не то слово или не показывает, что происходит при сбое.
Когда два человека из разных команд могут рассказать по странице одну и ту же минутную историю, её уже можно показывать.
Что делать после первой страницы
Одностраничная диаграмма должна помогать принимать реальные решения, а не просто лежать в презентации. Используйте её на планёрках, разборе багов, подготовке к запуску и в разговорах о найме. Если никто не может указать на блок и сказать «за это отвечает эта команда» или «здесь ломается этот шаг», страницу ещё нужно доработать.
Используйте черновик, чтобы рано договориться о нескольких вещах. Решите, что входит в текущий релиз, а что остаётся за его пределами. Решите, кто владеет каждым блоком, кто утверждает рискованные изменения и кто реагирует, когда что-то ломается.
Передачи между командами требуют такого же внимания. Большая часть путаницы возникает не из-за кода, а из-за разрыва между командами: когда поддержка обещает возврат, operations меняет заказ, а инженерная команда вообще не видит крайний случай.
Помогает короткий чек-лист. Назначьте одного владельца для каждого блока. Подпишите, что перемещается между блоками. Отметьте сбой, который важнее всего на каждой передаче. Добавляйте внешний сервис или внутренний инструмент только если людям действительно нужен этот уровень деталей, чтобы действовать.
Не убирайте диаграмму в папку после первой встречи. Обновляйте её, когда продукт меняется по форме: появляется новый шаг оплаты, новый AI-процесс, новый поставщик или ручное утверждение становится автоматическим. Небольшие правки каждый месяц лучше, чем большой переписывание раз в год.
Устаревшая страница реально вредит. Люди ей доверяют, перестают задавать вопросы и быстро принимают неправильное решение. Это хуже, чем сказать: «Нам нужно десять минут, чтобы перерисовать это».
Приносите страницу на встречи, где вместе участвуют основатели, операционная команда и инженеры. Основатели используют её, чтобы проверить объём работ и риски. Операционная команда — чтобы заметить узкие места и неудобные передачи. Инженеры — чтобы найти скрытые зависимости до релиза.
Если вам нужен внешний взгляд, Олег Сотников на oleg.is делает такую работу как Fractional CTO и startup advisor. Свежий разбор от человека, который видел и стартапные системы, и более крупные production-среды, помогает заметить неясную ответственность, пропущенные пути сбоев и лишнюю сложность до того, как эти проблемы станут дорогими.
Страница готова, когда за минуту отвечает на простые вопросы: кто за это отвечает, какие данные сюда приходят, что ломается первым и кто об этом узнает. Если в комнате могут ответить на это без споров, диаграмма выполняет свою задачу.
Часто задаваемые вопросы
Зачем использовать только четыре блока?
Четыре блока заставляют держать историю простой. Большинству людей нужно увидеть, кто запускает действие, какие системы выполняют работу, какие данные перемещаются и что происходит, когда что-то ломается. Обычно этого хватает, чтобы ответить на первые реальные вопросы на встрече.
Какими должны быть эти четыре блока?
Используйте Users, Systems, Data и Failure paths. Читайте их слева направо или сверху вниз, чтобы страница ощущалась как короткая история, а не как техническая карта.
Сколько деталей нужно на первой диаграмме?
Оставьте только то, что нужно, чтобы понять бизнес-поток. Покажите действие пользователя, два–четыре системных блока, основные точки соприкосновения с данными и один–два частых сбоя. На первой странице уберите повторы, порты, названия репозиториев и другие инженерные детали.
Как подписывать каждый блок?
Пишите те названия, которые люди уже используют на встречах, например «Web app», «Billing service» или «Support team». Добавьте одну короткую пометку о том, что делает каждый блок, например «принимает заказы» или «хранит записи клиентов».
Нужно ли показывать базы данных и хранилища?
Да, если они влияют на поток, который важен для людей. Размещайте хранилища данных под той системой, которая в них записывает, и называйте бизнес-данные, а не технологию. «Order record» или «refund amount» передают смысл гораздо яснее, чем общая подпись базы данных.
Сколько путей сбоев стоит включать?
Начните с трёх самых важных сбоев, которые влияют на деньги, доверие или нагрузку на поддержку. Поместите каждый рядом с нормальным потоком, укажите, кто замечает проблему первым, и добавьте следующий шаг, например повторить попытку, отправить оповещение или отправить на ручную проверку.
Нужно ли включать ручные шаги?
Да, обязательно. Если кто-то выгружает CSV, утверждает возврат или копирует данные в другой инструмент, покажите это на странице. Такие шаги часто вызывают задержки и ошибки, поэтому без них диаграмма становится менее полезной.
Что делать, если система слишком сложная для одной страницы?
Разбейте по бизнес-событиям. Сделайте одну страницу для регистрации, другую для оплаты и ещё одну для возвратов, если это нужно. Маленькая страница помогает понять поток быстрее, чем одна перегруженная схема с кучей мелких блоков.
Как понять, что диаграмма достаточно понятна?
Дайте схему человеку, который не участвовал в подготовке, и попросите его пересказать её примерно за минуту. Если он может проследить стрелки, назвать системы, показать данные и сказать, что ломается первым, страница готова.
Когда нужно обновлять диаграмму?
Обновляйте её каждый раз, когда поток меняется так, что это влияет на ответственность, движение данных или обработку сбоев. Небольшие правки раз в месяц лучше, чем большая переделка позже, потому что устаревшие схемы заставляют команды доверять неверной картине.