Menghitung gaji ratusan karyawan atau mengimpor ribuan baris Excel di dalam satu request HTTP adalah resep timeout dan UI yang membeku. Di Dexova, semua pekerjaan berat berjalan sebagai job async yang bisa dipantau. Ini pola yang membuatnya andal, bukan sekadar 'dipindah ke background'.
Idempotency lebih penting daripada yang terlihat
Job bisa dijalankan ulang: worker mati di tengah jalan, jaringan hiccup, retry otomatis. Kalau job tidak idempoten, retry menggandakan efeknya — payroll dihitung dua kali, stok dikurangi dua kali.
Kuncinya adalah ID job yang stabil dan pengecekan 'sudah dikerjakan belum' sebelum efek terjadi. Untuk job terjadwal, ID yang mengandung tanggal mencegah dua replika mengeksekusi tugas harian yang sama.
Retry yang aman, dan tahu kapan menyerah
Kegagalan sementara (DB sibuk, API pihak ketiga lambat) layak di-retry dengan backoff. Kegagalan permanen (data tidak valid) tidak — retry hanya membuang waktu dan menutupi masalah.
Bedakan keduanya secara eksplisit: kesalahan yang tidak akan pernah berhasil harus menghentikan retry dan masuk ke dead-letter untuk diperiksa manusia, bukan berputar selamanya.
Progress yang terlihat mengubah pengalaman
Payroll run di Dexova bukan tombol yang lalu senyap. HR menekannya, melihat progres, dan mendapat hasil yang bisa diperiksa sebelum finalisasi. Pekerjaan yang lama tanpa umpan balik terasa seperti rusak — meski sebenarnya berjalan baik.
Pola yang sama dipakai untuk bulk import karyawan: unggah, proses di background, dan laporan baris mana yang gagal beserta alasannya — bukan satu error generik yang menggagalkan seluruh file.
Ringkasan
Memindahkan pekerjaan berat ke background hanya setengah pekerjaan. Setengah lainnya: idempoten supaya retry aman, membedakan gagal sementara vs permanen, dan menampilkan progres supaya manusia percaya sistemnya bekerja.