İzmir Alsancak'taki 4 şubeli bir döner zinciri Getir Yemek, Trendyol GO ve Yemeksepeti'ne aynı anda bağlı. Üç platformun her birinde ayrı menü tutmak yerine thMenu'yu master record olarak kullanıyorlar; stok düşümleri tek yerden yapılıyor, webhook fan-out üç platforma birden update gönderiyor.
Master Record ve Webhook Fan-Out Mimarisi
thMenu D1_MENU'da products.stock_quantity tek canonical kaynak. Mutfak siparişi onayladığında D1 atomic UPDATE: UPDATE products SET stock_quantity = stock_quantity - 1 WHERE id = ? AND stock_quantity > 0. Bu satır 0 satır etkilerse stok yok demektir — over-sell engellenir.
Update başarılı olduğunda Cloudflare Queue'ya bir event push edilir: {product_id, new_stock, platforms: ['getir','trendyol','yemeksepeti']}. Üç worker paralelde her platformun API'ına PATCH atar. Ortalama fan-out süresi 340ms.
Conflict Resolution: Üç Platform Aynı Anda Sipariş Aldığında
Senaryo: 5 lahmacun stokta. Yemeksepeti'nden 2, Getir'den 2, Trendyol'dan 1 sipariş aynı saniye geliyor. D1 atomic UPDATE her birini sıraya sokar — son sipariş 0 stokta kalır, kalanı reject. Master record final state: 0. Üç platforma "out of stock" sinyali fan-out edilir, hiç over-sell olmaz.
Race condition'ın klasik çözümü row lock — D1'de yok ama atomic UPDATE ... WHERE stock > 0 aynı işi görür. Affected row count 0 ise reject; başarılıysa devam. İlk 6 ay sıfır over-sell vakası.
Platform Sapmaları ve Reconciliation
Her platformun API'ı farklı: Yemeksepeti webhook'u 30sn delay'li, Trendyol immediate, Getir 5sn polling tabanlı. Sapma olursa saatte bir reconcile cron üç platformdan stok çekip master ile karşılaştırır.
- Yemeksepeti 5, Getir 3 raporluyorsa: master 5'e set, Getir'e PATCH ile düzelt
- Master 0 ama platform 2 gösteriyorsa: platform'a immediate PATCH 0
- Drift > 3 ürün: Slack alert + manuel inceleme tetikle
FAQ
Üç platforma manuel menü girmekten nasıl kurtuluruz? thMenu master record + webhook fan-out ile fiyat/stok/yeni ürün değişikliği tek yerden yapılır, otomatik üçüne dağılır.
Race condition'da kim öncelikli? D1'in atomic UPDATE'i FIFO çalışır — siparişler timestamp sırasına göre işlenir, fazlası 422 alır.
Reconciliation cron'u manuel mü tetiklenir? Hayır, Cloudflare Workers cron'da saatlik otomatik. Drift > 3 olursa Slack webhook ile operasyon ekibine alert gider.
Faydalı buldunuz mu? Paylaşın.
İlgili makaleler
QR Menü Nedir? Restoranlar İçin Eksiksiz Rehber
QR kod menü, müşterilerin telefonlarıyla tarayarak dijital menünüze anında erişm…
Kağıt Menüden QR Menüye Geçiş: Adım Adım Pratik Kılavuz
Restoranınızda kağıt menüyü bırakıp dijital QR menüye geçmek istiyorsunuz ama ne…
Yemek %10, alkol %20 — restoran POS'unuz multi-rate KDV'yi nasıl yönetiyor?
Türkiye'de gıda KDV'si %10, alkollü içecekler için %20. Bir adisyonda ikisi de v…