Временная недоступность внешнего API — нормальная ситуация, поэтому интеграция должна переживать таймауты и ошибки без потери данных.
Короткий ответ
Нужны ограниченные повторные попытки, очередь, сохранение исходных данных, журнал ошибки и возможность повторно обработать конкретную операцию. Пользовательский запрос не должен висеть минутами в ожидании чужого сервиса.
Что проверить в первую очередь
Сначала проверьте несколько вещей, которые напрямую влияют на решение:
- Разделить приём пользовательской заявки и внешнюю синхронизацию.
- Не повторять запрос бесконечно без задержки.
- Хранить статус каждой операции и текст последней ошибки.
Практический подход
Интеграцию проще проектировать не от названий методов API, а от бизнес-сценария: какое событие происходит, какие данные должны уйти, что создаётся на другой стороне и что делать при ошибке.
Типичные ошибки
Ниже — ошибки, которые чаще всего делают решение дороже, сложнее или менее предсказуемым:
- Считать успешный http-ответ гарантией правильного бизнес-результата.
- Не хранить идентификаторы связанных сущностей.
- Делать интеграцию без логов.
- Не продумывать повторную обработку после временной ошибки внешнего сервиса.
Что подготовить перед началом
Для оценки обычно достаточно: документация обоих сервисов, перечень сущностей и полей, примеры запросов, правила обработки дублей, сценарий ошибки и ожидаемый результат.
Если части информации пока нет, это нормально. Лучше обозначить неизвестное сразу, чем строить оценку на предположениях.
Как понять, что результат хороший
Устойчивую интеграцию можно проверить по реальным сценариям: данные не теряются, повторный запрос не создаёт дубли, ошибки видны в логах, а временный сбой внешнего сервиса не ломает весь процесс.
Когда подключать специалиста
Для оценки интеграции обычно нужны документация API, пример сущностей и несколько реальных сценариев. Если документации нет, сначала стоит проверить, какие интерфейсы и вебхуки система действительно предоставляет.
Вывод
Нужны ограниченные повторные попытки, очередь, сохранение исходных данных, журнал ошибки и возможность повторно обработать конкретную операцию. Пользовательский запрос не должен висеть минутами в ожидании чужого сервиса. Если ситуация отличается от типовой, решение лучше проверять на текущем проекте, а не подгонять его под универсальный шаблон.



