← Все записи
· 4 мин чтения

SyDes: C4-схема, которая сама считает нагрузку

Делаю браузерный редактор архитектурных схем: рисуете систему по C4, задаёте входной RPS, и сразу видно, какой узел упрётся первым, какой получится SLA и сколько осталось бюджета ошибок. Сейчас это бета.

#sydes#system design#c4#архитектура
SyDes: C4-схема, которая сама считает нагрузку

C4-схема хорошо показывает, из чего состоит система: пользователи, сервисы, базы, очереди и связи между ними. Но про нагрузку она молчит. Сколько запросов в секунду дойдёт до базы, какой сервис ляжет первым в вечерний пик, какой SLA получится у всей цепочки — всё это обычно прикидывают отдельно, в таблице или в блокноте. Через пару месяцев такой расчёт уже не сходится со схемой.

Поэтому я делаю SyDes — редактор системного дизайна в браузере, где схема не картинка, а модель, которая считается. Рисуете систему по уровням C4, вписываете числа, и SyDes сразу проводит нагрузку по связям и подсвечивает узкие места: sydes.dev.

Шаблон «Магазин»: схема на уровне контейнеров, Order подсвечен красным

Для кого

Для тимлидов, архитекторов и senior-инженеров, которым нужно проверить новый сервис на нагрузку до первой строки кода, найти узкое место в существующей схеме и обсудить его с командой. И для тех, кто готовится к system design интервью: можно разобрать типовые архитектуры на готовых шаблонах и увидеть, где решение упрётся при росте нагрузки и почему.

Как это работает

Схема строится по уровням C4. На уровне контекста — люди и программные системы, двойной клик по системе открывает её контейнеры: веб- и мобильные клиенты, API Gateway, сервисы, базы данных, кеши, очереди, внешние системы. Элементы можно разложить по контурам: внешний и внутренний периметр, ЦОД, регион.

У каждого узла есть ёмкость — на инстанс и число реплик или суммарно, с резервом N+k. У связей — синхронный или асинхронный вызов, доля трафика, кеш, ретраи, таймауты. Дальше вы задаёте входной RPS, и движок проводит его по графу:

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

Пересчёт идёт сразу, пока вы правите схему, и не тормозит даже на сотнях узлов.

Order перегружен на 120 % и теряет 50 RPS, справа — расчёт, внизу — список проблем с подсказками

Нагрузка во времени и «что если»

Нагрузка редко бывает ровной, поэтому у входов можно задать суточный профиль: офисный день, вечерний пик, ночной batch или свою кривую по часам. SyDes считает схему для всех 24 часов и показывает пиковый час. Ползунок внизу переключает время, а поле «Что если ×N» отвечает на вопрос, кто упадёт следующим, если трафик вырастет в полтора раза.

SLA, качество данных и алерты

Поверх нагрузки есть слой надёжности. SyDes считает композитную доступность по жёстким синхронным зависимостям с учётом резервирования, латентность p50 и p99 и бюджет ошибок для каждого входа. Сразу видно, укладывается ли система в свой SLO и какое звено самое слабое.

Ещё два слоя — качество данных (свежесть, полнота, согласованность и другие проверки) и алерты. По схеме собирается каталог алертов с уровнями от P1 до P4, его можно выгрузить в Markdown или CSV. Переключатель «Нагрузка / SLO / Качество данных / Алерты» перекрашивает схему под нужный слой.

Слой «Алерты»: у каждого узла свой уровень критичности

Шаблоны, ссылки и импорт

Начать можно не с пустого листа. Есть шаблоны: эталонный магазин, CRUD за API Gateway, заказы на событиях и два ЦОДа в режиме active-active. Если схема уже нарисована в Mermaid или Structurizr, её можно импортировать.

Схемой можно поделиться ссылкой: она целиком упаковывается в саму ссылку, в часть после #, и на сервер не уходит. Живую схему можно встроить через iframe в документацию или вики. Интерфейс на русском и английском, есть светлая и тёмная темы, а любое действие доступно с клавиатуры.

Бесплатно и в браузере

SyDes работает в браузере, бесплатно и без регистрации. Схемы хранятся у вас: в браузере или в файле, который можно сохранить и открыть снова.

Что дальше

Сейчас это бета 0.9, и до официального запуска я ещё дорабатываю продукт. Но уже можно открыть sydes.dev, выбрать шаблон «Магазин» и за пару минут найти его узкое место.

Буду рад отзывам: что непонятно, чего не хватает, где расчёт расходится с вашим опытом. Пишите на info@sydes.dev.