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