Idempotent Nedir?

İngilizce: Idempotent

Idempotent işlem, aynı isteğin birkaç kez çalışması durumunda sistemde tek çalıştırmayla aynı nihai sonucu bırakan işlemdir.

Idempotent Nedir?

Idempotent işlem, aynı komut birden fazla kez çalıştırılsa bile sistemin nihai durumunu değiştirmeyen işlemdir. “Bu kullanıcının e-posta adresini a@ornek.com yap” komutu tekrarlandığında sonuç aynı kalır; “bakiyeden 100 TL düş” komutu tekrarlandığında sonuç her seferinde değişir.

HTTP’de GET, HEAD, PUT ve DELETE semantik olarak idempotent kabul edilir. GET veri okumalıdır; PUT bir kaynağı belirtilen tam hale getirir; DELETE aynı kaynağı tekrar silmeye çalışsa da sonuçta kaynak yoktur. POST ise genellikle yeni işlem başlattığı için idempotent değildir.

Neden Önemlidir?

Dağıtık sistemlerde ağ kopması, zaman aşımı veya istemci yeniden denemesi sık görülür. İstemci “istek sunucuya ulaştı mı?” sorusunun cevabını bilemeyebilir. İdempotent tasarım, aynı isteğin güvenle tekrar denenebilmesini sağlar ve özellikle API entegrasyonlarında belirsizliği azaltır.

Pratik Tasarım

Kaynak odaklı REST API tasarımında metot semantiği doğru seçilmeli, yazma işlemleri benzersiz kısıtlar ve transaction ile korunmalıdır. Doğal olarak idempotent olmayan ödeme veya sipariş oluşturma gibi akışlarda idempotency key kullanılır.