Bagikan melalui


Merancang Azure Functions untuk input identik

Realitas arsitektur berbasis kejadian dan pesan menentukan perlunya menerima permintaan yang identik sambil menjaga integritas data dan stabilitas sistem.

Sebagai gambaran, pertimbangkan tombol panggilan lift. Saat menekan tombol, ia menyala dan lift dikirim ke lantai Anda. Beberapa saat kemudian, orang lain bergabung dengan Anda di lobi. Orang ini tersenyum padamu dan menekan tombol yang menyala untuk kedua kalinya. Anda tersenyum kembali dan terkekeh pada diri sendiri karena diingatkan bahwa perintah untuk memanggil lift bersifat idempoten.

Menekan tombol panggilan lift untuk kedua, ketiga, atau keempat kalinya tidak berpengaruh pada hasil akhir. Ketika menekan tombol, mau berapa kali pun, lift dikirim ke lantai Anda. Sistem idempoten, seperti lift, menghasilkan hasil yang sama tidak peduli berapa kali perintah identik dikeluarkan.

Saat membangun aplikasi, pertimbangkan skenario berikut:

  • Apa yang terjadi jika aplikasi kontrol inventaris Anda mencoba menghapus produk yang sama lebih dari sekali?
  • Bagaimana aplikasi sumber daya manusia Anda berperilaku jika ada lebih dari satu permintaan untuk membuat catatan karyawan untuk orang yang sama?
  • Ke mana uang pergi jika aplikasi perbankan Anda mendapatkan 100 permintaan untuk melakukan penarikan yang sama?

Ada banyak konteks ketika permintaan ke fungsi mungkin menerima perintah yang identik. Situasinya meliputi:

  • Kebijakan percobaan kembali mengirim permintaan yang sama berkali-kali.
  • Perintah cache diputar ulang ke aplikasi.
  • Kesalahan aplikasi mengirim beberapa permintaan identik.

Untuk melindungi integritas data dan kesehatan sistem, aplikasi idempoten berisi logika yang mungkin berisi perilaku berikut:

  • Verifikasi keberadaan data sebelum mencoba menjalankan penghapusan.
  • Periksa apakah data sudah ada sebelum mencoba menjalankan tindakan buat.
  • Lakukan rekonsiliasi logika yang menciptakan konsistensi peristiwa dalam data.
  • Kontrol konkurensi.
  • Deteksi duplikasi.
  • Validasi kesegaran data.
  • Logika penjaga untuk memverifikasi data input.

Pada akhirnya idempotensi dicapai dengan memastikan tindakan yang diberikan dimungkinkan dan hanya dieksekusi sekali.

Langkah berikutnya