
Tekst: Kolofon
Powiadomienia to najbardziej wymagająca formalnie część silnika, bo standard nie pozwala na skróty. Ładunek musi być zaszyfrowany kluczem konkretnego odbiorcy, żądanie podpisane parą kluczy serwisu, a wszystko zgodnie ze specyfikacją, która nie wybacza pomyłki o jeden bajt.
Subskrypcje leżą w bazie instancji. Klucz publiczny jest jawny z natury, bo trafia do przeglądarki; klucz prywatny żyje wyłącznie jako sekret po stronie platformy i nigdy nie ma go w repozytorium.
Najciekawsza jest tu decyzja wymuszona przez ograniczenie z trzeciego wpisu: nie ma procesów żyjących w tle, więc nie ma czegoś, co budziłoby się o świcie i sprawdzało, czy jest nowy wpis. Rozwiązaniem jest doczepienie sprawdzenia do ruchu, który i tak przychodzi. Przy okazji żądania silnik sprawdza — z ograniczeniem częstotliwości, żeby nie robić tego non stop — czy pojawił się wpis, o którym nie powiadomiono.
Ma to konsekwencję, którą trzeba nazwać uczciwie: powiadomienie o wpisie publikowanym o świcie wyjdzie przy pierwszym żądaniu po tej godzinie, a nie punktualnie. Przy serwisie z jakimkolwiek ruchem różnica jest w minutach. Przy serwisie bez ruchu powiadomienie poczeka na pierwszego czytelnika — co jest logiczne, bo nie ma komu go dostarczyć.
Alternatywą byłoby zewnętrzne zadanie cykliczne. Wybraliśmy rozwiązanie bez zależności, bo zależność, która musi żyć, żeby produkt działał, to koszt utrzymania na zawsze.
Kolofon