Durum durumu
Allbirds, dünyanın en tanınan sürdürülebilir ayakkabı markalarından birini inşa etti. E-ticaret arka ucu bu itibarı karşılamak zorundaydı — trafik hacmi veya ortamdan bağımsız olarak hızlı, güvenilir ve tutarlı. Düzeltmek için çağrıldığımız sorun ödeme gecikme tutarsızlığıydı. Normal yük altında ödeme iyiydi. Trafik artışları altında — bir ürün lansmanı, bir medya özelliği — öngörülemez hale geliyordu. P95 ödeme yanıt süreleri 4-6 saniyeye çıkıyordu. Müşteriler terk ediyordu. Ödeme yolundaki sorgu yürütme planlarını inceledik ve suçluyu bulduk: uygun bileşik indeksler olmadan ürün, envanter, varyant ve fiyatlandırma tabloları arasındaki çok tablolu birleşimler. Düzeltme geriye dönüp basit görünüyor — yüksek seçicilik sütunlarında bileşik indeksler, N+1 sorgularını ortadan kaldırmak için eager loading.
Ne değiştirmeliydi
Ödeme yanıt süreleri, tamamen yönetilebilir olması gereken trafik yükleri altında 4-6 saniyeye çıktı. Isı haritaları ve oturum kayıtları, yüksek trafik pencerelerinde ödeme adımında açık terk davranışı gösterdi. Mühendislik ekibi aynı zamanda hata üretme ve düzeltme sürecini yavaşlatan sürekli staging-prodüksiyon tutarsızlıklarıyla da mücadele etti.
Ne değiştik
Tüm ödeme sorgu yolunun SQL denetimi: gecikmenin %80'inden sorumlu 6 sorgu tespit edildi. Yüksek seçicilik sütunlarına bileşik indeksler eklendi, N+1 kalıplarını ortadan kaldırmak için 3 sorgu uygun eager loading ile yeniden yazıldı, e-posta gönderimi arka plan iş kuyruğuna taşındı. Tam stack Dockerize edildi — dizüstüden üretime tutarlı ortamlar.
Müşteri ne kazandı
- 01 Dorukta bile tutarlı olarak 1.2s altında ödeme
- 02 Tüm sıcak yollarda bileşik indeksler + eager loading
- 03 Docker stack — staging vs prodüksiyon sürprizleri yok
- 04 Arka plan işleri tüm e-posta ve async işlemleri yönetir