Pazaryeri Entegrasyonu

Pazaryeri Entegrasyon Yönetimi: Trendyol, Hepsiburada, Amazon

Trendyol, Hepsiburada, Amazon ve N11 için tek panelden stok, fiyat ve sipariş senkronizasyonu, otomatik ürün listeleme ve sipariş orkestrasyonu kurguluyoruz: over-sell, yanlış fiyat ve geç kargo riskini kaynağında kapatan bir entegrasyon katmanı.

Trendyol'da bir Excel, Hepsiburada'da ayrı bir panel, Amazon'da başka bir ekran, N11'de bambaşka bir akış. Türkiye'de çoklu pazaryerinde satan işletmelerin büyük çoğunluğu stoğu, fiyatı ve siparişi her kanalda elle, ayrı ayrı yönetiyor. Her kanal kendi gerçeğini tutuyor, hiçbiri diğerinden haberdar değil; aradaki tutarsızlığı ise bir kişi gün boyu sekme arasında gezinerek elle kapatmaya çalışıyor. Sonuçta üç tür kayıp aynı anda yaşanıyor: son adedi iki pazaryerinde birden satıp iptal etmek zorunda kalmak (over-sell), bir kanalda kampanya fiyatını güncellemeyi unutup zararına satmak, ve siparişi geç fark edip pazaryerinin teslim süresini (SLA) kaçırıp puan/ceza yemek. Bu üçü, ciro büyüdükçe katlanarak artan operasyonel bir borç: ürün adedi ve kanal sayısı arttıkça elle takip fiziksel olarak imkânsız hale geliyor. Pazaryeri entegrasyonu dediğimizde ilk müdahale ettiğimiz nokta tam olarak budur: stoğu, fiyatı ve siparişi tek bir merkezden, olay tabanlı ve idempotent şekilde tüm kanallara yayan; ürün listelemeyi otomatikleştiren ve sipariş akışını tek kuyrukta orkestre eden bir entegrasyon katmanı kurmak.

Kanal Başına Manuel Yönetimin Yarattığı Kayıplar

Son adet aynı anda iki pazaryerinde satılıyor (over-sell); sipariş iptal ediliyor, pazaryeri mağaza puanı düşüyor, müşteri kaybediliyor, iptal oranı arttıkça vitrin görünürlüğü de düşüyor.

Kampanya/zam fiyatı bir kanalda güncellenip diğerinde unutuluyor; ürün günlerce yanlış fiyattan satılıyor: ya zararına ya da rakipten pahalı kalıp hiç satılmadan.

Sipariş ofise geç düşüyor; pazaryerinin kargoya verme süresi (örneğin Trendyol'da belirli saat) kaçırılıyor, geç kargo cezası ve SLA ihlali yaşanıyor.

Her pazaryerinde ürünü ayrı ayrı, elle açmak gerekiyor; kategori ve zorunlu özellik eşleştirmesi kişiye bağlı, 200 ürünlük bir lansman günlerce sürüyor: listeleme hataları reddedilmiş ilanlara dönüyor.

Hangi kanalın gerçekten kâr ettiği görünmüyor; komisyon, kargo ve iade kalemleri kanal bazında ayrışmadığı için yönetim 'hangi pazaryerini büyütelim' sorusuna veriyle cevap veremiyor.

Yaklaşımımız

Pazaryeri entegrasyon projelerinde ilk kararımız her zaman tek bir doğruluk kaynağı belirlemek oluyor. Çoklu kanal kaosunun kökeni, her pazaryerinin kendi stok ve fiyatını ayrı tutması ve hiçbirinin diğerinden haberdar olmaması. Bu yüzden stoğu, fiyatı ve ürün master verisini merkezi bir PIM ve PostgreSQL üzerinde toplamayı; pazaryerlerini ise yalnızca bu merkezin yansıması olarak konumlandırmayı öneriyoruz. Hiçbir kanal kendi başına otorite değil; bir kanaldan gelen sipariş bile merkezi sayacı düşürmek için bir olay; pazaryeri o stoğun sahibi değil. Bu ilke baştan konmazsa, ne kadar hızlı senkron yaparsanız yapın over-sell tam olarak kapanmaz; çünkü iki ayrı otoritenin aynı adedi farklı bildiği bir anı her zaman yakalarsınız. Bu yüzden mimariye başlamadan önce hangi verinin nerede yaşayacağını netleştirmeyi tercih ediyoruz.

İkinci kritik karar olay tabanlı (event-driven) senkronizasyon. Stok veya fiyat değiştiğinde her kanalı tek tek dolaşıp güncellemek (polling) hem yavaş hem rate-limit yiyen bir yaklaşım; kanal sayısı arttıkça bu maliyet doğrusal değil, çarpan etkisiyle büyüyor. Bunun yerine değişikliği bir olay olarak RabbitMQ ya da Kafka'ya yayınlamayı, her pazaryeri için ayrı bir tüketici (consumer) servisinin bu olayı kendi API'sine yazmasını öneriyoruz. Bu mimari iki şeyi birden çözüyor: değişiklik saniyeler içinde tüm kanallara dağılıyor, ve her kanal kendi hızında çalışabildiği için biri yavaşsa ya da geçici olarak çökse diğerlerini bloklamıyor; kuyrukta bekleyen olaylar kanal toparlandığında işleniyor, hiçbir güncelleme kaybolmuyor. Sıcak veriyi (anlık stok, aktif sipariş) Redis'te tutarak hem okuma yükünü hem de eşzamanlılık kilitlerini bu katmanda yönetiyoruz.

Üçüncü katman, pazaryerleriyle çalışan herkesin er ya da geç çarptığı duvar: rate-limit, retry ve idempotency. Trendyol, Hepsiburada, Amazon SP-API ve N11'in her biri farklı bir hız sınırı ve hata davranışı dayatıyor. Her kanal için token-bucket tabanlı bir hız sınırlayıcı koyuyoruz; istekler kuyruktan kontrollü hızda çekiliyor, ani yük doğrudan API'ye vurmuyor. Geçici hatalarda (429, 5xx) jitter'lı exponential backoff ile yeniden deniyoruz; kalıcı hatalar dead-letter kuyruğuna düşüyor. En kritik nokta ise idempotency: sipariş onayı, stok güncelleme gibi yazma işlemleri retry sırasında iki kez tetiklenirse çift kayıt oluşmaması için her işleme bir idempotency anahtarı veriyoruz. Bu, "ağ koptu, acaba istek gitti mi" belirsizliğinde sistemi güvenli kılan tek mekanizma.

Son katman ürün listeleme otomasyonu ve sipariş orkestrasyonu. Merkezi PIM'de bir kez tanımlanan ürünü, kanal başına bir eşleştirme katmanıyla her pazaryerinin kendi kategori ağacına ve zorunlu özellik setine çevirip otomatik listelemeyi; gelen siparişleri tek bir kuyrukta toplayıp durum makinesiyle (yeni → onaylı → kargoda → teslim) yönetmeyi öneriyoruz. Tüm operasyon Next.js tabanlı tek bir panelde toplanıyor; hangi kanalın throttle yediği, hangi ilanın reddedildiği, hangi siparişin SLA'ya yaklaştığı buradan görünüyor. Sentry ile hata ve gecikme izleme baştan kuruluyor; entegrasyonun sessizce bozulduğu senaryo, en pahalı senaryodur.

Süreç

01

Kanal & Veri Modeli Analizi

Hangi pazaryerleri (Trendyol, Hepsiburada, Amazon, N11), mevcut stok/fiyat akışı ve ürün kataloğu inceleniyor. Merkezi PIM veri modeli ve kanal başına eşleştirme (kategori, attribute) tablosu çıkarılıyor.

02

Merkezi Stok/Fiyat Çekirdeği

Tek doğruluk kaynağı: PostgreSQL + merkezi PIM, Redis ile sıcak stok ve dağıtık kilit. Atomik stok düşürme ve kanal başına güvenlik tamponu (buffer) mantığı kuruluyor.

03

Olay Tabanlı Senkron Katmanı

RabbitMQ/Kafka üzerinde stok/fiyat değişiklik olayları; her pazaryeri için ayrı tüketici servis. Token-bucket rate-limit, jitter'lı retry, dead-letter kuyruğu ve idempotency anahtarları.

04

Ürün Listeleme + Sipariş Orkestrasyonu

Merkezi üründen otomatik listeleme (kategori/attribute mapping, barkod-GTIN eşleşmesi), siparişlerin tek kuyrukta toplanması, durum makinesiyle yönetim, kargo/SLA takibi.

05

Panel, İzleme + Canlı Geçiş

Next.js tek panel (kanal sağlığı, ilan durumu, SLA uyarıları, kanal bazlı kârlılık), Sentry ile hata/gecikme izleme. Önce tek kanalda pilot, sonra tüm pazaryerlerine kademeli açılış ve hyper-care.

Tercih Ettiğimiz Teknolojiler

Tipik tercihlerimiz aşağıdaki gibi; çalıştığınız pazaryerlerine, ürün adedine ve sipariş hacmine göre uyarlıyoruz.

Teknik Stack
Trendyol / Hepsiburada APIAmazon SP-APIN11 marketplace APIRabbitMQ / Kafka (olay senkronu)PostgreSQLRedis (sıcak stok + dağıtık kilit)Merkezi PIM (ürün master)Token-bucket rate-limitJitter'lı retry + dead-letter kuyruğuIdempotency anahtarlarıNext.js (yönetim paneli)Sentry (hata + gecikme izleme)

Sıkça Sorulan Sorular

Tek bir 'doğruluk kaynağı' (single source of truth) ilkesiyle çalışıyoruz: stok ana sayacı merkezi PIM ve PostgreSQL üzerinde tutuluyor, hiçbir pazaryeri kendi başına otorite değil. Bir kanalda sipariş düştüğünde stok atomik olarak düşürülüyor ve değişiklik RabbitMQ/Kafka üzerinden tüm kanallara olay tabanlı yayınlanıyor. Over-sell'in asıl kaynağı eşzamanlılık, aynı son adet iki pazaryerinde aynı anda satılırsa çakışma olur. Bunu Redis üzerinde dağıtık kilit ve rezervasyon mantığıyla çözüyoruz; ayrıca her kanala küçük bir güvenlik tamponu (buffer stock) tanımlanabiliyor. Senkron gecikmesini saniyeler seviyesine indiriyoruz; kalan riski de pazaryeri webhook'larıyla anlık sipariş bildirimi alarak kapatıyoruz.

Pazaryeri Entegrasyonunuz İçin Görüşelim

15-30 dakikalık ücretsiz keşif görüşmesi. Çalıştığınız pazaryerlerini, mevcut stok/fiyat akışınızı ve sipariş hacminizi anlıyoruz; mimari yön ve net bir fiyat bandı veriyoruz.