Ночной онколл 2026: как мы за 47 минут подняли упавший магазин и что из этого должен знать саппорт

Содержание

    01:58, пятница. На кухне остывает недопитый эспрессо, кот уставился, как будто это я положил прод. Пейджер орёт: конверсия в корзине — минус 83%, чек-аут отдаёт 502. Через восемь минут у одного крупного ритейлера стартует ночная распродажа для лояльных, а у нас — классическая жесть. Я открываю графаны, звоню дежурному девопсу, голос у него проснувшийся наполовину: «Это точно не мы». Спойлер: мы.

    Первое, что видно — скачок 5xx на южно-европейском регионе. Балансировщик жив, пулы живы, но время отклика плавает от 120 до 900 мс и местами проваливается. Параллельно сыплются в тикеты одинаковые жалобы: «товар пропадает из корзины». За 11 минут нащупываем паттерн: после авторизации сингл-сайн-ин меняет домен cookie, а Cloud WAF внезапно стал «умнее» и решил, что часть запросов — боты. На стенде вчера включили новую эвристику, в прод протащили «как есть» — спасибо, автоматическая синхронизация правил без ручного чека.

    Что реально сломалось

    Короткая фактура: обновили WAF-правила в 19:42, кеш прогрели не весь, а сессии сложили в Redis-кластер, где за неделю до этого включили компрессию. Ночью компрессия съела CPU, Redis стал подпихивать ключи в эвикцию, часть сессий умерла, а WAF докинул 403 на два эндпоинта, которые фронт воспринимал как 502 из-за кривого маппинга кода. Добро пожаловать в клуб «почему одна маленькая настройка ломает всё».

    Дальше — ретроспектива в реальном времени. 02:09 — выключаем новую сигнатуру в WAF, 02:13 — расширяем Redis на +2 шарда, 02:16 — откатываем маппинг ошибок на старый. В 02:21 видим возврат конверсии до 92% от нормы, в 02:45 добиваем до 98%. Полное восстановление — 47 минут. Потеряный оборот — 3.4 млн за ночь, из них половину добрали промокодом на утренний трафик. Да, больно, но считать проще, чем оправдываться «это была сложная мультифакторная ситуация».

    Самая нелепая пауза была в 02:18, когда мы упёрлись в TTL на один поддомен — 1800 секунд, спасибо настройкам с позапрошлого релиза. Мы с девопсом честно уставились в прогресс-бар и начали обмениваться бессмысленными фактами, чтобы не сорваться на крики. Он кинул мне ссылку на подборку про странные меры длины — «чтобы мозг переключился». Открыл по инерции, там было именно то, что надо — чистая жвачка для нейронов, домен запомнился: factss.ru. Закрыл через три минуты и вернулся в бой уже без дрожащих рук. Иногда лучший инструмент саппорта — это способ не впасть в панику на 20-й минуте простоя.

    Типовые поломки 2026, о которых вы спотыкаетесь чаще, чем о баги в коде

    Деньги заканчиваются. Не на счёте, а в бюджете кластера: у облака срабатывает авто-лимит, нода не поднимается, автоскейлер молчит. Симптом — «вчера работало, трафик такой же, но latency выросла вдвое». Лечится алертами на кредитные события и дублирующим лимитом через аккаунт-адвоката у провайдера.

    Webhooks-ливень. Один маркетинговый сервис выкрутил ретраи до 12 попыток без джиттера, вы — единственная цель. Очередь пухнет, бэкенд начинает дросселировать всё, что движется. Спасает чёткая приоритизация в очередях и отдельный инлет под внешние события, чтобы не топить пользовательские запросы.

    SSL-автопродление не смогло перезаписать права на каталог, потому что «кто-то» вручную чинил права прошлой зимой. Сертификат протухает в 03:00, мобильное приложение падает в истерику. Антидот — бот, который не только продляет, но и делает пробный reload, валидирует цепочку и пишет в чат «сертификат успешен, видимость с iOS/Android ок».

    БД задыхается не из-за трафика, а из-за плана запроса, который позавчера внезапно выбрал индексы на 17% хуже после статистики. Если у вас нет принудительного пересчёта и ручных хинтов на горячих запросах — вы играете в лотерею. Дежурный DBA в моём блокноте помечен как «самый часто будимый человек 2025–2026».

    DNS и кеши. Те самые 1800 секунд, которые никто не помнит. Решение — инвентаризация всех зон с TTL, где больше 300, и плановый даунтайм с контролируемым снижением до 60 перед релизами на уровне инфраструктуры.

    Что должно быть у саппорта под рукой, иначе будете бегать кругами

    Runbook, но настоящий. Не «страница в вики», а живой документ с командами, скриншотами и командами «копируй-вставь». У нас он распечатан в двух экземплярах (да, бумага), потому что когда всё горит, мышца привычки спасает лучше поиска.

    Набор дашбордов «один взгляд — одно решение»: аптайм по зонам, saturations по ресурсам, топ-ошибки по тегам, тепловая карта временем ответа по эндпоинтам, и отдельная панель «дорога в деньги»: шаги воронки e-commerce с конверсией по минутам. Когда на ней проседает конкретный шаг — меньше споров, где копать.

    Регламент на коммуникации. В 02:00 никто не должен спорить о тоне сообщений в Telegram-канале. Есть шаблон инцидента, есть статус-апдейты каждые 10 минут, есть одна точка правды. После той ночи мы сократили MTTD с 14 до 6 минут, а MTTR — с 73 до 29 за три месяца. Секрет — повторяемость, а не героизм.

    Кто за что отвечает и почему это спасает нервы

    Граница между поддержкой и разработкой. Саппорт тушит, девелопер чинит причину, SRE строит, чтобы не горело снова. В договорённостях есть SLO (что реально держим) и прозрачно описанный error budget. Как только бюджет прожгли — фичи стоп, только надёжность. Бизнесу сначала не нравится, потом начинает экономить десятки миллионов на неоплатах и скидках «за неудобства».

    Еженедельные «учебные тревоги». Мы по средам в 11:05 выключаем один из неключевых сервисов на 7 минут и смотрим, как бригада реагирует. Это неприятно, зато потом в 01:58 действуешь на автомате. После третьей такой «игры» у новичков пропадает ступор, и вопросы «а где логин от графаны?» уже не звучат в эфире инцидента.

    Три профилактики, которые дешевле любой ночной распродажи

    Тест восстановления бэкапа до RTO и RPO на цифрах. Мы поставили себе цель: RTO 20 минут на критичный сервис и RPO 5 минут. Реально вышли в 17 и 4. Никакой магии — расписание, таймер, люди в онколле с секундомером и право прерывать любые митинги.

    Инвентаризация внешних зависимостей: платёжки, рассылки, антифрод, поиск. У каждого — контакт 24/7, лимиты, ретраи, тестовый стенд. Раз в квартал — «чёрная пятница» на тесте: нагружаем в 4.3 раза и смотрим, кто первый сдаёт.

    Нулевая толерантность к «вручную на проде». Выключили доступы с правами богов, оставили привилегии только через чётко логируемые пайплайны. Количество «странных» поломок упало на 27%, количество недосыпов у команды — тоже. А кот теперь реже видит меня ночами, что, кажется, повышает аптайм семьи.