Otomasi Bisnis yang Tahan Error: Memahami Idempotensi, Retry, dan Duplicate Prevention
Automation gagal bukan hanya saat proses berhenti, tetapi juga saat aksi yang sama berjalan dua kali. Pelajari cara merancang retry, idempotency key, logging, dan kontrol duplikasi agar integrasi bisnis lebih aman.
Automation sering dipromosikan sebagai cara menghilangkan pekerjaan manual. Namun ketika sebuah workflow menyentuh pembayaran, CRM, stok, email, atau pembuatan order, kesalahan kecil dapat menghasilkan masalah besar.
Salah satu risiko yang paling sering terlewat adalah aksi yang berjalan dua kali. Pelanggan menerima dua invoice, stok berkurang dua kali, lead tercatat ganda, atau email konfirmasi dikirim berulang. Sistem terlihat aktif, tetapi hasil bisnisnya tidak dapat dipercaya.
Mengapa automation bisa menjalankan aksi dua kali?
Integrasi modern biasanya bekerja melalui API, webhook, scheduler, atau antrean. Kegagalan jaringan dapat membuat sistem pengirim tidak menerima konfirmasi, meskipun sistem penerima sebenarnya sudah memproses permintaan.
Karena tidak yakin, sistem pengirim melakukan retry. Jika sistem penerima tidak mampu mengenali bahwa permintaan tersebut pernah diproses, aksi yang sama terjadi kembali.
Duplikasi juga dapat muncul karena pengguna menekan tombol dua kali, webhook dikirim ulang, job berjalan bersamaan, atau worker aktif kembali setelah timeout.
Apa itu idempotensi?
Idempotensi adalah sifat sebuah operasi yang tetap menghasilkan kondisi akhir yang sama meskipun permintaan identik dijalankan lebih dari sekali.
Contoh sederhana: memperbarui status order menjadi “paid” dapat dibuat idempoten. Menjalankannya dua kali tetap menghasilkan satu order berstatus paid. Sebaliknya, perintah “tambahkan satu transaksi baru” tidak otomatis idempoten karena setiap eksekusi dapat membuat record tambahan.
Gunakan idempotency key
Idempotency key adalah penanda unik untuk satu tindakan bisnis. Kunci ini dikirim bersama permintaan dan disimpan oleh sistem penerima.
Jika permintaan dengan kunci yang sama datang kembali, sistem tidak menjalankan aksi dari awal. Sistem dapat mengembalikan hasil sebelumnya atau menandai bahwa permintaan sudah diproses.
Contoh kunci yang baik
- ID pembayaran dari payment gateway;
- ID order ditambah jenis aksi;
- ID submission form;
- ID event webhook;
- kombinasi customer, periode, dan jenis tagihan.
Hindari menggunakan timestamp saja karena dua permintaan berbeda dapat terjadi pada waktu yang berdekatan, sementara retry dari satu permintaan dapat membawa timestamp baru.
Retry harus memiliki aturan
Retry penting untuk menghadapi gangguan sementara, tetapi retry tanpa batas justru memperbesar masalah.
Sebuah strategi retry sebaiknya menentukan:
- jenis error yang boleh dicoba ulang;
- jumlah percobaan maksimum;
- jeda antarpercobaan;
- kapan proses dipindahkan ke antrean pemeriksaan;
- siapa yang menerima notifikasi ketika kegagalan berulang.
Gunakan exponential backoff
Exponential backoff menambah jeda setiap kali percobaan gagal. Misalnya, sistem mencoba lagi setelah 2 detik, 4 detik, 8 detik, lalu 16 detik.
Pendekatan ini memberi waktu bagi layanan yang bermasalah untuk pulih dan mengurangi risiko membanjiri server dengan permintaan berulang.
Bedakan error sementara dan error permanen
Tidak semua kegagalan layak di-retry.
Error timeout, koneksi terputus, atau layanan sementara tidak tersedia biasanya dapat dicoba kembali. Namun token tidak valid, format data salah, field wajib kosong, atau akses ditolak membutuhkan perbaikan data atau konfigurasi.
Mencoba ulang error permanen hanya memenuhi log dan membuang resource.
Gunakan status proses yang jelas
Workflow yang baik tidak hanya memiliki status berhasil atau gagal. Gunakan status seperti:
- pending;
- processing;
- completed;
- retrying;
- failed;
- needs review.
Status ini membantu tim melihat posisi transaksi dan mencegah dua worker memproses record yang sama secara bersamaan.
Logging harus dapat menjawab pertanyaan bisnis
Log teknis sering hanya berisi pesan error. Untuk operasional bisnis, log juga harus mencatat konteks:
- ID customer, order, atau lead;
- nama workflow;
- waktu mulai dan selesai;
- idempotency key;
- jumlah percobaan;
- respons dari sistem tujuan;
- status akhir;
- tindakan manual yang dilakukan.
Dengan konteks ini, tim dapat menjawab apakah pelanggan terdampak, apakah data sudah masuk, dan apakah aksi perlu diulang secara manual.
Siapkan dead-letter queue atau daftar pemeriksaan
Ketika retry maksimum sudah tercapai, data jangan langsung dibuang. Pindahkan ke dead-letter queue atau daftar khusus untuk pemeriksaan.
Tim kemudian dapat melihat penyebab kegagalan, memperbaiki data, dan menjalankan ulang proses dengan aman tanpa membuat transaksi duplikat.
Contoh pada workflow lead website
Misalnya, form website mengirim data ke CRM, email, dan WhatsApp internal. Workflow yang tahan error dapat bekerja seperti ini:
- submission mendapat ID unik;
- sistem memeriksa apakah ID pernah diproses;
- lead dibuat atau diperbarui di CRM;
- status setiap integrasi dicatat terpisah;
- integrasi yang timeout di-retry dengan jeda;
- aksi yang berhasil tidak diulang;
- kegagalan permanen masuk daftar review.
Dengan desain ini, kegagalan WhatsApp tidak harus membuat lead CRM tercatat dua kali.
Contoh pada pembayaran dan order
Webhook pembayaran dapat dikirim lebih dari sekali. Sistem sebaiknya menggunakan ID transaksi payment gateway sebagai idempotency key, memeriksa status order saat ini, lalu hanya menjalankan fulfillment jika transisi status memang valid.
Pengurangan stok, pembuatan invoice, dan notifikasi pelanggan juga perlu memiliki kontrol duplikasi masing-masing.
FAQ
Apakah semua automation membutuhkan idempotensi?
Semakin besar dampak sebuah aksi, semakin penting idempotensi. Proses yang membuat transaksi, mengubah stok, mengirim tagihan, atau memperbarui status pelanggan wajib mendapat perhatian khusus.
Apakah platform no-code sudah menangani duplikasi?
Sebagian platform menyediakan retry dan riwayat eksekusi, tetapi tidak semua memahami aturan bisnis Anda. Kontrol unik pada database dan pemeriksaan status tetap sering diperlukan.
Apakah retry bisa dilakukan manual?
Bisa, asalkan sistem mencatat langkah yang sudah berhasil dan menggunakan kunci unik. Menjalankan ulang seluruh workflow tanpa pemeriksaan dapat menciptakan duplikasi.
Kesimpulan
Automation yang baik bukan hanya automation yang berjalan saat semua layanan normal. Automation yang baik tetap menghasilkan data yang benar ketika jaringan lambat, webhook dikirim ulang, atau satu integrasi gagal.
Idempotency key, retry terkontrol, status proses, logging kontekstual, dan daftar pemeriksaan membuat sistem lebih dapat dipercaya serta mengurangi biaya koreksi manual.
Bangun automation yang lebih aman bersama Wirasena Digital
Wirasena Digital membantu bisnis menghubungkan website, CRM, payment gateway, notifikasi, database, dan sistem operasional dengan workflow yang terukur. Hubungi kami untuk merancang automation yang tidak hanya cepat, tetapi juga tahan error dan mudah diaudit.
START A PROJECT
Have a project in mind? Let's talk.
We help teams ship clarity-first websites, e-commerce, and automations.
Contact Wirasena