Но по прошествии некоторого времени начинают поступать жалобы следующего содержания: "Не упала заявка — в нашей системе она есть, в amo ее нет", или "Не обновился статус заявки — в нашей системе она в статусе оплачено, а в амо она в статусе новая". Мы начинаем судорожно искать проблему, залезаем в логи, и видим там следующую картину: запрос отправлен — успешно, запрос отправлен — успешно, запрос отправлен — ошибка. Что? Как? Какая ошибка? С какой стати? Данные сформированы корректно, мы тестировали этот момент сотню раз и все работало, но в логах ошибка. Пробуем отправить ошибочный запрос на создание сделки снова — и успешно. Мы ничего не меняли, ничего не чинили, мы просто отправили запрос еще раз и все сработало.
Да, косяк. Плохо. Уже переслал коллегам с моим комментарием.
Да, приватные виджеты мы формально не обслуживаем, но тут поддержка не права. Потеря данных у нас всегда имеет высший приоритет. И я всегда исповедовал принцип, что на один кейс, который стал нам известен, есть минимум 10 клиентов, которые промолчали. А уж если клиент готов помогать разобраться - это особенно ценно. В общем, извиняюсь, не правы.
С потерей данных при обращении к АПИ все непросто. Ошибки могут случаться (это очевидно), и единственный вариант - копить очередь. Мы могли бы копить ее на своей стороне, но если мы не отработали запрос, чего нам копить? То есть, по хорошему, очередь должен реализовать внешний сервис, а АПИ отдавать корректную ошибку, если "не зашло".
Мы, конечно, должны обеспечивать максимальную доступность базовых методов АПИ (прежде всего, добавление сделки/покупателя/контакта), но кейсы бывают самые разные и хитрые - очередь надежнее.
И еще раз повторюсь. Наш внутрений регламент звучит так:
- потеря данных - это высший приоритет (тут типичная потеря данных)
- редкий и хорошо подготовленный запрос - это большая ценность. Одно обращение = 10 инцидентов, о которых мы не знаем.
- если у нас "не воспроизводится" или "воспроизводится редко" ценность обращения увеличивается, т.к. без помощи клиента мы уже сами багу не найдем
Поэтому, тут мы точно не правы. Еще раз извиняюсь и прошу написать ребятам еще раз (хотя я уже написал)
Михаил, спасибо за обратную связь! Контакт с поддержкой установлен, будем разбираться в проблеме. По ошибкам согласен с вами, они могут случаться, от этого никто не застрахован. Поэтому тут скорее важно получить корректное ее описание, чтобы максимально быстро понять в чем именно проблема, и сервис работающий с амо смог корректно ее обработать.
Дамы и господа - проблема решена.
В чем же она заключалась? Ответ: очередь, очередь и еще раз очередь.
Что будет если засыпать амо одновременными запросами из нескольких сервисов на обновление одной и той же сделки? Ничего хорошего. Амо обеспечивает отработку запроса, но не обеспечивает постановку этих запросов в очередь. Собственно и не должна. Копить очередь на стороне интегратора - это правильный подход. Собственно это мы и сделали, и уже давно. Но пара запросов на обмен токенов прошла вне очереди и это стало причиной ошибки. В техподдержке этот факт выявили, и прислали развернутый ответ, за что конечно же ребятам спасибо.
Мораль басни: интеграторам ставить все запросы в очередь обязательно, без очереди все потонет. От амо хотелось бы получать корректный ответ об ошибке, чтобы интегратор сразу понимал что отправляет невалидные данные, ну и стараться не игнорить пользователя с его ошибками, ведь на то она и техническая поддержка. Всем спасибо.