Аварийный выключатель

Аварийный выключатель — это средство мгновенно отключить функцию без выкладки, пересборки и правки кода. Обычно это флаг, читаемый в момент запроса, и весь его смысл — сократить расстояние между «заметили, что что-то не так» и «остановили это». Всё остальное в инциденте — диагностика, поиск причины, исправление — может подождать, пока кровотечение остановлено, и выключатель как раз даёт такую возможность. ИИ-функциям он нужен сильнее, чем большинству. Их отказы — не падения, которые ловит мониторинг, а поведенческие; поведение способно испортиться из-за изменения модели выше по течению, правки промпта, сдвига в том, что пользователи присылают на вход, или тихо протухшего поискового индекса. Ни одно из этого не порождает исключения. Система работает, отвечает и выдаёт неверные или неуместные ответы с частотой, которую никто сразу не замечает, — а это ровно та ситуация, где возможность выключить за секунды дороже быстрого отката. Выключатель хорош ровно настолько, насколько хорош запасной путь. «Выключено» должно означать что-то, с чем продукт выживет: прежнее поведение без ИИ, более простой детерминированный путь, очередь, направляющая работу человеку, или честное сообщение о временной недоступности функции. Флаг, превращающий функцию в пустой экран или страницу ошибки, не будет нажат в нужный момент, потому что человек с этим флагом сравнит видимый простой с невидимой проблемой качества и решит подождать. О гранулярности стоит подумать до инцидента, а не во время. Один выключатель на функцию — это минимум. Лучше, когда можно отключить отдельный инструмент, доступный агенту, отдельное автоматическое действие, отдельного клиента или регион, один шаг конвейера при работающем остальном. Тянуться следует к самому мелкому выключателю, который всё ещё останавливает проблему, потому что грубый превращает узкий сбой в широкое прекращение сервиса. Реальным его делают эксплуатационные детали. Кому позволено его нажать и сможет ли этот человек сделать это в три часа ночи, никого не разбудив? Как быстро изменение расходится — флаг, закэшированный на минуты, аварийным выключателем не является. Пишется ли нажатие в журнал вместе с причиной и ответственным? Отрабатывает ли схема безопасно, если сам сервис флагов недоступен? И главное: проверял ли его кто-нибудь недавно, в проде, намеренно? Непроверенный выключатель — это вера, а не контроль, и инцидент — плохое время выяснять разницу. Последняя дисциплина — уборка. Выключатели накапливаются, и кодовая база, полная устаревших флагов, становится трудной для понимания: мёртвые ветки, не исполнявшиеся год, и сочетания, которых никто не проверял. Дайте каждому выключателю владельца и дату пересмотра и убирайте те, чья функция стала просто тем, как продукт работает.

Похожие термины

Ещё термины: Инструменты разработки