К содержанию
System Design Capacity Simulator

Калькулятор системного дизайна — systemdesigncalculator.online

Вместо созвона по ёмкости — пресет за десять секунд

Из DAU и двух фиксированных топологий получаете пиковый RPS, здоровье системы, месячную оценку и ссылку или PDF, которые можно сохранить. Основатель, кандидат на system design и консультант не собирают одну и ту же таблицу заново: пресеты SaaS 50k, marketplace 1M и content 10M (эталон ≈11 574 RPS и ≈$2 705/мес) дают защищаемую базу с первого запуска.

От этого калькулятора к агенту на вашем стенде

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

  1. Сейчас

    Публичный калькулятор

    Две топологии: classic и очередь с workers. DAU становятся пиковым RPS, инцидентами и месячной оценкой по одному из четырёх прайс-паков. Формулы остаются на экране.

  2. Сейчас

    Решение на той же схеме

    Применить патч рекомендации, сравнить до и после, скопировать ссылку и скачать отчёт. Схема не обрастает новыми типами узлов.

  3. Ваш сервер

    Тот же движок на вашем стенде

    Запустите этот симулятор на сервере, который контролируете вы. Публичный origin и адрес доната остаются в окружении этого сервера.

  4. На вашем стенде

    Агент, который заполняет только SystemState

    Агент вызывает существующий запрос simulation, пишет только поля SystemState и применяет patchJson рекомендации. Он настраивает нагрузку, железо и две поддерживаемые топологии.

Агент не добавляет Kafka, объектное хранилище, WAF, autoscale и свободный редактор графа. Новая топология — отдельный продукт позже, а не то, что агент выдумывает.

Определение продукта

System Design Capacity Simulator оценивает classic Users → Nginx → CDN → App → Redis → Postgres или queue-workers от DAU до пикового RPS, инцидентов от утилизации, месячной оценки и ссылок /app#s= или PDF — в рамках двух фиксированных топологий, без drag-and-drop редактора microservices.

Для кого

Кандидат на system design

Защитите набросок на 1–10 M DAU с именованными инцидентами (APP_THROTTLING, DB_IOPS_EXCEEDED, REDIS_NEAR_OOM и др.), жёлтым коридором 70–85% и конвертом роста «держит до N DAU» — без пустых прямоугольников на доске.

Основатель первого продакшена

Увидьте первый месячный spend по vCPU, RAM, SSD и исходящему Gbps — не прайс-лист облака — и поймите, где ломается цепочка Users → Nginx → CDN → App → Redis → Postgres.

Консультант с one-pager

Передайте клиенту PDF или ссылку `/app#s=`, которую можно открыть без вашей таблицы. Pin A и патчи рекомендаций остаются на тех же прозрачных формулах в отчёте.

Какие задачи закрывает и сколько времени экономит

Пустые блоки архитектуры

Рисуют Users, CDN и БД, а пиковый RPS, рабочий объём кэша и месячная стоимость появляются только через час созвона или таблицы.

Семь пресетов (SaaS 50k, marketplace 1M, content 10M, write-heavy, async-queue, media-object, edge-secure) загружают готовый classic или queue-workers с DAU, CDN, пулом приложений и tier Redis.

Экономия порядка 45–60 минут против таблицы с нуля.

Споры «+4 или +8 инстансов» без нагрузки

Спорят о количестве машин по привычке, не сравнивая CPU, IOPS и память Redis с реальным пиковым RPS.

Рекомендации выдают патчи SystemState от текущей утилизации — APP_THROTTLING и APP_PRESSURE считаются от живого CPU, а не фиксированного +8.

Экономия 20–40 минут на каждый обзор sizing.

Жёлтые узлы путают с аварией

70–85% utilization трактуют как CRITICAL и зовут on-call на давление, которое ещё не инцидент.

Коридор 70–85% — явное давление: collectIncidents не меняется, но карточки рекомендаций могут закрыть APP_PRESSURE и DB_IOPS_PRESSURE до перехода в CRITICAL.

Экономия 15–30 минут на согласовании severity.

Переплата за простаивающие реплики и кэш

В финансах видят большой чек, а REPLICA_IDLE и избыточный Redis в narrative не попадают.

Инциденты показывают REPLICA_IDLE и REDIS_NEAR_OOM; COST-рекомендации сначала предлагают CDN и right-size, а не слепой scale-out.

Экономия 30–45 минут на согласовании cost и utilization.

Два плана без нормального diff

Две вкладки Excel или два созвона, чтобы понять, спасает ли workers или реплики от SLO_MISS.

Pin A на compare strip замораживает базу, пока вы накладываете патчи; health, RPS и месячная оценка обновляются на живом плане.

Экономия 25–40 минут на A/B-обсуждении архитектуры.

«До скольки тянет?» без мифа про autoscale

Ждут автоматического масштабирования, но никто не называет потолок DAU при фиксированном железе.

Growth envelope держит инстансы, ядра, tier Redis и реплики постоянными и показывает, сколько DAU выдерживает схема — честная ёмкость, не elastic magic.

Экономия 20–35 минут на roadmap-вопросах по ёмкости.

Слишком много железа в interview-скетче

Кандидат уходит в vCPU, когда интервьюеру нужны трафик и bottlenecks.

Interview mode скрывает детали hardware, оставляя инциденты, топологию и health для чистой истории на доске.

Экономия 10–20 минут на пересборке scope в mock.

Скачок памяти Redis при росте DAU

Забывают, что working set растёт с пользователями; OOM всплывает поздно на нагрузке.

Объём считается как DAU × 2 объекта × размер объекта; REDIS_NEAR_OOM срабатывает до illusion «кэш бесплатный».

Экономия 15–25 минут на разборе «откуда память».

Classic против queue-workers

Kafka-shaped трафик рисуют на classic; глубина очереди и WORKER_SATURATED в модель не попадают.

Пресет async-queue включает queue-workers с publish RPS, depth, utilization, QUEUE_BACKLOG и WORKER_SATURATED — только где эта топология уместна.

Экономия 30–50 минут на согласовании async ingest.

План застрял на одном ноутбуке

PDF устаревает после смены DAU; ссылки ломаются, если вставить не на тот path.

Share кодирует состояние в `/app#s=`; старый `/#s=` редиректит на `/app` с тем же hash. PDF строится из живого отчёта после завершённого прогона.

Экономия 15–30 минут на каждую передачу клиенту или учебную группу.

Обещания, которых модель не считает

На слайдах multi-region, WAF SKU и reserved discounts, которых в формулах нет.

Пределы модели на лендинге и в отчёте: без Kafka/S3/search/WAF SKU, без autoscale, Users и Nginx всегда зелёные, четыре пакета unit-rate — не list price AWS.

Экономия 20–40 минут на защите credibility перед техпокупателем.

Как устроены расчёты

Отчёт симулятора идёт в том же порядке: трафик, пиковый RPS, утилизация и размеры пулов, инциденты и жёлтый коридор, затем месячная оценка. В готовом run — полные формулы и LaTeX; этот блок их не заменяет.

Средний RPS

average RPS = DAU × requestsPerUser / 86400

10 000 000 × 20 / 86400 ≈2315

Пиковый RPS

peak RPS = average RPS × peakMultiplier

≈2315 × 5 ≈11574

Рабочий набор объектов Redis

Redis object working set = DAU × 2 × objectSizeKb

10 000 000 × 2 × 1 = 20 000 000 Kb

Разобранный пример: golden content 10M

Числа из пресета content 10M с дефолтными knob’ами — тот же golden vector из доменных тестов, не вымышленный «стартап X».

Пресетcontent-10m (golden default)
Пиковый RPS≈11 574
Месячная оценка≈$2 705
Топологияclassic

Откройте симулятор, загрузите content 10M и запустите с дефолтами — пиковый RPS и месячная оценка совпадут с живым отчётом.

Каталог пресетов: дефолты и расчёт нагрузки

Каждая строка — те же дефолты пресета, что в симуляторе, затем computeSystemCapacity для этого состояния. Цифры иллюстрируют формулы ёмкости: это не рейтинг, не прайс облака и не list price.

SaaS 50k

DAU
50 000
Пиковый RPS
≈69
Месячная оценка
≈$207

Инциденты: На этом дефолте нет

На этом дефолте нет критичных кодов инцидентов.

Открыть в симуляторе

Marketplace 1M

DAU
1 000 000
Пиковый RPS
≈2083
Месячная оценка
≈$9349

Инциденты: На этом дефолте нет

На этом дефолте нет критичных кодов инцидентов.

Открыть в симуляторе

Content 10M

DAU
10 000 000
Пиковый RPS
≈11574
Месячная оценка
≈$2705

Инциденты: REPLICA_IDLE

Ломается на APP_THROTTLING; эта конфигурация выдерживает до 19 584 001 DAU.

Открыть в симуляторе

Write-heavy

DAU
2 000 000
Пиковый RPS
≈2894
Месячная оценка
≈$68546

Инциденты: REPLICA_IDLE

Ломается на DB_IOPS_EXCEEDED; эта конфигурация выдерживает до 5 004 163 DAU.

Открыть в симуляторе

Queue / Kafka

DAU
1 500 000
Пиковый RPS
≈5208
Месячная оценка
≈$60320

Инциденты: На этом дефолте нет

На этом дефолте нет критичных кодов инцидентов.

Открыть в симуляторе

Objects + search

DAU
8 000 000
Пиковый RPS
≈4444
Месячная оценка
≈$3875

Инциденты: REDIS_NEAR_OOM

Ломается на APP_THROTTLING; эта конфигурация выдерживает до 12 240 001 DAU.

Открыть в симуляторе

WAF / regions

DAU
2 000 000
Пиковый RPS
≈2894
Месячная оценка
≈$12773

Инциденты: На этом дефолте нет

На этом дефолте нет критичных кодов инцидентов.

Открыть в симуляторе

Два пресета, одна модель ёмкости

Content 10M

DAU
10 000 000
Пиковый RPS
≈11574
Месячная оценка
≈$2705

Инциденты: REPLICA_IDLE

Ломается на APP_THROTTLING; эта конфигурация выдерживает до 19 584 001 DAU.

Открыть в симуляторе

Write-heavy

DAU
2 000 000
Пиковый RPS
≈2894
Месячная оценка
≈$68546

Инциденты: REPLICA_IDLE

Ломается на DB_IOPS_EXCEEDED; эта конфигурация выдерживает до 5 004 163 DAU.

Открыть в симуляторе

Главные драйверы месячной оценки на content 10M (+10% на knob)

  • Доля статики-$875
  • Пиковый множитель+$194
  • Инстансы приложения+$152

Порядки величин задержек для интервью

  • Память~100 нс
  • SSD~150 мкс
  • Дата-центр~0,5 мс
  • Континент~150 мс

Эти бюджеты round-trip — ориентиры для интервью, не вывод симулятора. Калькулятор ёмкости их не считает и не моделирует.

Сессия от входа до артефакта

  1. Пресет

    Откройте симулятор с этой страницы, выберите пресет (или golden content 10M) и убедитесь, что classic или queue-workers соответствует вашей истории.

  2. Диагностика

    Смотрите пиковый RPS, месячную оценку, граф и инциденты: APP_THROTTLING, DB_IOPS_EXCEEDED, SLO_MISS, REDIS_NEAR_OOM, REPLICA_IDLE, WORKER_SATURATED, QUEUE_BACKLOG где применимо.

  3. Применение

    Откройте Recommendations на compare strip и применяйте патчи SystemState от текущей нагрузки — сначала инциденты, затем давление в коридоре, затем cost и headroom.

  4. Сравнение

    Pin A фиксирует базовый план, пока вы меняете Now; сравнивайте health, cost и envelope без второй таблицы.

  5. Share / PDF

    После завершённого job (share, PDF или путь CRITICAL → OPTIMAL) скопируйте `/app#s=` или скачайте PDF — donate опционален после ценности, не paywall.

Что считает — и от чего честно отказывается

Входит в модель

  • Две топологии: classic Users → Nginx → CDN → App → Redis → Postgres и queue-workers с очередью и workers
  • Пиковый RPS от DAU, запросов на пользователя и peak multiplier
  • Инциденты: APP_THROTTLING, DB_IOPS_EXCEEDED, SLO_MISS, REDIS_NEAR_OOM, REPLICA_IDLE, WORKER_SATURATED, QUEUE_BACKLOG
  • Месячная оценка по vCPU, RAM (app + Redis), SSD TB и origin Gbps — пакеты generic, AWS, Hetzner или Yandex
  • Рекомендации как патчи Partial<SystemState> от текущей утилизации
  • Compare strip с Pin A и growth envelope при фиксированном железе
  • Interview mode и share через `/app#s=` плюс экспорт PDF

Явно не моделируется

  • Kafka, SQS, object storage, search, origin-shield, auth, WAF, multi-region failover как product SKU
  • Reserved / committed discounts
  • Autoscale и elastic pickers — envelope масштабирует DAU при фиксированном hardware
  • Отказы Users и Nginx (в графе всегда healthy)
  • Настраиваемые объекты Redis на пользователя — в модели ровно 2 на DAU

Ответы на типичные запросы

Что такое калькулятор ёмкости для system design?

Это симулятор с двумя топологиями — classic web stack или queue-workers — который из DAU и mix запросов даёт пиковый RPS, health и cost. System Design Capacity Simulator не конструктор произвольной архитектуры; вы крутите пресеты внутри семейства.

Как из DAU получают пиковый RPS?

Средний RPS = DAU × запросов на пользователя в день / 86 400. Пиковый RPS = средний RPS × peak multiplier — те же формулы, что в отчёте ёмкости.

Можно оценить ёмкость без autoscaling?

Да. Growth envelope держит инстансы, ядра, tier Redis и реплики фиксированными при росте DAU — потолок при текущей схеме, не elastic autoscale.

Как память Redis связана с DAU?

Working set: DAU × 2 объекта × размер объекта в KB. Два объекта на пользователя зафиксированы — при росте DAU память Redis растёт даже при похожем mix.

Из чего складывается месячная оценка?

Четыре компонента — vCPU, RAM (app + Redis), SSD TB и origin Gbps — умножаются на один из четырёх пакетов unit-rate. Без reserved скидок и без гарантии AWS list price.

Подходит ли для интервью и whiteboard sizing?

Interview mode скрывает детали hardware, оставляя топологию, инциденты и health. Пресеты от 50k до 10M DAU дают защищаемый пиковый RPS и имена инцидентов для mock interview и консалтинга.

Вопросы

Это конструктор произвольной архитектуры?

Нет. Две фиксированные топологии — classic web stack и queue-workers — и настройка пресетов внутри семейства. Это математика ёмкости для интервью и раннего продакшена, не drag-and-drop microservices.

Почему Users и Nginx всегда зелёные?

Так задумано: для них нет модели отказа. Узкие места появляются на CDN, app pool, Redis, Postgres, очереди и workers, где работают формулы ёмкости.

Можно поделиться планом?

Да. Готовое состояние живёт в `/app#s=`. Старые ссылки с `/#s=` на корне сайта редиректят на `/app` с тем же hash.

Цены — это list price AWS?

Нет. Вы выбираете один из четырёх пакетов unit-rate — generic, AWS-shaped, Hetzner или Yandex — и отчёт умножает vCPU, RAM, SSD и egress. Reserved и committed скидок в модели нет.

Почему память Redis растёт с DAU?

Working set: DAU × 2 объекта × размер объекта в KB (2 объекта на пользователя зафиксировано константой). Больше DAU — больше ключей даже при том же mix запросов.

«Держит до N DAU» — это autoscale?

Нет. Growth envelope увеличивает DAU при неизменных инстансах, ядрах, tier Redis и репликах. Это потолок при текущем железе, не elastic scale-out.

Какие языки поддерживаются?

Маркетинг на `/en` и `/ru`. В симуляторе — переключатель EN/RU; `/app?locale=en` или `?locale=ru` задаёт стартовую локаль, если hash `#s=` не переопределяет её.

Нужно ли платить?

Симулятор бесплатен. После завершённого job — PDF, share или улучшение CRITICAL к OPTIMAL — появляется опциональный donate. Пресеты, инциденты и export не блокируются.

Достоверность и обновления

Формулы видны в отчёте симулятора; блок model на этой странице перечисляет, что считается и что намеренно не моделируется. Мы не публикуем счётчики загрузок, пользователей, отзывы или гарантии места в выдаче.

Контент страницы обновлён: .