Задача
Маркетплейс: онлайн-ранкинг товарной витрины в реальном времени. В обычные дни нагрузка терпимая, но в распродажи трафик кратно взлетает — и прежний стек ложился: latency скакала, очереди распухали, а витрина начинала показывать вчерашние рекомендации вместо свежих.
Требование — держать пиковую нагрузку с жёстким бюджетом p99 и не деградировать в самый дорогой для бизнеса момент.
Подход
Развели фичи через feature store с консистентностью онлайна и оффлайна, горячие признаки кэшируем рядом с сервингом. Сам ранкер квантовали и скомпилировали под целевое железо, сервинг шардировали и сделали горизонтально масштабируемым под автоскейл.
Заложили graceful degradation: под перегрузом система не падает, а откатывается на облегчённую модель и урезанный набор кандидатов — пользователь получает чуть менее точную выдачу вместо ошибки. Backpressure на входе держит хвост latency под контролем вместо тихого срыва SLA.
Стек
Go/Rust serving · feature store · ONNX Runtime · Redis · Kafka + Kubernetes HPA
Результат
- 1.2M RPS на пике распродажи без срыва SLA.
- 8 мс p99 латентности ранкинга.
- +11% к конверсии витрины на свежих рекомендациях.
- Под перегрузом — управляемая деградация, а не отказ.