E-Ticaret

Pazaryeri Entegrasyonlarında Çifte Satışı Önleme: Redis Kilitleri ve Kuyruk Mimarisiyle Yarış Koşulu Çözümü

03 Nov 2026
8 dakika okuma
Ininia Teknoloji
12

Pazaryeri entegrasyonlarında sıklıkla karşılaşılan, stok yanlış görünümü ve çifte satış (overselling) sorunları, eşzamanlı siparişler nedeniyle oluşan yarış koşullarından kaynaklanır. Bu tür stok tutarsızlıklarını tamamen engellemek için, dağıtık kilit mekanizması (Redis Redlock), kuyruk tabanlı olay mimarisi ve idempotent API çağrıları kurgulamak esastır. Bu mimari, stok güncellemelerinin tutarlı ve güvenilir bir şekilde işlenmesini sağlayarak, yoğun yük altında bile veri bütünlüğünü korur.

Yarış Koşulları: Pazaryeri Stok Yönetiminin Gizli Tuzakları

Yarış koşulları (race conditions), birden fazla işlemin aynı anda paylaşılan bir kaynağa (bu durumda stok miktarı) erişmeye ve onu değiştirmeye çalıştığı durumlarda ortaya çıkar. E-ticaret bağlamında, bir ürünün stoğu azaldığında, aynı anda birden fazla pazaryerinden veya kendi e-ticaret sitenizden sipariş gelebilir. Her bir sipariş, stoğu okur, azaltır ve günceller. Eğer bu işlemler atomik (bölünemez) bir şekilde yapılmazsa, stok değeri yanlış hesaplanabilir ve çifte satışa yol açabilir.

Örneğin, bir ürünün stoğu 1 iken, iki farklı müşteri aynı anda bu ürünü satın almak ister. Her iki sipariş işleme alındığında, sistem stoğu 1 olarak okur, her iki işlem de stoğu 0'a düşürdüğünü varsayar ve iki sipariş de onaylanır. Elinizde sadece 1 adet ürün varken 2 adet satış yapmış olursunuz.

Bu durum, müşteri memnuniyetsizliğine, iptallere ve operasyonel maliyetlere neden olur. Özellikle Trendyol, Hepsiburada gibi büyük pazaryerlerinin API'leri üzerinden yapılan pazaryeri entegrasyonları, bu tür senaryolara karşı savunmasız kalabilir.

Dağıtık Kilit Mekanizması: Redis Redlock ile Güvenli Stok Azaltma

Yarış koşullarını önlemenin temel yollarından biri, paylaşılan kaynağa erişimi senkronize etmektir. Dağıtık sistemlerde bu, dağıtık kilitler aracılığıyla sağlanır. Redis tabanlı bir dağıtık kilit algoritması olan Redlock, birden fazla Redis sunucusu üzerinde kilitler oluşturarak daha yüksek güvenilirlik sunar. Bu mekanizma, bir stok azaltma işlemi başlatılmadan önce ilgili ürün için bir kilit alınmasını garanti eder. Kilit alındığında, başka hiçbir işlemin aynı ürünün stoğunu eşzamanlı olarak değiştirmesine izin verilmez.

Redlock'un çalışma prensibi aşağıdaki gibidir:

  1. İstemci, bağımsız Redis sunucularının çoğunluğundan (quorum) kilit almaya çalışır.
  2. Her bir kilit isteği, belirli bir süre (lease time) için geçerli olacak şekilde bir anahtar ve rastgele bir değerle yapılır.
  3. Eğer istemci, çoğunluktan kilit almayı başarırsa ve kilit alma süresi, belirlenen lease time'dan kısaysa, kilit başarılı kabul edilir.
  4. Kilit alındıktan sonra stok azaltma işlemi gerçekleştirilir.
  5. İşlem tamamlandığında veya kilit süresi dolduğunda, kilit serbest bırakılır.

Bu yaklaşım, tek bir Redis sunucusunun çökmesi durumunda bile sistemin kilit bütünlüğünü korumasını sağlar. Kilit mekanizması, stok azaltma işleminin atomik bir şekilde gerçekleştiğinden emin olmak için kritik öneme sahiptir. Ancak, kilitlerin doğru yönetimi ve potansiyel performans darboğazları göz önünde bulundurulmalıdır. Kilit süresi (lease time) çok kısa olursa, işlem bitmeden kilit serbest kalabilir; çok uzun olursa, başarısız bir işlem kilidi gereksiz yere tutabilir.

Kuyruk Tabanlı Olay Mimarisi: Asenkron İşlem Güvencesi

Dağıtık kilitler, anlık yarış koşullarını çözse de, sistemin genel ölçeklenebilirliği ve hataya dayanıklılığı için kuyruk tabanlı bir olay mimarisi vazgeçilmezdir. Bu mimaride, stok azaltma veya güncelleme gibi kritik işlemler doğrudan değil, bir mesaj kuyruğuna olay olarak gönderilerek işlenir. Bu sayede, gelen siparişlerin ani yoğunluğu (spike) doğrudan ana işlem katmanına yük bindirmez ve sistemin stabil kalmasını sağlar.

Kuyruk mimarisinin faydaları:

  • Asenkron İşleme: Sipariş alındığında stok güncellemesi anında yapılmak yerine kuyruğa atılır, böylece sipariş onay süresi kısalır ve kullanıcı deneyimi iyileşir.
  • Yük Dengeleme ve Ölçeklenebilirlik: Kuyruklar, gelen istekleri absorbe ederek iş yükünü dengeleyebilir. Arka plandaki işleyiciler (worker'lar) ihtiyaca göre ölçeklenebilir.
  • Hataya Dayanıklılık: Bir işleyici başarısız olduğunda, mesaj kuyrukta kalır ve başka bir işleyici tarafından tekrar denenebilir. Bu, veri kaybını önler.
  • Ayırma (Decoupling): Farklı servisler (sipariş, stok, pazaryeri entegrasyonu) birbirlerinden bağımsız hale gelir, bu da sistemin bakımını ve gelişimini kolaylaştırır.

Bir sipariş geldiğinde, stok azaltma isteği bir olay olarak kuyruğa eklenir. Kuyruk işleyicileri bu olayları sırayla tüketir. Her bir işleyici, bir stok azaltma olayını işlerken yukarıda bahsedilen Redis Redlock mekanizmasını kullanarak ilgili ürünün stoğunu güvenli bir şekilde günceller. Bu, birden fazla işleyicinin aynı anda çalışsa bile stok tutarsızlıkları yaratmamasını sağlar.

İdempotent API Çağrıları: Tekrarlanabilir ve Hataya Dayanıklı Entegrasyon

Kuyruk tabanlı mimaride, mesajların birden fazla kez işlenmesi (at-least-once delivery) veya ağ hataları nedeniyle API çağrılarının tekrar denenmesi olasıdır. Bu senaryolarda, marketplace API'lerine yapılan çağrıların idempotent olması kritik öneme sahiptir. İdempotent bir işlem, aynı isteğin birden fazla kez yapılması durumunda sistemde yalnızca bir kez etki yaratması anlamına gelir. Örneğin, bir stok azaltma çağrısı iki kez yapılsa bile, stok sadece bir kez azalmalıdır.

İdempotent API çağrıları tasarlamak için genellikle benzersiz bir istek kimliği (request ID) kullanılır. Bu kimlik, her bir stok güncelleme isteğiyle birlikte pazaryeri API'sine gönderilir. Pazaryeri sistemi, bu kimliği kullanarak isteğin daha önce işlenip işlenmediğini kontrol eder. Eğer daha önce işlenmişse, işlemi tekrar yapmaz, sadece önceki başarılı yanıtı döndürür. Bu, hatalı veya tekrarlanan çağrıların çifte stok azaltmaya yol açmasını engeller.

Örnek bir idempotent çağrı mekanizması şu adımları içerebilir:

  1. Her stok güncelleme isteği için benzersiz bir UUID (Universally Unique Identifier) oluşturulur.
  2. Bu UUID, API çağrısının bir parçası olarak (örneğin, X-Request-ID başlığı altında) pazaryeri API'sine gönderilir.
  3. Pazaryeri API'si, gelen X-Request-ID'yi kendi tarafında bir veritabanında veya Redis'te depolar.
  4. Eğer aynı X-Request-ID ile bir istek daha gelirse, sistem bu isteği zaten işlenmiş olarak kabul eder ve işlemi tekrar etmez.

Bu yöntem, hem kendi sisteminizdeki kuyruk işleyicilerinin güvenliğini artırır hem de dış pazaryeri API'leri ile olan entegrasyonunuzu daha sağlam hale getirir. Pazaryerlerinin API dokümantasyonları (bkz. Trendyol/Hepsiburada/N11 API belgeleri), idempotent çağrıları destekleyip desteklemedikleri veya nasıl kurgulanması gerektiği konusunda bilgi sağlayabilir.

Pazaryeri Entegrasyonlarında Tuzağa Düşmemek İçin Karar Kriterleri

Stok senkronizasyonu mimarisi kurgularken, farklı yaklaşımların getirdiği avantaj ve dezavantajları değerlendirmek önemlidir. Aşağıdaki tablo, yaygın yaklaşımları ve hangi durumda tercih edilmesi gerektiğini özetlemektedir:

Yaklaşım Açıklama Avantajları Dezavantajları Ne Zaman Tercih Edilmeli?
Basit Veritabanı Kilidi İşlem sırasında veritabanı satır kilidi kullanma. Kolay implementasyon, tek sunuculu sistemler için yeterli. Dağıtık sistemlerde yetersiz, performans darboğazı. Çok düşük hacimli, tek sunuculu sistemler.
Redis Kilitleri (Redlock) Dağıtık kilitler ile stok azaltma işlemini senkronize etme. Dağıtık sistemlerde yarış koşullarını önler, görece hızlı. Performans darboğazı yaratabilir, kilit yönetimi karmaşık. Orta hacimli, dağıtık sistemlerde anlık tutarlılık ihtiyacı.
Kuyruk Mimarisi + Redis Kilitleri Stok güncellemelerini kuyruğa atıp, işleyicilerde kilit kullanarak işleme. Yüksek ölçeklenebilirlik, hataya dayanıklılık, yarış koşulu çözümü. Daha yüksek mimari karmaşıklık, gecikme (latency). Yüksek hacimli, kritik stok yönetimi gerektiren sistemler.
Kuyruk Mimarisi + Redis Kilitleri + İdempotent API Yukarıdakilere ek olarak dış API çağrılarında tekrarlanabilirlik sağlama. En üst düzey güvenilirlik ve tutarlılık, dış entegrasyonlarda sağlamlık. En karmaşık implementasyon, tüm bileşenlerin doğru çalışması gerekir. Çok yüksek hacimli, birden fazla pazaryeri entegrasyonu olan kritik e-ticaret sistemleri.

Bu yaklaşımlar arasında seçim yaparken mevcut iş yükünüzü, büyüme beklentilerinizi ve operasyonel maliyetlerinizi göz önünde bulundurmanız gerekir. En karmaşık çözüm, en güvenilir olanıdır ancak aynı zamanda en yüksek geliştirme ve bakım maliyetine sahiptir. Eğer bu tür e-ticaret altyapılarını kendi ekibinizle kurmakta zorlanıyorsanız, dışarıdan bu yetkinliği sağlayabilecek bir iş ortağıyla çalışmak zaman ve maliyet açısından daha verimli olabilir.

Bu konuda bir yazılım projesi mi planlıyorsunuz?

Projenizi birlikte analiz edip teknik yol haritasını çıkarabiliriz. Ücretsiz keşif görüşmesi için hemen yazın.

Ininia Teknoloji

İstanbul Teknik Üniversitesi ARI Teknokent'te kurulu Ininia Teknoloji, 12+ yıllık deneyimle AR/VR, yapay zeka ve mobil uygulama alanlarında yenilikçi çözümler sunmaktadır.

Projeniz için profesyonel destek mi arıyorsunuz?

12+ yıllık deneyimimizle dijital dönüşümünüzü hızlandıralım.

Ücretsiz Görüşme Talep Et