Deweloper obniżył opłaty za moc obliczeniową bezserwerowej bazy danych Neon, wydłużając interwał odpytywania po stronie klienta z 30 sekund do 15 minut. Dłuższa przerwa pozwala bazie danych pozostawać w stanie bezczynności wystarczająco długo, aby mogła ona przejść w tryb skalowania do zera, co eliminuje zużycie kredytów obliczeniowych, które normalnie pochłonęłoby ciągłe odpytywanie co 30 sekund.
Neon nalicza opłaty za każdą sekundę pracy swojego silnika obliczeniowego. W typowym środowisku bezserwerowym każde zapytanie — bez względu na to, jak małe — utrzymuje silnik w stanie aktywności. Dashboard na telewizorze autora odpytywał bazę danych co pół minuty, mimo że wyświetlane dane zmieniały się tylko wtedy, gdy użytkownik ręcznie dokonywał synchronizacji lub rozpoczynała się nowa transmisja. Ten wzorzec uniemożliwiał puli obliczeniowej Neon osiągnięcie stanu zerowego, który zatrzymuje naliczanie opłat, co powodowało regularne skoki kosztów widoczne w panelu Vercel.
Dlaczego pierwotne odpytywanie miało znaczenie
- Dashboard był czysto klienckim komponentem React, więc każda instancja przeglądarki uderzała bezpośrednio do Neon.
- Cennik Neon wiąże koszty z czasem aktywności obliczeniowej, a nie z liczbą żądań, więc pojedyncze zapytanie co 30 sekund utrzymywało stałą opłatę podstawową.
- Monitoring Vercel autora wykazał korelację między ruchem a zużyciem mocy obliczeniowej Neon, co potwierdziło, że odpytywanie utrzymywało bazę danych w stanie aktywności.
Nieudane obejścia
Szybki debounce — opóźnienie zapytania po ostatniej interakcji użytkownika — nie pomógł, ponieważ timer i tak uruchamiał się co 30 sekund. Próbowałem również użyć Vercel Edge Functions, ale wprowadziło to zbyt dużą złożoność.
Proste rozwiązanie
Jedyną wymaganą zmianą w kodzie była zamiana stałej definiującej interwał odświeżania:
- Z 30 sekund → na 5 minut
- Następnie z 5 minut → na 15 minut
Przy 15 minutach Neon ma wystarczająco dużo czasu, aby rozpoznać brak aktywności i wyłączyć swoje zasoby obliczeniowe. Dashboard pozostaje funkcjonalny: użytkownicy nadal widzą najnowsze dane podczas ręcznego odświeżania, a sporadyczne automatyczne odpytywanie wyłapuje nową transmisję bez ciągłego generowania ruchu.
Dlaczego warto zachować odpytywanie po stronie klienta?
- Prostota – Brak dodatkowych funkcji bezserwerowych czy kroków budowania.
- Oczekiwania użytkowników – Dashboard już teraz zachowuje się jak aplikacja kliencka; ręczne kliknięcie wciąż zapewnia natychmiastową aktualizację.
- Zgodność z modelem kosztów – Neon nalicza opłaty za sekundę obliczeń, a nie za żądanie, więc zmniejszenie częstotliwości bezpośrednio obniża rachunek.
Lekcje dla deweloperów bezserwerowych
- Dopasuj częstotliwość odpytywania do rzeczywistego tempa aktualizacji danych. Jeśli zbiór danych zmienia się tylko kilka razy na godzinę, 15-minutowy interwał jest zazwyczaj wystarczający.
- Częste odpytywanie w środowisku bezserwerowym to ukryty czynnik generujący koszty; jedno dodatkowe zapytanie na minutę może uniemożliwić bazie danych przejście w tryb niskiego zużycia zasobów.
- Małe poprawki w konfiguracji mogą przynieść ogromne oszczędności bez konieczności przebudowy architektury.
Podsumowując: zmiana jednej stałej zmieniła stale aktywną bazę danych w prawdziwie bezserwerowy komponent, redukując wydatki na moc obliczeniową przy jednoczesnym zachowaniu użyteczności dashboardu. Dla każdego zespołu korzystającego z Neon lub podobnych usług obliczeniowych rozliczanych co sekundę, ponowna analiza interwałów odpytywania to szybki zysk, który warto przetestować już dziś.
