Автоматизация всегда падает: вопрос лишь в том, узнаете ли вы об этом

Любая интеграция однажды ломается: у площадки кончился лимит, сервис ответил ошибкой, сеть моргнула. Всё решает то, что происходит потом: система досылает потерянное сама или вы узнаёте о пропавшей заявке от клиента. Разбираю на своём хозяйстве, из чего это собирается.

Александр МазинАлександр Мазин AI-инженер · автоматизация бизнеса Опубликовано
Цепь в темноте, одно звено разорвано и светится красным

Любая интеграция однажды ломается: у площадки кончился лимит, сервис ответил ошибкой, сеть моргнула на две секунды. Это не признак плохой работы - это нормальный режим жизни системы, которая ходит наружу. Разница между рабочей автоматизацией и красивой демкой не в том, ломается ли она, а в том, что происходит в следующую минуту.

Ломается на стыках

У меня был показательный случай: восемь площадок одновременно попросили у нейросети текст под свой формат, шлюз ответил "слишком много запросов", и все восемь публикаций встали намертво с красным статусом. Формально система отработала честно. По сути - потеряла материал на ровном месте, потому что через минуту тот же запрос прошёл бы спокойно.

У каждого свои ограничения на число обращений в минуту, свои редкие часы недоступности и своё представление о том, сколько можно думать над ответом.

Поэтому надёжность здесь - это заранее решённый вопрос, что делать с чужими ошибками. По каждому стыку я отвечаю на три: отказ временный или окончательный, можно ли повторить безопасно и кто узнает, если повторы не помогли.

Временный отказ и окончательный - разные истории

  • Превышен лимит обращений, сервис не ответил вовремя, оборвалась связь, у площадки сбой на своей стороне.
  • Окончательный. Неверный ключ доступа, площадка отказала по правилам, текст не проходит модерацию. Повторять бессмысленно - нужен человек.
  • Неизвестный. Сервис ответил чем-то нечитаемым. Пара попыток, и если не помогло - относимся как к окончательному.

Самая частая ошибка проектирования - считать любой сбой поводом остановиться. Разделение выглядит очевидным ровно до того момента, когда его надо описать в коде. Именно на этом шаге выясняется, что "ошибка" в вашей системе - это одно слово на все случаи жизни, и любое решение по ней принимает человек вручную.

Повтор должен быть безопасным

Повторять можно только то, что не сделает работу дважды. Если запрос успел дойти, а ответ потерялся по дороге, слепой повтор превращается в два одинаковых письма клиенту или два одинаковых поста в ленте.

Поэтому система должна помнить не только итог, но и то, где именно остановилась: взяли в работу, отправили, получили подтверждение от площадки.

Проверьте себя

Возьмите любой свой автоматический сценарий и мысленно оборвите ему связь ровно в середине. Если после этого нельзя нажать "повторить" не думая - у сценария нет состояния, и однажды он сделает работу дважды.

Очередь вместо героизма

Очередь - это простая таблица: что нужно сделать, когда можно попробовать снова, сколько раз уже пробовали. Отдельный сторож раз в несколько минут забирает оттуда просроченное и запускает заново.

Это скучная конструкция, но именно она превращает хрупкую цепочку в систему, которая переживает ночной сбой провайдера без единого потерянного письма. И она же снимает с вас необходимость сидеть рядом: пока очередь разбирается сама, ваше внимание не нужно.

Кто узнает, когда всё-таки не вышло

Дальше начинается то, что обычно делают хуже всего - уведомления. Я долго жил с сообщениями вида "ошибка в процессе, подробности в логе" и на третий день перестал их открывать: такое сообщение создаёт ощущение контроля, которого нет.

  • Что именно упало. В сообщении должны стоять конкретная статья и конкретная площадка. Человек должен понять контекст, не открывая систему.
  • На каком шаге. Отправка, подготовка текста, загрузка картинки. Шаг сужает поиск причины.
  • Что ответил сервис. Настоящий текст ошибки целиком. Именно он отвечает на вопрос "это чинится само или руками".
  • Куда нажать. Ссылка прямо на карточку записи. Без неё сообщение превращается в задание "найди сам".

И обратное правило: ожидаемые отказы не должны звенеть вообще. У одной площадки тариф ограничивает число публикаций в сутки - система помечает такую отправку неуспешной и молчит, потому что делать с этим нечего. Уведомления имеют смысл ровно до тех пор, пока каждое из них требует действия.

Что это даёт вам в деньгах

0 потерьматериалов и писем при временных сбоях площадок: очередь досылает всё сама
1 сообщениевместо десятка одинаковых: ожидаемые отказы гасятся, звенят только те, где нужен человек
2 минутына разбор сбоя вместо получаса раскопок, потому что причина и ссылка сразу в тексте

Посчитайте на своих. Одно письмо с заявкой, потерянное на минутном сбое, при среднем чеке 50 000 рублей и конверсии в сделку 30 процентов - это 15 000 рублей, за которые вы уже заплатили рекламой. Очередь досылает потерянное сама, а уведомление с текстом ошибки и ссылкой сразу показывает, что чинить, - без блуждания по логам вручную.

Главный эффект - доверие. Автоматизацией, которая молча теряет работу, пользоваться нельзя: её приходится перепроверять, и она перестаёт экономить время. Как только сбои становятся видимыми и обратимыми, систему можно оставить работать одну.

Ничего сложного тут нет - всё это делается в том же инструменте, где у вас уже живёт автоматизация. Требуется другое: заранее признать, что ломаться будет, и заложить на обработку поломок отдельное время.

Похожая задача?

Если у вас есть автоматизация, которой вы не доверяете и потому перепроверяете руками - опишите задачу в оценщике. Отвечу с планом, вилкой стоимости и расчётом экономии.

Оценить задачу

Новые разборы - на почту

Разборы задач автоматизации: что автоматизировать, сколько это стоит и что даёт в цифрах. Одно письмо на статью, без рекламы чужих продуктов.

Александр Мазин

Александр Мазин

AI-инженер. Автоматизирую бизнес под ключ: CRM, интеграции, AI-ассистенты, платформы. Пишу о системах, которые заменяют отдел.