Короткий ответ
Capacity planning — это прогнозирование будущей нагрузки и заблаговременное выделение (или заказ) достаточных вычислительных ресурсов, чтобы система не упиралась в лимиты CPU, памяти, диска, сети или пропускной способности базы данных в самый неподходящий момент.
Как это работает подробнее
на основе исторических трендов роста нагрузки (пользователи, запросы в секунду, объём данных) и известных будущих событий (маркетинговая акция, сезонный пик) оценивают, сколько ресурсов понадобится, и сравнивают с текущими лимитами (квоты облачного провайдера, количество узлов, размер дисков).
Пример / кейс
Ожидаемое поведение: заранее поданная заявка на увеличение квоты облачного провайдера и нагрузочное тестирование до пикового события предотвращают ситуацию, когда автомасштабирование упирается в лимит квоты прямо во время распродажи.
Пример кода
Прогноз: текущая нагрузка 1000 RPS, рост 20% в месяц, пиковая акция через 2 месяца
ожидает x5 от обычной нагрузки.
Текущий лимит квоты облака на инстансы: 50. Нужно для пика: 80.Что использовать на практике
- Практический подход. Capacity planning включает и "железные" ограничения (лимиты API облака на создание инстансов, лид-тайм закупки оборудования для on-prem), и софтовые (лимиты соединений БД, размеры пулов соединений). Регулярный обзор метрик насыщения (saturation) помогает заметить тренд до того, как ресурс исчерпается.
Подводные камни
- Частые ошибки. Полагаться только на автомасштабирование без учёта внешних лимитов (квоты провайдера, пропускная способность сети, узкое место в БД, которая не масштабируется горизонтально так же легко); не планировать заранее известные пики нагрузки (распродажи, релизы); игнорировать рост объёма данных на диске, что приводит к исчерпанию места.