Langsung ke konten

Arsip

API

6 artikel
Rekayasa Perangkat Lunak 22 Sep 2026 5 min read

Idempotency Key Menyatukan Retry sebagai Satu Operasi Logis

Idempotency Key Menyatukan Retry sebagai Satu Operasi Logis Client dapat kehilangan response dari request yang sebenarnya berhasil. Server mungkin sudah melakukan commit untuk charge, membuat order, atau memasukkan job ke queue, lalu koneksi gagal sebelum response mencapai caller. Dari sisi client, hasil operasi menjadi ambigu. Retry diperlukan untuk availability, tetapi retry biasa dapat mengulangi side effect. Idempotency key memberi cara bagi client untuk menyatakan bahwa beberapa percobaan HTTP mewakili satu operasi logis.

Rekayasa Perangkat Lunak 21 Sep 2026 6 min read

Idempotency Key Membuat Retry Mutasi Tetap Aman

Idempotency Key Membuat Retry Mutasi Tetap Aman Client dapat kehilangan hasil mutasi yang sukses tanpa kehilangan mutasinya. Server mungkin sudah melakukan commit untuk pembayaran, reservasi, atau pengiriman job lalu koneksi terputus sebelum response sampai ke caller. Dari sisi client, timeout menyisakan dua kemungkinan: operasi gagal sebelum commit, atau commit sudah terjadi dan hanya response yang hilang. Retry secara buta pada mutasi non-idempotent dapat menerapkan efek dua kali. Menolak setiap retry membuat caller tidak memiliki jalur pemulihan dari hasil yang ambigu. Idempotency key memberi identitas stabil untuk satu operasi logis, sehingga percobaan berulang dapat memakai hasil dari percobaan pertama yang diterima alih-alih membuat efek baru.

Rekayasa Perangkat Lunak 21 Sep 2026 6 min read

Idempotency Key Membatasi Mutasi Duplikat Saat Retry

Idempotency Key Membatasi Mutasi Duplikat Saat Retry Client dapat kehilangan respons dari mutasi yang sebenarnya berhasil. Server mungkin sudah melakukan commit untuk pembayaran, reservasi, atau submission job, lalu koneksi terputus sebelum respons mencapai caller. Dari sisi client, timeout tidak menunjukkan apakah mutasi gagal sebelum commit atau berhasil sebelum respons hilang. Retry diperlukan untuk menjaga availability, tetapi retry tanpa proteksi dapat mengulang side effect. Idempotency key memberi identitas stabil pada kedua attempt sehingga server dapat memperlakukannya sebagai satu operasi logis.

Rekayasa Perangkat Lunak 20 Sep 2026 6 min read

Idempotency Key Membuat Retry Write Aman Diulang

Idempotency Key Membuat Retry Write Aman Diulang Client dapat kehilangan response dari write yang sebenarnya sudah berhasil. Koneksi mungkin terputus setelah server mencatat pembayaran, membuat order, atau menjadwalkan job, tetapi sebelum response sampai ke caller. Dari sisi client, kegagalan dan keberhasilan dapat terlihat sama. Retry tanpa kontrol berbahaya untuk operasi dengan efek non-idempotent. Mengirim POST yang sama dua kali dapat membuat dua resource atau mengenakan charge dua kali. Tidak melakukan retry juga menyisakan outcome yang ambigu bagi caller.

Rekayasa Perangkat Lunak 19 Sep 2026 6 min read

Propagasi Deadline Membatasi Umur Request Lintas Service

Sebuah request dapat kehilangan kegunaannya sebelum semua proses yang menanganinya berhenti bekerja. HTTP client mungkin berhenti menunggu setelah dua detik, sementara service upstream masih menjalankan database query, RPC, dan rangkaian retry selama beberapa detik berikutnya. Operasi tersebut tetap memakai connection, CPU time, kapasitas queue, dan konkurensi downstream meski hasilnya sudah tidak memiliki penerima. Deadline membuat batas kegunaan itu eksplisit. Propagasi deadline melalui call bertingkat memberi komponen yang terlibat satu batas atas bersama yang berasal dari request awal. Ini berbeda dari pemberian timeout independen pada setiap hop: timeout lokal membatasi operasi individual, sedangkan deadline yang dipropagasikan membatasi umur seluruh graph operasi.

Rekayasa Perangkat Lunak 19 Sep 2026 6 min read

Idempotency Key Membatasi Keamanan Retry pada Identitas Request

Client dapat mengirim operasi logis yang sama lebih dari sekali meski hanya menginginkan satu efek. Timeout setelah POST /payments meninggalkan batas yang ambigu: server mungkin sudah melakukan commit pembayaran sementara client tidak menerima response. Retry memulihkan pengiriman, tetapi retry biasa dapat membuat pembayaran kedua. Idempotency key mengubah interface dengan memberi identitas request yang stabil pada percobaan berulang. Key tersebut bukan pengganti transactionality dan tidak membuat setiap operasi secara intrinsik idempotent. Key membentuk protokol antara client dan server: percobaan dengan key yang sama diperlakukan sebagai kandidat untuk operasi logis yang sama. Server tetap memerlukan aturan mengenai ekuivalensi request, kedatangan konkuren, masa persistensi, pemulihan kegagalan, dan replay response.