Durum durumu
Nutricook, sadık bir müşteri tabanına ve agresif promosyon kampanyalarına yatkın bir Körfez mutfak aleti markasıdır. E-ticaret mağazasının bir promosyon düştüğünde gelen trafik türünü kaldırması gerekiyor: aynı anda yüzlerce müşteri ödemeye ulaşıyor, siparişler ödeme işlemi, kargo araması, envanter kesintisi, onay e-postaları ve rapor dışa aktarmayı aynı anda tetikliyor. Orijinal mimari bununla kötü başa çıkıyordu. Bu aşağı akış işlemlerinin her biri — ödeme ağ geçidi çağrısı, kargo API araması, e-posta gönderimi — HTTP isteği içinde eş zamanlı olarak gerçekleşiyordu. Normal yük altında iyiydi. Bir promo lansmanı sırasında ödeme süreleri 8-12 saniyeye çıktı. Ödeme mimarisini tek bir ilke etrafında yeniden inşa ettik: HTTP yanıtı, müşteri onayını görmeden önce gerçekleşmesi gerekmeyen hiçbir şeyi beklememeli. Ödeme onayı: senkron. Diğer her şey: kuyruğa alındı.
Ne değiştirmeliydi
Flaş satış trafiği, ödeme yanıt sürelerinin 8-12 saniyeye çıkmasına neden oldu. Suçlu, her sipariş sonrası işlemin — ödeme onayı, kargo araması, e-posta gönderimi, envanter kesintisi — HTTP yanıtını engellediği senkron bir mimariydi. Müşteriler yükleme ekranında bekledi ve ayrıldı.
Ne değiştik
Ödemeyi net bir senkron/async sınırıyla yeniden inşa ettik: yalnızca ödeme onayı yanıtı engelliyor. Her şey aşağı akış — kargo, e-posta, envanter, analitik — kuyruğa alınıyor. Arka plan çalışanları yeniden deneme mantığı ve başarısızlıklar için dead-letter kuyrukları ile işleri işliyor.
Müşteri ne kazandı
- 01 Ödeme her zaman 300ms altında — kuyruk mimarisi
- 02 Flaş satış trafiği bozulma olmadan işleniyor
- 03 Ödeme ve 3 bölgesel ağ geçidi için güvenli REST API'ler
- 04 Arka plan işleri aracılığıyla rapor dışa aktarma — UI'ı hiç engellemiyor