⚡ Geliştirme

Retry ve Exponential Backoff ile Sağlam API İstemcisi

18 Ekim 2026· 2 dk okuma· Apicloud Blog
⚡

Neden Hata Toleransı Gerekli?

API çağrıları her zaman kusursuz çalışmaz; ağ gecikmeleri, geçici sunucu yükleri veya ara sunucu hataları gibi öngörülemeyen durumlar ortaya çıkabilir. Güvenilir bir uygulama, bu geçici başarısızlıklarda donmaz, kullanıcıya ani bir hata mesajı göstermez veya işlemi kaybetmez. Bunun yerine istemci tarafında ek denemeler yaparak ve gereksiz baskı oluşturmamak için zaman aralıklarını yöneterek sistemi ayakta tutar.

Temel Retry Mantığı

Tekrar deneme mantığı, belirli koşullar altında isteğin otomatik olarak yeniden gönderilmesidir. Tüm hataları tekrar denemek doğru olmaz; bağlantı kopması, zaman aşımı veya 429 Too Many Requests gibi geçici durumlar önceliklendirilirken, 400 Bad Request veya 401 Unauthorized gibi müşteriden kaynaklanan hatalar genellikle tekrar denemeye değer değildir.

Ayrıca her hatada aynı hızla tekrar denemek, sunucuyu boğabilir veya sorunu çözmez. Bu yüzden denemeler arasında bilgilendigim bir bekleme süresi kullanmak gerekir.

Exponential Backoff Nasıl Çalışır?

Üstel geri çekilme, her başarısız denemeden sonra bekleme süresinin katlanarak artırdığı bir stratejidir. Temel formül şu şekilde düşünülebilir:

bakleme_suresi = taban^(deneme_numarasi) + rasgele_jitter

Örneğin ilk deneme 1 saniye, ikinci 2 saniye, üçüncü 4 saniye gibi ilerler. Bu yaklaşım iki önemli fayda sağlar:

  • Geçici baskı anında azalır ve sunucu kendini toplama şansına kavuşur.
  • Çok sayıda istemci aynı anda başarısız olduğunda çarpışma olasılığı düşer.

Jitter Eklemek Neden Önemli?

Sadece üstel artış yeterli olmayabilir; özellikle çok istemci varsa hepsi aynı anda tekrar deneme eğrisini takip edebilir ve toplu dalgalanma yaratabilir. Jitter, bekleme süresine küçük bir rastgelelik ekleyerek bu korelasyonu dağıtır. Örneğin hesaplanan bekleme süresine artı eksi yüzde yirmilik bir değer eklemek çoğu senaryoda yeterlidir.

Uygulama Tavsiyeleri

  • Maksimum deneme sayısı belirle ve aşıldığında kullanıcıyı ya da sistemi uygun şekilde bilgilendir.
  • Hangi HTTP durum kodlarının ve istisna türlerinin yeniden deneneceğini net sınırlarla tanımla.
  • Son denemeye yaklaşıldığında hata mesajını sadeleştir ve gerekirse yerel kuyruk ile asenkron tekrar deneyebileceğin bir yapı kur.
  • Sürekli başarısızlık durumunda devreye giren bir devre kesici modelini değerlendir; böylece sunucu iyileşene kadar gereksiz istekler engellenir.
  • Zaman aşımı değerlerini gerçekçi tut ve istekleri mümkünse idempotent hale getir ki tekrar denemeler yan etki yaratmasın.

Somut Bir Kullanım Bağlamı

Geliştiriciler, açık arayüzler üzerinden veri alışverişi yaptıklarında bu kalıpları uygulamak genellikle iş akışlarını daha stabil hale getirir. Örneğin apicloud.com.tr gibi platformlarla entegrasyon kurarken, istemcinin geçici ağ sorunlarına karşı dirençli olması hem geliştirici deneyimini hem de son kullanıcının uygulama kararlılığını doğrudan etkiler. API istemcinin doğru retry politikası, bu tür entegrasyonların uzun vadeli güvenilirliğinde küçük ama kritik bir fark yaratır.

Son Söz

Sağlam bir API istemcisi yazmak, sadece ilk isteğin başarılı olmasını değil, öngörülebilen aksaklıklar sırasında sistemin nasıl davranacağını da planlamayı gerektirir. Retry mantığı, üstel geri çekilme ve jitter kombinasyonu, geçici hataları sakin bir şekilde yönetmenin yerleşik yoludur. Maksimum deneme sınırı, tekrar denenecek hata kümesi ve zaman aşımı değerlerini uygulamanın ihtiyaçlarına göre ayarlayarak hem istemciyi hem de hedef servisi koruyabilirsin.

Hazır mısın?54+ model, tek API anahtarı, TL bakiye ile — apicloud.com.tr
API anahtarını al →

İlgili yazılar

← Tüm yazılar