Что такое endpoint в интеграциях?
Что проверяют
За простым термином прячут вопрос о том, как вы проектируете обмен между системами. Смотрят, думаете ли вы про контракт, ошибки и повторы, или ограничиваетесь фразой про адрес сервиса. Для инженера данных ответ должен выйти на приём и выгрузку данных, а не остаться на уровне словаря.
Как отвечать
Endpoint это адресуемая точка, через которую одна система обращается к другой: конкретный путь и метод HTTP-API, метод gRPC-сервиса, адрес сервиса с моделью. Вокруг него всегда есть контракт: формат запроса и ответа, коды ошибок, требования к аутентификации, лимит частоты обращений.
Дальше содержательная часть:
- контракт и версия: схема зафиксирована, несовместимое изменение уезжает в новую версию пути, а не ломает текущих потребителей;
- надёжность: таймаут, повтор с растущей задержкой и случайной добавкой, разделение ошибок на повторяемые и бессмысленные для повтора;
- идемпотентность: ключ запроса на запись, чтобы повтор после обрыва не создал вторую запись;
- объём: пагинация по устойчивому курсору, уважение к ответу о превышении лимита, отдельная точка для пакетной выгрузки;
- инкрементальность: выборка по метке изменения с небольшим перекрытием окна;
- наблюдаемость: сквозной идентификатор запроса в логах, метрики задержки и доли ошибок;
- для модели: разделение синхронной точки предсказания и пакетной обработки, разогрев перед нагрузкой.
Где спотыкаются
Сводят ответ к адресу и останавливаются. Вопрос про интеграции всегда продолжается сценарием отказа, и кандидат, который не скажет, что будет при недоступности внешней стороны, выглядит теоретиком. Ожидают связку из таймаута, повтора и очереди.
Повторяют записывающий запрос без идемпотентности. Ответ потерялся по таймауту, приёмник запрос уже обработал, повтор создаёт второй документ, и расхождение всплывает через неделю в сверке. Решается ключом идемпотентности или проверкой по естественному ключу на стороне приёмника.
Строят пагинацию по смещению на изменяющихся данных. Между запросом страниц вставки и удаления сдвигают окно, часть записей теряется, часть приезжает дважды, а логи при этом чистые. Курсор по монотонному полю и сверка количества после загрузки снимают проблему.