Сначала измерьте профиль 1000 RPS и определите запас до 10 000: доли чтения и записи, latency, БД и внешние зависимости. Масштабируйте подтверждённые узкие места поэтапно, не начиная автоматически с шардинга.
Стратегия масштабирования при десятикратном росте нагрузки
Сначала измерьте профиль 1000 RPS и определите запас до 10 000: доли чтения и записи, latency, БД и внешние зависимости. Масштабируйте подтверждённые узкие места поэтапно, не начиная автоматически с шардинга.
Короткий ответ
Что ответить на собеседовании
Подробный разбор
Ответ с пояснениями
Условие
Сервис обслуживает примерно 1000 запросов в секунду. По оценкам, через три месяца количество запросов увеличится в десять раз из‑за выхода на новые рынки. На текущий момент архитектура построена на одном PostgreSQL‑сервере и нескольких серверах приложений.
Необходимо разработать подробный план масштабирования системы, который обеспечит её стабильную работу при ожидаемом росте нагрузки. План должен включать:
- изменения в архитектуре;
- подходы к кэшированию;
- стратегии шардирования данных;
- систему мониторинга и оповещений;
- механизмы автоматического масштабирования.
Ответ
Сначала измерьте профиль 1000 RPS и определите запас до 10 000: доли чтения и записи, latency, БД и внешние зависимости. Масштабируйте подтверждённые узкие места поэтапно, не начиная автоматически с шардинга.
План на три месяца:
- Зафиксировать SLO и нагрузочный сценарий с ростом данных, пиками и отказами.
- Устранить дорогие запросы, настроить индексы, ограничить connection pools и подготовить отказоустойчивость PostgreSQL.
- Масштабировать stateless-приложение за балансировщиком; вынести долгие операции в очередь.
- Кешировать подходящие чтения с TTL, защитой от stampede и понятной инвалидацией. Реплики чтения применять с учётом lag.
- Шардирование рассматривать при подтверждённом пределе одного узла. Выбрать ключ, оценить горячие tenant, миграцию и межшардовые операции; партиционирование таблицы само по себе не даёт дополнительных серверов.
- Наблюдать p95/p99, ошибки, saturation, locks, lag и возраст очереди. Автомасштабирование ограничить возможностями БД и провайдеров.
- Проверить 10 000 RPS с запасом, отказ узла и откат до выхода на новые рынки.