Seorang pengembang memangkas biaya komputasi database serverless Neon dengan memperpanjang interval polling di sisi klien dari 30 detik menjadi 15 menit. Jeda yang lebih lama memungkinkan database tetap dalam kondisi idle cukup lama untuk melakukan scale to zero, sehingga menghilangkan kredit komputasi yang seharusnya dikonsumsi oleh polling konstan setiap 30 detik.

Neon menagih untuk setiap detik mesin komputasinya berjalan. Dalam pengaturan serverless yang umum, permintaan apa pun—sekecil apa pun—akan membuat mesin tetap aktif. Dashboard TV penulis melakukan query ke database setiap setengah menit, meskipun data yang ditampilkan hanya berubah saat pengguna melakukan sinkronisasi manual atau siaran baru dimulai. Pola tersebut mencegah pool komputasi Neon mencapai status zero-state yang menghentikan penagihan, sehingga membuat dashboard biaya Vercel membengkak dengan lonjakan yang rutin.

Mengapa polling awal sangat berpengaruh

  • Dashboard tersebut adalah komponen React murni di sisi klien, sehingga setiap instance browser mengakses Neon secara langsung.
  • Harga Neon mengaitkan biaya dengan waktu komputasi aktif, bukan jumlah permintaan, sehingga satu akses setiap 30 detik mempertahankan biaya dasar.
  • Pemantauan Vercel penulis menunjukkan korelasi antara trafik dan penggunaan komputasi Neon, yang mengonfirmasi bahwa polling tersebut membuat database tetap aktif.

Solusi alternatif yang gagal

Debounce cepat—menunda permintaan setelah interaksi pengguna terakhir—tidak membantu karena timer tetap berjalan setiap 30 detik. Saya juga mencoba menggunakan Vercel Edge Functions, tetapi itu menambah terlalu banyak kompleksitas.

Perbaikan sederhana

Satu-satunya perubahan kode yang diperlukan adalah mengganti konstanta yang menentukan interval penyegaran:

  • Dari 30 detik5 menit
  • Kemudian 5 menit15 menit

Pada interval 15 menit, Neon memiliki waktu yang cukup untuk mengenali ketidakaktifan dan melakukan spin down pada sumber daya komputasinya. Dashboard tetap berfungsi: pengguna masih dapat melihat data terbaru saat mereka menyegarkan secara manual, dan polling otomatis sesekali akan menangkap siaran baru tanpa interaksi yang terus-menerus.

Mengapa tetap melakukan polling di sisi klien?

  1. Kesederhanaan – Tidak memerlukan fungsi serverless atau langkah build tambahan.
  2. Ekspektasi pengguna – Dashboard sudah berperilaku seperti aplikasi klien; klik manual tetap memberikan pembaruan instan.
  3. Keselarasan model biaya – Neon menagih per detik komputasi, bukan per permintaan, sehingga mengurangi frekuensi secara langsung memangkas tagihan.

Pelajaran bagi pengembang serverless

  • Sesuaikan frekuensi polling dengan ritme pembaruan data Anda di dunia nyata. Jika kumpulan data hanya berubah beberapa kali dalam satu jam, interval 15 menit sering kali sudah cukup.
  • Polling yang sering dalam lingkungan serverless adalah pendorong biaya tersembunyi; satu permintaan tambahan per menit dapat mencegah database untuk melakukan scale down.
  • Penyesuaian konfigurasi kecil dapat menghasilkan penghematan besar tanpa perlu perombakan arsitektur.

Intinya: satu perubahan konstanta mengubah database yang terus aktif menjadi komponen serverless sejati, memangkas pengeluaran komputasi sambil tetap mempertahankan kegunaan dashboard. Bagi tim mana pun yang menjalankan Neon atau layanan komputasi per-detik serupa, meninjau kembali interval polling adalah langkah cepat yang layak diuji hari ini.