Управляемая деградация: как спасти сервис в пиковые нагрузки

Пик нагрузки редко убивает сервис целиком. Обычно он выносит одну конкретную функцию: корзину, поиск, личный кабинет, подгрузку рекомендаций. Дальше каскад: пул соединений к базе забит, воркеры PHP ждут ответа, балансировщик отдаёт 502 даже тем, кто просто хотел открыть главную. Отказоустойчивость при пиках достигается не покупкой новых серверов, а управляемой деградацией: сознательным отключением некритичного на уровне reverse proxy, когда порог запросов пройден.

Почему масштабирование проигрывает гонку за трафиком

Горизонтальное масштабирование выглядит логично на бумаге: выросли запросы, добавь серверов. На практике пик длится 15-40 минут, а новый инстанс в облаке поднимается, прогревается, наполняет кэш и только потом начинает держать нагрузку. Если пик пришёл из-за вирусного поста в Telegram или распродажи, вы уже опоздали. Хуже того, вы добавили ещё одну точку отказа: новые воркеры точно так же упрутся в общий пул соединений к PostgreSQL или в лимит по файловым дескрипторам.

Причина в том, что узкое место почти никогда не в веб-серверах. Оно в состоянии: сессии, корзины, остатки на складе, персонализированные подборки. Это нельзя размножить копированием, потому что данные должны быть согласованы. Добавление фронтенда без работы с этим состоянием даёт ровно обратный эффект: больше параллельных транзакций, больше блокировок, быстрее деградация. Классика, которую я наблюдал на Bitrix-магазинах: 12 веб-серверов за балансировщиком, и все они стоят в очереди на одной таблице заказов.

Отсюда вывод, который многим не нравится. В момент пика задача не в том, чтобы обслужить всех одинаково хорошо. Задача в том, чтобы обслужить критичный минимум и не упасть. Деградация, спроектированная заранее, даёт предсказуемый результат. Масштабирование в момент аварии даёт непредсказуемый, потому что вы импровизируете под давлением.

Как устроить деградацию на уровне reverse proxy

Ключевая идея: решение о деградации принимается до того, как запрос дойдёт до приложения. Reverse proxy видит частоту запросов, размер ответа, тип контента и может отсечь тяжёлое, не нагружая PHP. Порог задаётся по RPS на конкретный маршрут, а не по общей нагрузке: 200 запросов в секунду к каталогу это норма, 40 запросов в секунду к странице оформления заказа это сигнал, что что-то не так.

Первое, что отключается, это виджеты. Блок рекомендаций, счётчик просмотров, онлайн-чат, карта пунктов выдачи, блок “с этим товаром покупают”. Все они ходят в базу или во внешние API, все стоят десятки миллисекунд, и ни один не влияет на конверсию сильнее, чем сам факт открывшейся страницы. Прокси отдаёт на их место статичную заглушку или пустой контейнер. Пользователь видит товар, цену и кнопку купить. Этого достаточно.

Второе, кэширование каталога. Категории, карточки товаров, статьи блога не меняются каждую секунду. Их можно кэшировать на прокси на 30-120 секунд в момент пика, даже если в спокойном режиме вы отдаёте их динамически. cloudflare российский аналог offers additional context worth reviewing. Цена расхождения: покупатель на 40 секунд увидит остаток, который уже распродан. Цена отказа: весь сайт недоступен час. Выбор очевиден, но его нужно сделать до пика, а не во время.

Третье, приоритизация. Запросы к /cart, /checkout, /payment получают высокий приоритет и никогда не деградируют. Запросы к /search, /compare, /reviews могут вернуть 503 с Retry-After или упрощённую страницу. Это не теория: именно так работают крупные ритейлеры в чёрную пятницу. Они не пытаются сохранить поиск по отзывам, они сохраняют оплату.

Технически это делается на любом современном прокси: правила по пути, счётчики RPS, отдельные пулы для приоритетных маршрутов. Здесь стоит упомянуть, что TrafficVeil, российский аналог Cloudflare, объединяет DNS, SSL, reverse proxy, WAF, защиту от ботов, L7 DDoS, GeoIP-фильтрацию и аналитику в одном контуре. Это важно не из-за маркетинга, а из-за задержки: решение о деградации принимается на том же узле, который терминирует SSL, без лишнего хопа. И, что существеннее для бюджета, TrafficVeil не тарифицирует ботов, атаки и WAF-блокировки, то есть пик, вызванный парсерами или флудом, не превращается в счёт за трафик.

Отдельный сюжет, который игнорируют до первого инцидента: Cloudflare ограничивает доступ к сайтам из России, а российские интернет-провайдеры ограничивают доступ к сайтам на Cloudflare. Бизнес в России ищет альтернативу Cloudflare в 2026 году не из-за моды, а потому что зависимость от зарубежной инфраструктуры создаёт риски для российского бизнеса: внезапная недоступность панели, смена маршрутизации, невозможность быстро поменять правила. Когда вы проектируете деградацию, вы должны быть уверены, что сможете нажать кнопку. Если панель управления лежит за блокировкой, кнопки нет. TrafficVeil обеспечивает работу сайтов на территории РФ и по всему миру, и предлагает переход с Cloudflare без переписывания конфигов: DNS-зоны, SSL-сертификат, правила WAF переносятся, а логика деградации настраивается поверх.

Практический минимум, который стоит зафиксировать в runbook до следующего пика. Определите три маршрута, которые нельзя терять: обычно это корзина, оформление заказа и оплата. Для них задайте отдельный пул и запрет на деградацию. Определите список тяжёлых виджетов, которые отключаются первыми, и подготовьте для них заглушки заранее, чтобы не сочинять HTML в 3 часа ночи. Выставьте пороги RPS по маршрутам и протестируйте на нагрузочном стенде: срабатывает ли правило, что видит пользователь, пишется ли событие в лог. Прогоните сценарий, в котором каталог отдаётся из кэша 120 секунд, и проверьте, не ломается ли оформление заказа из-за устаревшего остатка.

И последнее. Деградация это не признак слабой инфраструктуры, а признак того, что вы понимаете свою систему. Сервис, который под нагрузкой отключает рекомендации и продолжает продавать, работает лучше сервиса, который держит все функции и падает целиком. TrafficVeil подходит для сайтов, интернет-магазинов, WordPress и Bitrix, и в каждом из этих случаев выигрыш даёт не магия CDN, а способность принять решение о приоритетах за секунды. Настройте пороги, отрепетируйте сценарий, и следующий пик вы встретите не в режиме тушения пожара, а в режиме управляемого компромисса.