SingleFlight: Teknik Cerdas yang Membuat Aplikasi Lebih Cepat Tanpa Tambah Server

Dalam pengembangan aplikasi backend atau frontend modern, kita sering menghadapi situasi banyak permintaan (request) yang sama terjadi bersamaan — misalnya dari server, UI, atau service lain. Jika setiap permintaan memicu fungsi yang sama secara bersamaan, hal itu dapat menyebabkan:
- Beban berlebih pada database atau API eksternal
- Redundant execution yang sia-sia
- Potensi throttling atau rate limit
Masalah seperti ini sangat umum tetapi sering tidak dibahas secara detail dalam banyak artikel — padahal solusinya sangat elegan dan powerful: yakni pola SingleFlight.
Apa itu SingleFlight?
SingleFlight adalah pola di mana fungsi async yang sedang “in-flight” (sedang berjalan) hanya dijalankan satu kali per key tertentu, lalu permintaan lainnya yang memanggil fungsi tersebut dengan key yang sama akan menunggu hasil dari eksekusi pertama dan mendapatkan hasil yang sama, tanpa menjalankannya lagi.
Jika dipanggil 10 kali secara bersamaan dengan key "user-123", hanya 1 panggilan real ke data API/DB yang dieksekusi. Semua caller menerima hasil yang sama secara otomatis.
Mengenal Package Flyonce
Package flyonce adalah implementasi SingleFlight + caching dibuat oleh wahyu agus arifin, ditulis dalam TypeScript dan kompatibel dengan Bun (juga Node, etc).
Fitur utama:
- Mencegah duplicate function calls untuk key yang sama
- Mendukung caching dengan TTL (Time To Live)
- Handling error secara aman (tidak menyimpan hasil error ke cache)
- Ringan, zero dependencies
- Cocok untuk high concurrency workload
Contoh
Dengan cara ini, hanya 1 call ke API/DB yang akan berjalan; sisanya menunggu dan otomatis memperoleh hasil yang sama.
Kenapa Ini Penting?
Pola SingleFlight & package seperti flyonce sangat berguna di banyak kasus nyata:
- Rate Limiting API
- Optimasi query berat ke database
- Microservices yang sering dipanggil bersamaan
- Cache warming tanpa stampede
- React/Vue data fetching yang paralel
Tanpa pola ini, setiap request akan memicu eksekusi fungsi yang sama berkali-kali, yang bisa menyebabkan spike beban, latency meningkat, bahkan biaya infrastruktur lebih tinggi.
Manfaat Utama
- Hemat resource
- Response konsisten
- Ringan dan mudah pakai
- Cocok dipakai di server & client alike
Kesimpulan
SingleFlight adalah pattern yang simple namun powerful untuk mengatur concurrent async tasks yang sama. Package flyonce menghadirkan solusi tersebut dengan tambahan cache, TTL, dan API yang simpel — menjadikannya alat yang sangat berguna dalam skala produksi.