| Termin | Definicja |
|---|---|
| wyłączony odbiornik webhooka | Wyłączony odbiornik webhooka przestaje przyjmować powiadomienia, co przerywa przepływ danych między systemami. Rola odbiornika webhooka w przepływie danychOdbiornik webhooka to element aplikacji, który oczekuje na żądania HTTP wysyłane przez inny system po wystąpieniu określonego zdarzenia. Nadawca może przekazywać dane metodą POST, zwykle w formacie JSON, a odbiornik interpretuje otrzymany komunikat i uruchamia dalszą operację. Przykładem jest przekazanie informacji o utworzeniu zamówienia, zmianie statusu płatności, zakończeniu zadania albo pojawieniu się nowego rekordu. Webhook różni się od cyklicznego odpytywania API tym, że to system źródłowy inicjuje przesłanie powiadomienia. Wyłączony odbiornik nie nasłuchuje na wskazanym adresie aplikacyjnym albo celowo odrzuca przychodzące żądania. W zależności od architektury może to oznaczać zatrzymanie procesu obsługującego endpoint, wyłączenie integracji w konfiguracji, usunięcie trasy HTTP lub ustawienie stanu, w którym aplikacja nie wykonuje logiki po odebraniu komunikatu. Samo wyłączenie odbiornika nie musi usuwać danych po stronie nadawcy, ale przerywa bieżący etap dostarczania i obsługi powiadomienia. Jak wygląda przerwanie dostarczania powiadomieńSystem wysyłający webhook zazwyczaj oczekuje odpowiedzi HTTP potwierdzającej przyjęcie żądania. Kod 2xx, na przykład 200 OK albo 202 Accepted, może zostać potraktowany jako techniczne przyjęcie komunikatu. Jeżeli odbiornik jest wyłączony, nadawca może otrzymać błąd połączenia, przekroczenie czasu oczekiwania, kod 404 Not Found, gdy trasa nie istnieje, albo kod 503 Service Unavailable, gdy usługa jest niedostępna. Znaczenie konkretnego kodu zależy od implementacji i konfiguracji obu systemów. Brak odbiornika może uruchomić mechanizm ponawiania dostarczenia. Nadawca może próbować wysłać to samo zdarzenie po określonym czasie, stosując stały odstęp albo narastające opóźnienie, czyli backoff. Nie jest to jednak gwarantowane zachowanie każdego rozwiązania. Część systemów przechowuje niepotwierdzone komunikaty w kolejce, część ogranicza liczbę prób, a część oznacza zdarzenie jako nieudane po pojedynczym błędzie. Po ponownym uruchomieniu odbiornika mogą więc pojawić się opóźnione, powtórzone albo bezpowrotnie utracone powiadomienia. Skutki techniczne i metody rozpoznania problemuNajbardziej widocznym skutkiem jest rozbieżność między stanem systemu źródłowego a stanem systemu odbierającego. Nadawca może wykazywać zakończoną płatność lub utworzone zadanie, podczas gdy aplikacja odbiorcza nie ma odpowiadającej informacji. Jeżeli webhook uruchamia kolejne operacje, takie jak aktualizacja rekordu, wysłanie komunikatu albo zmiana statusu, wszystkie te działania zostają pominięte do czasu ponownego dostarczenia zdarzenia. Wyłączony odbiornik może również powodować wzrost liczby nieudanych dostaw, opóźnienie kolejki oraz zwiększenie liczby wpisów ostrzegawczych w logach. Diagnostykę należy rozpocząć od ustalenia, czy problem dotyczy procesu aplikacyjnego, sieci, konfiguracji czy samego nadawcy. Warto sprawdzić czas ostatniej poprawnej dostawy, adres endpointu, metodę HTTP, odpowiedź serwera oraz liczbę ponowień. Logi odbiornika mogą potwierdzić, czy żądanie dotarło do aplikacji. Jeżeli nie ma żadnego śladu żądania, trzeba rozważyć niedostępność procesu, błędny adres DNS, regułę zapory, zmianę portu lub błąd routingu. Jeżeli żądanie jest widoczne, ale nie dochodzi do przetworzenia, należy przeanalizować kod odpowiedzi, walidację danych, uwierzytelnianie i błędy wykonywanej logiki. Bezpieczne przywrócenie obsługi webhookaPrzywrócenie odbiornika powinno obejmować nie tylko ponowne uruchomienie usługi, lecz także sprawdzenie, czy endpoint jest dostępny pod właściwym adresem i korzysta z prawidłowego certyfikatu TLS. Należy zweryfikować, czy aplikacja akceptuje metodę POST, poprawnie odczytuje nagłówek Content-Type oraz potrafi przetworzyć format danych wysyłany przez nadawcę. W systemach stosujących podpisy wiadomości trzeba sprawdzić zgodność klucza, algorytmu i surowej treści żądania. Nie należy uznawać integracji za sprawną wyłącznie dlatego, że adres odpowiada kodem 200, ponieważ potwierdzenie może zostać zwrócone przed zapisaniem lub wykonaniem danych. Po uruchomieniu warto wykonać kontrolną dostawę testową i porównać identyfikator zdarzenia po obu stronach. Obsługa powtórzeń powinna być idempotentna, czyli wielokrotne przetworzenie tego samego komunikatu nie powinno powodować wielokrotnego wykonania tej samej operacji. Pomocne są trwałe logi, identyfikatory korelacyjne, monitoring kodów odpowiedzi oraz alerty dotyczące czasu oczekiwania i liczby nieudanych prób. Jeżeli nadawca przechowuje zaległe zdarzenia, trzeba ustalić kolejność ich odtwarzania i sprawdzić, czy aplikacja odbiorcza nie przetwarza starszego stanu po nowszym. |