E-ticaret sitesi ile ERP arasındaki entegrasyonlar çoğu zaman en basit yoldan kurulur: sipariş oluşunca ERP’nin API’sine bir istek gönderilir. Bu yöntem test ortamında kusursuz çalışır. Sorun, ERP’nin yanıt vermediği ilk gün ortaya çıkar.
Doğrudan çağrının kırılganlığı
Sipariş kaydı sırasında yapılan senkron API çağrısı iki riski birden taşır. Birincisi: karşı sistem yavaşsa müşteri ödeme ekranında bekler. İkincisi ve daha ciddisi: karşı sistem hata verirse sipariş ya hiç ERP’ye düşmez ya da yarım düşer.
Bakım penceresi, sertifika yenilemesi, ağ kesintisi — bunların hepsi normal işletme koşulları. Entegrasyonun bunlara dayanıklı olması gerekir.
Kuyruk ne yapıyor?
Kuyruk, işi üretmek ile işlemek arasına bir tampon koyar. Sipariş oluştuğunda yapılan tek şey kuyruğa bir kayıt yazmaktır; bu işlem milisaniyeler sürer ve neredeyse hiç başarısız olmaz. ERP’ye gönderimi ayrı bir işçi süreç üstlenir.
- Karşı sistem kapalıysa iş kuyrukta bekler, kaybolmaz
- Müşteri ERP’nin hızından etkilenmez
- Hata durumunda artan aralıklarla tekrar denenebilir
- Yoğun saatlerde yük dengelenir
Tekrar deneme stratejisi
Her hata tekrar denenmemeli. İki grubu ayırmak gerekir: geçici hatalar (zaman aşımı, 5xx, bağlantı reddi) tekrar denenir; kalıcı hatalar (geçersiz veri, 4xx) denenmez, incelemeye düşer.
// artan aralıklı tekrar (exponential backoff)
$gecikme = [60, 300, 900, 3600, 10800]; // saniye
if ($is->deneme < count($gecikme)) {
$is->sonraki_deneme = time() + $gecikme[$is->deneme];
$is->deneme++;
$is->kaydet();
} else {
$is->durum = 'incelemede'; // insan müdahalesi gerekir
$is->kaydet();
bildirim_gonder($is);
}
Idempotency: iki kez göndermenin bedeli
Tekrar deneme mantığı eklediğiniz anda yeni bir risk doğar: aynı sipariş ERP’ye iki kez düşebilir. Bunu önlemenin yolu, her isteğe benzersiz bir anahtar eklemek ve karşı tarafın bu anahtarı tanıması. Karşı sistem desteklemiyorsa, gönderim öncesi kontrol sorgusu yapılmalı.
Bu bir teori değil. Kuyruksuz kurulmuş bir entegrasyonda ERP’nin iki saatlik bakımı sırasında düşen siparişlerin elle girilmesi, tek seferde günlerce iş çıkarabiliyor. Kuyruk, o iki saati görünmez kılıyor.
İzleme olmadan kuyruk olmaz
Kuyruk sessizce çalışır — bu hem avantajı hem riski. Bekleyen iş sayısı, en eski işin yaşı ve başarısız iş sayısı izlenmiyorsa, bir sorun günler sonra fark edilir. Basit bir panel ve eşik aşıldığında giden bir bildirim yeterli.
- Bekleyen iş sayısı belirli eşiği aşarsa uyarı
- En eski bekleyen işin yaşı (kuyruk tıkandı mı?)
- İncelemeye düşen iş sayısı
- Ortalama işlem süresi
Kurduğumuz entegrasyonlarda bu dört metrik standart olarak panelde yer alıyor. Müşteri, ERP tarafında bir sorun olduğunu bizden önce görebiliyor.