Развлечение и спорт
Август 2025
Спортивный портал с тяжёлым фронтендом: Next.js SSR, 24 JS-чанка, динамический контент и CMS Strapi. На турнирных пиках нужно держать 15 000 одновременных подключений без деградации для зрителей и без обрыва сессий админов.
Было: Nginx, фронт, бэкенд и БД на одном сервере. При пике CPU уходил в 100%, Strapi работал в одном потоке, SSH был открыт наружу.
Разделили монолит на три узла в закрытой сети: Proxy (Nginx + Varnish, 12 ГБ кэша), Frontend (PM2-кластер, 8 инстансов Next.js), Backend (4 инстанса Strapi). Снаружи виден только порт 443.
Varnish с кастомным VCL: статика на год, SEO-страницы 10 минут, динамика в обход кэша. Grace mode отдаёт устаревшую страницу до часа при падении бэкенда — пользователь не видит 502.
CI/CD без простоя: опрос репозитория, бэкап, сборка, безопасный рестарт PM2. SSL обновляется по таймеру.
15 000+ одновременных соединений без отказа.
100 000 запросов в одном прогоне стресс-теста.
CPU Proxy в пике ≤ 25%; фронт и бэкенд — 1–3% (кэш работает).
0 ответов 502/504 для пользователей за счёт grace mode.
Предел упёрся в канал хостинга (~1 Гбит/с), не в приложение.