Інтернет-магазину потрібно знати, коли оплата пройшла. CRM потрібно знати, коли із сайту надійшла нова заявка. Дізнаватися про події в іншій системі можна двома базовими способами: регулярно питати або отримувати повідомлення.
Опитування: регулярно питати
Під час опитування ваша система кожні кілька хвилин питає іншу: «Є щось нове?». Це просто зробити, і це працює майже з будь-яким сервісом, що має API. Мінуси - затримка (про подію ви дізнаєтеся лише під час наступної перевірки) і зайве навантаження: більшість запитів повертають порожнечу, але все одно витрачають ліміти й ресурси.
Вебхуки: отримувати повідомлення
З вебхуком інша система сама надсилає повідомлення на вашу адресу, щойно щось сталося. Інформація надходить майже миттєво, і порожніх запитів немає. Ціна - відповідальність: ваша адреса має бути доступною, перевіряти, що повідомлення справді надійшло від партнера, і правильно його обробляти, навіть якщо те саме повідомлення прийде двічі.
Як зробити вебхуки надійними
Перевіряйте підпис або секрет, які провайдер додає до кожного повідомлення, - так ніхто не зможе надіслати вам підроблені події. Відповідайте швидко, а важку обробку виконуйте у фоні, інакше провайдер вирішить, що доставка не вдалася, і повторить її. Зберігайте ідентифікатор кожної обробленої події й ігноруйте дублі. Ведіть журнал вхідних повідомлень, щоб можна було розібратися в проблемах.
Практична комбінація
На практиці найстійкіші інтеграції поєднують обидва підходи. Вебхуки доставляють події в реальному часі, а періодична перевірка - наприклад, раз на годину чи раз на добу - звіряє стан з обох боків і підхоплює все, що було пропущено, поки оновлювався ваш сервер або в провайдера був збій.
Коротко
Опитування просте, але повільніше й марнотратніше; вебхуки швидкі, але потребують акуратності. Використовуйте вебхуки заради швидкості, захищайте їх підписами й перевіркою дублів і додайте періодичну звірку, щоб жодна подія не загубилася.