Такие разборы я делаю регулярно, этот лежит в канале вместе с обсуждением.
31 января 2017: удаление, после которого нечего было вернуть
Коротко: инженер запустил удаление не там, где собирался, а восстановиться оказалось не из чего.
Инженер чистил сломанную реплику и запустил удаление на боевой базе. Процесс остановили через секунду-две, но около 300 ГБ данных уже были удалены. Ни один из пяти настроенных способов резервирования не работал. Сервис лежал около 18 часов, шесть часов данных потеряны безвозвратно.
Отдельная деталь: ежедневная выгрузка в S3 падала, а письма об ошибке не доходили из-за настройки почты. Выгрузка не работала, и никто об этом не знал. Все цифры взяты из постмортема GitLab от 10 февраля 2017 года, я ничего к ним не добавляю.
Почему это сработало так плохо: два слоя тишины
Коротко: бэкап, который ни разу не разворачивали, - это просто файл, а уведомление, которое не доходит, равно отсутствию уведомления.
Ошибка с удалением могла случиться у любого. Дорогой её сделала тишина вокруг копий, и она двухслойная.
- Первый слой: копия якобы делается. Выгрузка падала, а пока её ни разу не пытались развернуть, наличие или отсутствие файла ничего не доказывало.
- Второй слой: мне скажут, если не вышло. Сигнал об ошибке существовал, но до человека не доходил. Со стороны это выглядит как «всё в порядке».
Механика такая: защита, которую проверяют только по статусу «настроено», со временем превращается в декорацию. Работает она или нет, выясняется в единственный день, когда она нужна.
Если свести урок к одной строке: защита существует, когда её запускали и она сработала. Всё остальное - намерение.
Если вам важно строить контент вокруг собственных разработок и кейсов, следующий шаг лежит здесь.
Где у меня то же самое, только меньше
Коротко: масштаб у меня другой, а риск тот же: ночная автоматика, о сбое которой можно узнать только по тишине.
Конвейер новостей об ИИ (ночью собирает и проверяет новости об ИИ и готовит пост дня для Telegram) работает по расписанию с 30 августа 2026 года. Утром я открываю панель, и там либо лежит пост, либо нет. Риск в том, что утро без поста можно принять за утро без новостей. По механике это та же ситуация, что и с выгрузкой в S3 из истории GitLab: сбой, о котором никто не сказал вслух.
НЕВОД (мой контент-завод: из одной темы пишет статью и посты под каждую площадку и публикует после моей кнопки) ничего не отправляет наружу без моего одобрения. Это защита в одну сторону. Вопрос, который я задаю себе про другую: чем пустая очередь одобрения отличается от остановившегося завода, если смотреть только на саму очередь.
Джарвис (главный агент-оркестратор: живёт на сервере, управляется из Telegram и руководит остальными моими системами) живёт на сервере. А всё, что живёт на сервере, держится на копиях, и они либо проверены восстановлением, либо нет.
У меня нет ни 300 ГБ, ни 18 часов простоя. Но с историей GitLab нас роднит одна механика: молчание легко принять за норму.
Как этот дефект выглядит в автоматизациях и у ИИ-агентов
Коротко: сценарий по расписанию легко собрать и так же легко оставить без присмотра, а агент к тому же умеет ответить гладко там, где инструмент ничего не вернул.
Сценарий, который запускается сам, - это та самая ежедневная выгрузка из истории GitLab. Он пишет результат куда-то и считается живым, пока кто-то не заметит, что результата давно нет. Относится это к любой платформе автоматизаций, включая n8n. Что именно резервируется на вашей схеме развёртывания и за что отвечаете вы, а за что поставщик, надо смотреть в документации своего варианта, я здесь за вас этого не утверждаю.
С ИИ-агентом добавляется второй слой. Обычный сценарий при поломке падает с ошибкой, и её хотя бы можно перехватить. Агент при пустом ответе инструмента способен написать гладкий итог, который выглядит как успех. Правдоподобный ответ и верный ответ со стороны не отличить, поэтому отказ инструмента должен быть виден как отказ и не растворяться в тексте.
Про ключи и учётные данные у меня отдельное правило, и это моё решение. Если система шифрует сохранённые учётки собственным ключом, я храню этот ключ отдельно от копии и в менеджере паролей. Копия без ключа бесполезна, ключ рядом с копией опасен. Как это устроено в вашей версии конкретного сервиса, сверяйте с его документацией.
Что я поменял у себя после этого
Коротко: четыре правила, и все они про проверку факта, а не про наличие настройки.
Это решения, которые я принял для своих систем. Это не отчёт о выполненном.
- Бэкап считается сделанным после проверки восстановления. Файл появился - ещё не результат. Результат: архив распакован, содержимое сверено, нужная вещь открылась.
- У ночной автоматики есть проверяемый артефакт и допустимый возраст. Слово «запущено» говорит только о том, что процесс стартовал. Живость доказывает свежий файл или запись, дата которых не старше нормы.
- Канал уведомлений проверяется искусственной поломкой на тестовой копии. Я смотрю, дошло ли сообщение до меня и за какое время. Письмо, настроенное где-то там, проверкой не считается.
- Для агентов пустой результат инструмента означает неизвестность. Где ошибка стоит денег или клиента, итог выносит код по проверяемому признаку. Модель может вердикт только ухудшить.
Как считать эффект от такой автоматики, я разбирал отдельно: ИИ агенты автоматизация: три совета, которые я проверил цифрами. Там речь о времени, здесь о риске, но принцип один: сначала замер.
Что проверить на этой неделе
Коротко: три действия по порядку, и всё это делается на тестовой копии, а не на рабочей системе.
- Составьте список всего, что у вас запускается само: сценарии по расписанию, ночные выгрузки, агенты с триггером. Без списка нечего проверять.
- Сломайте одно нарочно, но только в тестовой копии или тестовой среде. Подставьте неверный адрес в копии сценария и дождитесь сообщения. Сообщения нет - у вас тот же дефект, что был у GitLab. Рабочие сценарии и реальные ключи для этого не трогайте.
- Разверните последнюю копию на чистом месте и откройте то, что внутри. Проверки «файл есть» мало. Засеките, сколько это заняло.
Полный список проверок - в следующем разделе.
Что ты уносишь
Коротко: чек-лист из 9 пунктов, каждый проверяется глазами, и по нему видно, где у вас тишина.
Правила безопасности для всего списка: проверки, где что-то ломают или подменяют, делайте только на тестовой копии. Содержимое файлов с секретами не открывайте и никому не показывайте, достаточно списка имён файлов в папке и размеров. Реальный ключ шифрования не меняйте и не удаляйте.
- Каждому ночному сценарию соответствует запись в журнале запусков за последние 7 дней. Откройте журнал и найдите запуск за каждую ночь. Пропущенная ночь - сигнал.
- Последний файл выгрузки моложе суток. Откройте папку с копиями и отсортируйте файлы по дате изменения. Дата верхнего файла должна быть сегодняшней или вчерашней.
- Размер последнего файла выгрузки не нулевой и сопоставим с предыдущим. Сравните размеры двух последних файлов. Размер, упавший вдвое или ставший нулём, - сигнал сбоя выгрузки.
- Копия лежит на другом носителе или в другом месте, чем оригинал. Сравните путь или адрес назначения с адресом основной системы. Копия на том же диске не переживёт смерть этого диска.
- Копию развернули на чистом месте, и нужные данные открылись. Восстановите её на другой машине или в отдельном контейнере, откройте любой сценарий и убедитесь, что он на месте. Запишите время восстановления.
- Если у системы есть ключ шифрования учётных данных, он записан в менеджере паролей. В папке с копиями посмотрите только список имён файлов: файла с ключом или файла настроек окружения рядом с копией быть не должно.
- Уведомление об ошибке доходит до вас за приемлемый срок. Сломайте тестовый сценарий и засеките время до сообщения. Не дошло - адрес или канал настроены неверно.
- Уведомление приходит туда, где вы смотрите каждый день. Откройте этот канал и убедитесь, что в нём нет сотни непрочитанных. Сигнал, утонувший в потоке, равен отсутствующему.
- Агент не пишет итог об успехе, когда инструмент вернул пустоту. В тестовой копии подмените ответ инструмента пустым и посмотрите, что агент напишет в итоге. Если текст уверенный и без оговорок, добавьте проверку пустого результата в код.
Напиши мне: что можно собрать у тебя
Коротко: могу помочь собрать для вас проверку копий и сторожа сбоев под ваш набор автоматизаций и ИИ-агентов.
Если дальше хочется выстроить контент вокруг своих разработок, шаги по ссылке.
Можно собрать проверку копий и уведомления о сбоях под ваш набор сценариев. Напишите мне в личку кодовое слово «АГЕНТЫ АВТОМАТИЗАЦИИ», и я пойму, что вы пришли из этой статьи.
