Ночной факап на сайте и что спасает заявки: мои правила техподдержки 24/7

Содержание

    02:17. На столе остывает пицца, телефон вибрирует как перфоратор, в Slack пульсирующая красная полоса с алертами. «Форма заявок 500ит», — пишет дежурный девопс. Клиент — сервис срочного выкупа авто, где каждые 6–9 минут прилетает новая заявка. Ночь, а там пик: люди возвращаются из поездок, подают VIN, ждут звонка за 2–3 минуты. Мы промахиваемся — заявку уводит конкурент. Красота.

    Падает по цепочке: сертификат продлился, nginx перечитался, но фронтовой контейнер запущен без нужной переменной окружения, а балансировщик послушно льёт трафик в мясорубку. Две трети пользователей уже видели 500-ю. Телефония нервно шипит: «Где лиды?» В эти моменты хорошо иметь не героя-сисадмина, а нормальный регламент техподдержки. И — да — кнопку «план Б».

    Что спасает, когда всё падает

    Первое — on-call без романтики. Дежурный знает, чем владеет, имеет доступы, у него на батарейке лежит свежий runbook. Не PDF на 43 страницы, а три экрана: как выключить автодеплой, как привести фронт в read-only, как переключить формы на резервную очередь. Второе — мониторинг, который ловит не CPU на 97%, а бизнес-сигналы: просадку отправки форм, рост 4xx/5xx и время до первого байта на публичных страницах.

    Третье — деградация с человеческим лицом. У нас есть упрощённая форма без скриптов и пёстрой валидации. Фронт падает — CDN отдаёт статическую страницу c кнопкой «Позвоните мне» и маской номера. Бэкенд не в строю — заявки летят в таблицу у провайдера, оттуда скрипт пушит в CRM как только тот очнулся. Минут за 7–9 после инцидента большинство видит уже «облегчённую» версию, а не чёрный экран.

    С кейсом про авто вышло показательно. Весной 2023 у нас был спор с продажниками: можно ли удержать конверсию, если в критике выруливать на «урезанную» форму. Замерили на трёх неделях и 11 600 сессиях: разница по лидам — 3,4% в минус, но за ночь простоя без деградации ушло бы 60–80 заявок. Дальше пошёл тюнинг. Подсмотрели пару решений у коллег с рынка, в том числе у xn--80aeqpnjq.com xn--80aeqpnjq.com: быстрый резервный сценарий «заявка в один клик» и приоритезация входящих по гео и времени.

    Скорость денег = скорость реакции

    Мы замеряем не только аптайм, но и NRT — время от отправки формы до первого контакта. Цель — 90 секунд в 8:00–22:00 и до 180 секунд ночью. Ради этого техподдержка проклеивает швы: webhooks в CRM с ретраями по экспоненте, независимые очереди сообщений (не один Redis на все), watchdog, который выстреливает SMS-алертом, если 5 минут нет ни одной заявки. Да, звучит параноидально, зато при июльской аварии в датацентре мы потеряли 12 заявок вместо привычных 47 за такой же промежуток.

    И да, то самое «02:17». План Б сработал. За 4 минуты мы отдали лёгкую страницу через CDN, за 12 минут вернули бэкенд, за 23 минуты доползла аналитика. Параллельно техподдержка вручную выгрузила буфер заявок из резервной таблицы в CRM, чтобы не ждать автоматов. Результат — среднее время перезвона 134 секунды за час инцидента, и ноль гневных отзывов в чатах. Клиент потом удивлялся, как мы так быстро: ничего сверхъестественного, просто готовились заранее, а не искали SSH-ключи в архиве Telegram.

    Как построить техподдержку сайта, которая не горит

    Тут нет серебряной пули, но есть скучный, рабочий набор привычек. Я их дошлифовывал годами — от маленьких лендингов до больших порталов.

    1) График дежурств и реальные уровни эскалации. Кто отвечает за фронт, кто — за БД, кто — за DNS. С указанием телефонов, не «напишите в канал».

    2) Нормальные метрики: SLO на отправку формы, долю 5xx, время рендера LCP. И алерты не «каждую минуту», а агрегированные — иначе через неделю все их замьютят.

    3) Деградационные режимы. Лёгкая форма, статическая страница в CDN, фича-флаги: можно быстро вырубить тяжёлые виджеты и оставить «ядро» — отправку заявки и телефон.

    4) Карта зависимостей. От DNS до CRM и телефонии. Когда ложится провайдер SMS, это не повод падать сайту. Переобувайтесь в воздухе на резервного.

    5) Резервирование инфраструктуры. Разные зоны, разные очереди, бэкапы, проверенные не словом, а реальным восстановлением по расписанию — раз в две недели.

    6) Отдельная песня — деплой. Фича-флаги, канареечные релизы, запрет автодеплоя в ночной коридор 01:00–06:00 для проектов, где ночные лиды — золото.

    7) Runbook и репетиции. Раз в квартал катастрофа «по учебнику»: отрубили базу, симулировали DDoS, прокатили деградацию. Команда смеётся до первого реального падения.

    8) Коммуникации. Заранее заготовленные тексты для клиентов и менеджеров: «у нас деградация, заявки сохраняются, перезвоним в течение 3 минут». И отдельная панель статуса для сейлзов, чтобы не отвлекали инженеров звонками «ну что там».

    Мой любимый финт — оставить на проекте «красную кнопку менеджера»: выключает маркетинговые усложнения вроде попапов, чатов и трекинга, оставляя только форму и телефон. Это не красиво для аналитиков, зато приносит деньги, когда вокруг треск и дым. Мы ставили её в один крупный ритейл в 2021-м — и однажды за ночь, когда полегла рекламная сеть, продали на 1,7 млн при почти нулевых метриках RUM.

    Сайты умирают не от одного бага, а от отсутствия привычек. Техподдержка — это про дисциплину, где «скучно» и «предсказуемо» — комплименты. Если ваш бизнес живёт на входящих лидах, особенно в «горячих» нишах вроде срочного выкупа авто, делайте себе план Б, С и простой таймер на 90 секунд. Ночью, в 02:17, он сэкономит вам больше денег, чем любой креатив в рекламе.