‼️ВАЖНО: Все формулы ниже — это грубые оценки для собеседований. В реальных проектах точные цифры требуют проведения нагрузочного тестирования и систем мониторинга.
1. Расчёт трафика
RPS (запросов в секунду) = общее число запросов за период / число секунд в периоде
Пропускная способность (МБ/с) = (RPS * средний размер ответа в байтах) / (1024 * 1024)
Пиковый RPS = средний RPS * пиковый коэффициент (обычно 5х–10x)
2. Объём данных в БД
Объём/день = новые записи/день * средний размер записи
Объём индексов ≈ объём данных * (15–30%)
Размер БД = (объём/день * TTL в днях + объём индексов)
Итог с репликацией и запасом = Размер БД * 1.3 * число реплик
3. CPU для сервиса
Ядер на под = (RPS * время обработки одного запроса в секундах) / утилизация CPU (целевая ~0.7)
Всего ядер = ядра на под * число подов * 1.3 (запас 30%)
4. RAM для сервиса
RAM на инстанс = (память на операцию * макс. операций) * 1.3 (30% на внутренний кэш пода, при наличии) *1.3 (запас 30%)
RAM для in-memory кэша (Redis) = объём данных для кэша * число реплик * 1.3 (запас 30%)
5. CPU/RAM для базы данных
CPU БД = (WPS * цена записи + RPS * цена чтения) / утилизация,
где WPS - запись в секунду, RPS - чтение в секунду.
RAM БД = (размер индексов + (20–30% от "горячих" данных)) * 1.3 (запас 30%)
P.S. Ещё раз повторю, всё очень примерно, и реальное потребление ресурсов может отличаться.
Системный анализ | Дмитрий Помаскин