Webhook и опрос API: как узнать, что данные изменились

Одна система может сама сообщить о событии, а другая — периодически проверять источник. Разбираем различия на примере заказов.

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

Два способа узнавать о новом заказе

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

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

Как работает периодический опрос

API — это согласованный способ взаимодействия программ. При опросе получатель регулярно обращается к нему и выясняет, что появилось или изменилось. Источник может отдавать записи частями, поэтому получение одной порции ещё не означает, что обработан весь список.

В нашем условном примере проверка проходит раз в пять минут. Заказ, появившийся сразу после проверки, может ждать следующего обращения почти пять минут. Это ориентир для выбранного расписания при исправной работе обеих систем, а не универсальная гарантия. Более частые проверки сокращают ожидаемую паузу, но увеличивают количество обращений, даже когда новых заказов нет.

Как работает webhook

Получатель заранее сообщает, какие события ему нужны и куда доставлять уведомления. Когда происходит такое событие, источник отправляет сообщение. Поэтому webhook позволяет узнавать о событиях без постоянных однотипных проверок. Такое различие с опросом описано в документации GitHub.

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

Почему уведомление ещё надо обработать

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

В условном магазине повторное уведомление о том же заказе не должно создавать вторую посылку. Команде важно уметь узнать уже обработанное событие и проверить текущее состояние заказа. Задержка уведомления об оплате также не должна заставлять систему безусловно верить более старому сообщению о состоянии покупки.

Что выяснить перед выбором

Для webhook нужны понятные правила подписки, подтверждения получения, повторной доставки и проверки отправителя. GitHub рекомендует проверять подлинность сообщений, использовать защищённое соединение и предусматривать работу с пропущенными событиями в практиках использования webhook.

Для опроса важны расписание, ограничения API и способ определить, какие изменения уже получены. В обоих случаях полезно знать, как восстановить пропуск за период недоступности. Не стоит выбирать способ только по обещанию «мгновенно»: сначала нужно понять допустимую задержку и последствия потерянного или повторного события.

Когда два подхода работают вместе

Команда может использовать уведомления для быстрой реакции, а периодическую сверку — чтобы находить пропуски. В условном магазине событие помогает начать подготовку заказа, а сверка проверяет, не остались ли необработанные покупки. Это возможная архитектура, не обязательное устройство любого сервиса.

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

Как перейти к практике

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

Data Engineer для начинающих
Курс
Доступ сразу
Data Engineer для начинающих

Освойте Data Engineering с нуля: научитесь собирать, хранить и обрабатывать данные. Практика на каждом этапе — опыт не нужен.

С нуля до junior
Теория и практика
Диплом по окончании
12 990
₽/мес
УЗНАТЬ ПОДРОБНЕЕ

Что почитать рядом

Первичные источники

Читайте также

Обучить команду или нанять специалиста по данным: как выбрать
47

Обучить команду или нанять специалиста по данным: как выбрать

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

Вертикальное и горизонтальное масштабирование данных: в чём разница

Когда системе добавляют мощность одного сервера, когда делят работу между несколькими и почему увеличение ресурсов само по себе не решает любую проблему.
Журнал изменений данных: как выяснить, кто и когда изменил набор
42

Журнал изменений данных: как выяснить, кто и когда изменил набор

Что можно узнать из журнала действий с данными, как он помогает разбирать ошибки и почему его записи не показывают всю историю сами по себе.

Занятия проходят
в Нова Дата СДО

Вебинары, практика и общение с преподавателем — в одном окне браузера.

Посмотреть интерфейс платформы
Календарь обучения в Нова Дата СДО
Курсы студента в Нова Дата СДО
Редактор кода для практики в Нова Дата СДО
Вебинары и расписание Ваши курсы Код в браузере
Нова Дата СДО — в реестре российского ПОРеестровая запись № 34931
Заявка отправлена
Отправим вам подборку курсов в течение 5 минут. С вами также свяжется наш специалист и даст карьерную консультацию.
Персональный промокод
На курс «Инженер по парсингу данных»
Введите код при оплате, чтобы применить скидку к программе.