Оценка нагрузки

Базовый System Design
≈ 2 мин чтения

Архитектура должна соответствовать масштабу

Одну и ту же функцию можно реализовать очень по-разному для ста пользователей и для ста миллионов. Поэтому после требований и архитектурных компромиссов появляется следующий вопрос: какую нагрузку система вообще должна выдерживать?

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

Что разберём

  • Основы оценки нагрузки. Научимся переводить продуктовые вводные в технические величины, фиксировать допущения и не создавать ложную точность.
  • RPS и QPS. Разберём, как оценивать интенсивность запросов и почему число HTTP-запросов не всегда совпадает с числом обращений к внутренним системам.
  • Пиковая нагрузка. Посмотрим, почему среднего значения недостаточно и как закладывать реалистичный запас на периоды повышенной активности.
  • Оценка объёма хранения. Научимся оценивать, сколько данных появится за день, год или выбранный срок хранения.
  • Оценка пропускной способности. Свяжем размер запроса или ответа с их количеством и получим примерный сетевой поток.
  • Приближённые расчёты. Соберём отдельные оценки в быстрый back-of-the-envelope расчёт, который помогает принимать архитектурные решения без сложной модели.

Темы идут от входных данных к общей картине масштаба: сначала формулируем допущения, затем оцениваем поток запросов, пики, хранение и сеть, а в конце учимся быстро связывать всё это в одну модель. После этого уже имеет смысл переходить к компонентам системы и выбирать их с пониманием реальной нагрузки.

Цель оценки — не предсказать будущее с точностью до единицы. Её задача — отличить систему на сотни запросов в секунду от системы на сотни тысяч и вовремя заметить потенциальное узкое место.