Seorang pembangun mengurangkan caj pengiraan pangkalan data serverless Neon dengan memanjangkan selang masa pengundian (polling) di bahagian klien daripada 30 saat kepada 15 minit. Jeda yang lebih lama membolehkan pangkalan data berada dalam keadaan pegun (idle) cukup lama untuk berskala ke sifar (scale to zero), sekali gus menghapuskan kredit pengiraan yang sepatutnya digunakan oleh pengundian 30 saat yang berterusan.

Neon mengenakan caj bagi setiap saat enjin pengiraannya berjalan. Dalam tetapan serverless tipikal, sebarang permintaan—tidak kira betapa kecil sekalipun—akan memastikan enjin tersebut kekal aktif. Papan pemuka TV penulis melakukan pertanyaan (query) ke pangkalan data setiap setengah minit, walaupun data yang dipaparkan hanya berubah apabila pengguna melakukan penyinkronan secara manual atau siaran baharu bermula. Corak tersebut menghalang kumpulan pengiraan Neon daripada mencapai keadaan sifar yang menghentikan pengebilan, seterusnya menyebabkan lonjakan kos yang kerap pada papan pemuka kos Vercel.

Mengapa pengundian asal itu penting

  • Papan pemuka tersebut merupakan komponen React di bahagian klien sepenuhnya, jadi setiap instans pelayar mengakses Neon secara terus.
  • Harga Neon mengaitkan kos dengan masa pengiraan aktif, bukan jumlah permintaan, jadi satu akses setiap 30 saat mengekalkan caj asas.
  • Pemantauan Vercel penulis menunjukkan korelasi antara trafik dan penggunaan pengiraan Neon, mengesahkan bahawa pengundian tersebut memastikan pangkalan data kekal aktif.

Percubaan penyelesaian yang gagal

Teknik debounce yang pantas—menangguhkan permintaan selepas interaksi terakhir pengguna—tidak membantu kerana pemasa masih berfungsi setiap 30 saat. Saya juga cuba menggunakan Vercel Edge Functions, tetapi ia menambah terlalu banyak kerumitan.

Penyelesaian mudah

Satu-satunya perubahan kod yang diperlukan hanyalah menggantikan pemalar (constant) yang menentukan selang masa penyegaran:

  • Daripada 30 saat5 minit
  • Kemudian 5 minit15 minit

Pada 15 minit, Neon mempunyai masa yang mencukupi untuk mengesan ketidakaktifan dan menghentikan sumber pengiraannya (spin down). Papan pemuka tetap berfungsi: pengguna masih dapat melihat data terkini apabila mereka menyegarkan secara manual, dan pengundian automatik sekali-sekala dapat mengesan siaran baharu tanpa gangguan komunikasi yang berterusan.

Mengapa kekalkan pengundian di bahagian klien?

  1. Kesederhanaan – Tiada fungsi serverless atau langkah binaan (build steps) tambahan.
  2. Jangkaan pengguna – Papan pemuka sudah berfungsi seperti aplikasi klien; klik manual masih memberikan kemas kini serta-merta.
  3. Penjajaran model kos – Neon mengenakan caj mengikut saat pengiraan, bukan mengikut permintaan, jadi mengurangkan kekerapan akan mengurangkan bil secara langsung.

Pengajaran untuk pembangun serverless

  • Sesuaikan kekerapan pengundian dengan rentak kemas kini data dunia nyata anda. Jika set data hanya berubah beberapa kali sejam, selang masa 15 minit selalunya sudah mencukupi.
  • Pengundian yang kerap dalam persekitaran serverless adalah pemacu kos tersembunyi; satu permintaan tambahan setiap minit boleh menghalang pangkalan data daripada berskala ke bawah (scaling down).
  • Perubahan konfigurasi kecil boleh menghasilkan penjimatan yang besar tanpa memerlukan rombakan seni bina.

Kesimpulannya: satu perubahan pemalar tunggal telah mengubah pangkalan data yang sentiasa aktif kepada komponen serverless yang sebenar, mengurangkan perbelanjaan pengiraan sambil mengekalkan kegunaan papan pemuka. Bagi mana-mana pasukan yang menggunakan Neon atau perkhidmatan pengiraan per-saat yang serupa, menyemak semula selang masa pengundian adalah satu kejayaan pantas yang berbaloi untuk diuji hari ini.