SHIFT >_CODE
← Magazyn

Webhooki czy odpytywanie: jak systemy powinny się komunikować

Gdy jeden system musi wiedzieć o zdarzeniach w innym, są dwa podstawowe podejścia. Wyjaśniamy różnicę prostymi słowami i pokazujemy, jak uczynić każde z nich niezawodnym.

Sklep internetowy musi wiedzieć, kiedy płatność została zrealizowana. CRM musi wiedzieć, kiedy ze strony przyszło nowe zgłoszenie. Są dwa podstawowe sposoby, by jeden system dowiadywał się o zdarzeniach w drugim: regularnie pytać albo dostawać powiadomienie.

Odpytywanie: regularne pytanie

Przy odpytywaniu Twój system co kilka minut pyta drugi: „Jest coś nowego?”. To proste w budowie i działa z prawie każdą usługą mającą API. Wady to opóźnienie - o zdarzeniu dowiadujesz się dopiero przy następnym sprawdzeniu - i marnotrawstwo: większość zapytań nic nie zwraca, a mimo to zużywa limity i zasoby.

Webhooki: otrzymywanie powiadomień

Przy webhooku drugi system sam wysyła wiadomość na Twój adres, gdy tylko coś się wydarzy. Informacja dociera niemal natychmiast i nie ma pustych zapytań. Ceną jest odpowiedzialność: Twój punkt odbioru musi być dostępny, sprawdzać, czy wiadomość naprawdę pochodzi od partnera, i poprawnie ją obsłużyć, nawet jeśli ta sama wiadomość przyjdzie dwa razy.

Jak uczynić webhooki niezawodnymi

Sprawdzaj podpis lub sekret, który dostawca dołącza do każdej wiadomości, aby nikt nie mógł wysłać Ci fałszywych zdarzeń. Odpowiadaj szybko, a ciężkie przetwarzanie wykonuj w tle, inaczej dostawca może uznać doręczenie za nieudane i je powtórzyć. Zapisuj identyfikator każdego przetworzonego zdarzenia i ignoruj duplikaty. Prowadź dziennik przychodzących wiadomości, żeby móc analizować problemy.

Praktyczne połączenie

W praktyce najbardziej odporne integracje łączą oba podejścia. Webhooki dostarczają zdarzenia w czasie rzeczywistym, a okresowe sprawdzenie - na przykład co godzinę lub co noc - porównuje stan po obu stronach i wyłapuje to, co umknęło podczas aktualizacji serwera albo awarii dostawcy.

W skrócie

Odpytywanie jest proste, ale wolniejsze i rozrzutne; webhooki są szybkie, ale wymagają staranności. Używaj webhooków dla szybkości, zabezpieczaj je podpisami i kontrolą duplikatów i dodaj okresowe uzgadnianie, by żadne zdarzenie nie przepadło.