Saya merangkum insiden pengiriman duplikat push notification yang saya alami saat mengoperasikan aplikasi prakiraan selancar sebagai developer solo, beserta proses penyelesaiannya.
Ini adalah fitur umum yang mengirim notifikasi kepada pengguna ketika kondisi tertentu terpenuhi, tetapi setiap kali server di-redeploy,
masalah "notifikasi yang sudah dikirim" terkirim kembali terus berulang.
■ Masalah
- Notifikasi yang sama terkirim duplikat setiap kali redeploy/restart
- Sulit direproduksi di lokal, dan hanya muncul tepat setelah deployment sehingga penyebabnya sulit ditemukan
■ Penyebab
- Status pencegahan duplikasi (dedup) hanya disimpan di memori server
- Saat redeploy, proses baru berjalan dan status itu direset seluruhnya → dianggap "belum dikirim" lalu dikirim ulang
■ Solusi
- Mengubah struktur agar dedup key diisi ulang dari DB saat boot (seed-on-boot) → status tetap terjaga meski redeploy
- Juga ditemukan masalah bahwa pendekatan 'notifikasi hanya saat kondisi berubah' melewatkan perubahan bobot di antaranya
→ Beralih ke pendekatan yang mengakumulasi alasan dan menaikkannya secara bertahap (eskalasi) - Menata FCM token dengan prinsip 1 perangkat 1 token (termasuk pembaruan token dan penanganan token duplikat)
■ Pelajaran
- Jika status yang "harus terjadi hanya sekali" seperti dedup notifikasi hanya disimpan in-memory, deployment langsung menjadi bug
- Siklus hidup status harus dirancang berdasarkan penyimpanan persisten, bukan proses
- Trigger lebih kecil kemungkinan terlewat jika dinilai berdasarkan 'status saat ini' daripada 'momen transisi'
Ini adalah studi kasus praktis yang layak dijadikan referensi bagi mereka yang menangani push/notifikasi server, cron/batch, dan logika pencegahan duplikasi.
Belum ada komentar.