phone +90 850 309 4434 mail info@uluithalat.com
Sipariş Takip Hakkımızda İletişim
Ulu İthalat
Ana Sayfa Tüm Ürünler Ev & Mobilya Banyo Yapı & Hırdavat Favorilerim (0) Giriş Yap Kayıt Ol

XML Entegrasyonunda Zamanlanmış Güncelleme Nasıl Planlanır?

calendar_today 23.08.2026 schedule 21 dk okuma XML Bayilik ve Dropshipping person Ulu İthalat
XML Entegrasyonunda Zamanlanmış Güncelleme Nasıl Planlanır?

XML entegrasyonunda güncelleme sıklığının belirlenmesi tek başına yeterli değildir. Tedarikçi XML'ini çeken, doğrulayan, fiyat ve stok değişikliklerini işleyen ve sonuçları satış kanallarına gönderen görevların hangi sırayla çalışacağı ayrıca planlanmalıdır. Bu rehber; zamanlanmış XML görevlerinin tedarikçi ve veri türüne göre ayrılması, görev bağımlılıkları, çakışan senkronizasyonların engellenmesi, kuyruk ve retry kullanımı, çoklu sunucu kontrolü, başarısız görevlerin takibi, bakım dönemleri ve yayın öncesi güvenlik adımları açısından zamanlanmış güncelleme planının nasıl oluşturulabileceğini ele alıyor.

XML entegrasyonunda:

“XML'i 15 dakikada bir güncelleyelim.”

kararı vermek operasyonun yalnızca bir bölümüdür.

Asıl teknik soru bundan sonra başlar:

15 dakikada bir tam olarak hangi işlem çalışacak?

Örneğin tek bir XML güncellemesi gerçekte şu işlemlerden oluşabilir:

tedarikçi XML'ini indir

dosyanın sağlıklı olduğunu kontrol et

ürün kayıtlarını parse et

alanları normalize et

SKU eşleştirmesini yap

stok ve fiyatları doğrula

değişiklikleri hesapla

mağaza verisini güncelle

satış kanallarına gönder

sonucu logla

Bu işlemlerin tamamını tek bir:

“XML güncelle”

komutunun içine kontrolsüz biçimde koymak, katalog büyüdükçe yönetimi zorlaştırabilir.

Zamanlanmış XML güncelleme planının amacı:

yalnızca görevin saatini belirlemek değil, veri akışının hangi sırayla ve hangi güvenlik koşulları altında çalışacağını belirlemektir.

Ulu İthalat'ın canlı XML Bayilik sayfasında ürün, fiyat, stok ve görsel bilgilerinin XML yoluyla satış kanallarına aktarılabildiği ve özellikle stok ile fiyat değişikliklerinin düzenli takip edilmesinin önemli olduğu belirtiliyor.

XML Zamanlanmış Güncelleme Nedir?

XML zamanlanmış güncelleme; entegrasyon işlemlerinin manuel olarak başlatılmasını beklemek yerine önceden belirlenmiş bir çalışma planı üzerinden otomatik yürütülmesidir.

Örneğin sistem:

belirlenmiş aralık geldi

Supplier-A XML görevini başlat

feed'i doğrula

başarılıysa değişiklikleri işle

sonucu satış kanallarına gönder

job durumunu kaydet

şeklinde çalışabilir.

Buradaki:

“belirlenmiş aralık ne olmalı?”

sorusu 110'un konusudur.

117 ise:

“o aralık geldiğinde operasyon nasıl güvenli çalışacak?”

sorusunu cevaplar.

1. Önce Güncelleme Sıklığı Kararını Ayrı Tutun

Zamanlama planına başlamadan önce:

15 dakika

1 saat

günde birkaç kez

gibi çalışma sıklığının zaten belirlenmiş olması gerekir.

Canlı XML Güncelleme Sıklığı Nasıl Belirlenir? içeriği bu kararın stok değişim hızı, fiyat değişimleri, feed boyutu, işlem süresi ve kaynak tazeliğine göre verilmesini ayrıntılı biçimde ele alıyor.

117 bu kararı tekrar hesaplamamalıdır.

2. Sıklık ile Zamanlama Planı Aynı Şey Değildir

Örneğin:

Sıklık: saatte bir.

Bu yalnızca periyodu belirtir.

Zamanlama planı ise şunları da tanımlar:

  • hangi dakikada başlayacak,
  • hangi tedarikçi önce çalışacak,
  • hangi job diğerini bekleyecek,
  • önceki job bitmediyse ne olacak,
  • hata olursa yeniden denenecek mi,
  • hangi satış kanalları güncellenecek,
  • başarı nasıl doğrulanacak.

Dolayısıyla 117'nin konusu orchestration olmalıdır.

3. Bütün XML İşlemlerinin Envanterini Çıkarın

İlk adım mevcut görevleri listelemektir.

Örneğin:

Supplier-A feed download

Supplier-A import

Supplier-B feed download

stok güncelleme

fiyat güncelleme

pasif ürün kontrolü

pazaryeri stok gönderimi

pazaryeri fiyat gönderimi

gibi.

Ne çalıştığı bilinmeden sağlıklı zamanlama oluşturulamaz.

4. Her Göreve Açık Bir İsim Verin

Örneğin:

SUPPLIER_A_FETCH

SUPPLIER_A_VALIDATE

SUPPLIER_A_IMPORT

MARKETPLACE_STOCK_PUSH

gibi.

Bu özellikle hata loglarında:

hangi görev başarısız oldu?

sorusunu kolaylaştırır.

5. Tek Büyük Job Yerine Mantıksal Aşamalar Düşünün

Örneğin:

XML_SYNC

isimli dev bir işlem yerine:

FETCH

VALIDATE

IMPORT

PUBLISH

katmanları ayrılabilir.

Bu sayede:

dosya indirildi ancak validation başarısız oldu

gibi durumlar daha açık görülebilir.

6. XML'i İndirme ile Canlı Veriyi Güncellemeyi Ayırın

XML URL'sine erişmek:

kaynak alma aşamasıdır.

Ürün stoğunu değiştirmek:

uygulama aşamasıdır.

İkisini tek işlem gibi görmek yerine:

fetch başarılı

validation başarılı

apply

şeklinde güvenlik kapısı oluşturulabilir.

7. Validation Başarısızsa Apply Job'ı Çalışmamalıdır

Örneğin feed:

  • yarım,
  • bozuk,
  • beklenenden çok küçük,
  • stok alanı eksik

geldi.

Bu durumda:

dosyayı aldık → ürünleri güncelle

akışı durdurulabilir.

Böylece hatalı XML'in canlı kataloğa yayılması önlenir.

8. Job Bağımlılıklarını Açıkça Belirleyin

Örneğin:

PRICE_PUSH

görevi:

XML_IMPORT

başarılı olmadan başlamamalıdır.

Benzer şekilde:

MARKETPLACE_STOCK_PUSH

önce mağaza stoğunun başarıyla güncellenmesini beklemelidir.

Bu yapı görevler arasında bir bağımlılık zinciri oluşturur.

9. Sadece Saat Vererek Bağımlılık Oluşturmayın

Riskli örnek:

14:00 → XML import

14:05 → pazaryeri push

XML import normalde 3 dakika sürüyor olabilir.

Ama bugün:

12 dakika

sürdüyse 14:05 görevi henüz hazır olmayan veriyi gönderebilir.

Bu nedenle mümkün olduğunda:

saat bağımlılığı

yerine:

önceki job başarı durumu

kullanılmalıdır.

10. Güncelleme Zincirini Bir State Machine Gibi Düşünebilirsiniz

Örneğin:

SCHEDULED

RUNNING

FETCHED

VALIDATED

APPLIED

PUBLISHED

SUCCESS

veya:

FAILED

durumları bulunabilir.

Bu, uzun XML işlemlerinin hangi aşamada olduğunu görmeyi kolaylaştırır.

11. Her Çalışmaya Benzersiz Sync ID Verin

Örneğin:

SYNC-20260823-0012

Bu kimlik:

  • download,
  • validation,
  • import,
  • marketplace update

loglarının tamamında kullanılabilir.

Sonradan tek bir senkronizasyon uçtan uca takip edilebilir.

12. Zamanlama Tanımını Merkezi Bir Yerde Tutun

Farklı sunuculara dağılmış onlarca ayrı cron kaydı operasyonu takip etmeyi zorlaştırabilir.

Modern scheduler yapıları görev takvimini uygulama içerisinde merkezi olarak tanımlayabilir. Örneğin Laravel'in güncel scheduler dokümantasyonu görevlerin uygulama içerisinde tanımlanabildiğini ve schedule:list benzeri araçlarla planlanan görevlerin ve bir sonraki çalışma zamanlarının görüntülenebildiğini açıklıyor.

Genel ilke:

zamanlama görünür ve denetlenebilir olmalıdır.

13. Scheduler ile İş Mantığını Birbirinden Ayırın

Scheduler'ın görevi:

“şimdi çalıştır.”

demektir.

XML iş mantığı ise:

  • feed'i indir,
  • kontrol et,
  • ürünleri eşleştir,
  • stokları hesapla

gibi işlemlerdir.

İş mantığını doğrudan cron satırlarına gömmek yerine ayrı job/command yapısında tutmak yönetimi kolaylaştırabilir.

14. Tedarikçileri Aynı Dakikada Başlatmak Zorunda Değilsiniz

Örneğin 10 tedarikçi XML'i:

00. dakikada

aynı anda başlarsa:

  • CPU,
  • RAM,
  • network,
  • database

yükü bir anda artabilir.

Görevler örneğin farklı dakikalara dağıtılabilir.

Bu staggering yaklaşımıdır.

15. Zaman Dağılımını Sıklık Kararıyla Karıştırmayın

Supplier A ve B'nin ikisi de:

saatte bir

çalışabilir.

Ancak:

A → :05

B → :20

şeklinde planlanabilir.

İkisi de aynı sıklıktadır fakat aynı anda çalışmaz.

Bu 117'nin özgün alanlarından biridir.

16. Ağır ve Hafif Görevleri Ayırın

Örneğin:

stok kontrolü

çok hızlı olabilir.

Ancak:

20.000 görsel indirme

uzun sürebilir.

İki görevin aynı işlem penceresine yerleştirilmesi diğer kritik stok/fiyat güncellemelerini geciktirebilir.

17. Görsel Güncellemelerini Kritik Stok Job'ından Ayırabilirsiniz

Stok:

sipariş alınabilirliğini etkiler.

Görsel değişikliği ise genellikle aynı zaman hassasiyetine sahip değildir.

Bu nedenle:

stok/fiyat hızlı görevler

ile:

ürün içerik/görsel ağır görevleri

farklı job gruplarında çalıştırılabilir.

18. Önceki Job Bitmeden Yeni Job Başlatılmamalıdır

Örneğin görev:

10 dakikada bir

tetikleniyor.

Ancak bugünkü işlem:

17 dakika

sürdü.

Yeni çalışma önceki bitmeden başlarsa aynı ürünler iki süreç tarafından eş zamanlı güncellenebilir.

Canlı 110 içeriği de bu riski özellikle ele alıyor.

117'de ise bunun zamanlama planına hangi koruma olarak ekleneceği açıklanmalıdır.

19. Overlap Lock Kullanın

Scheduler altyapısı izin veriyorsa görev:

zaten çalışıyorsa ikinci kopyasını başlatma

şeklinde tanımlanabilir.

Güncel Laravel scheduler örneğinde withoutOverlapping mekanizması önceki görev hâlâ çalışıyorsa yeni scheduled çalışmanın çakışmasını engellemek için kullanılabiliyor.

Bu genel prensip XML senkronizasyonlarında özellikle değerlidir.

20. Kilidin Sonsuza Kadar Takılı Kalmamasını Planlayın

Sunucu beklenmedik biçimde kapanırsa:

RUNNING

veya lock durumu geride kalabilir.

Bu durumda job bir daha başlamayabilir.

Kullanılan scheduler'ın:

  • lock expiration,
  • stale lock cleanup

mekanizması bilinmelidir.

21. Çoklu Sunucuda Aynı Görevin Birden Fazla Kez Çalışmasını Önleyin

Uygulama birkaç sunucuda çalışıyorsa her sunucu aynı scheduled job'ı başlatabilir.

Sonuç:

aynı XML üç kez işlenebilir.

Bazı scheduler altyapıları görevin yalnızca tek sunucuda yürütülmesine yönelik atomik kilit mekanizmaları sağlar; güncel Laravel dokümantasyonunda onOneServer bunun örneklerinden biridir.

22. Scheduler ile Queue Aynı Şey Değildir

Scheduler:

işin ne zaman başlayacağını

belirler.

Queue:

başlatılan işin nasıl ve hangi worker tarafından işleneceğini

yönetebilir.

Örneğin scheduler:

14:00 → Supplier A güncellemesini başlat.

Queue:

10.000 ürünü parça parça işle.

Bu iki katmanın görevleri ayrıdır.

23. Büyük Feed'lerde Chunk İşleme Kullanılabilir

Örneğin:

50.000 ürün

tek büyük job içerisinde işlenmek yerine:

1–1.000

1.001–2.000

gibi gruplara ayrılabilir.

Bu:

  • timeout,
  • memory,
  • retry

yönetimini kolaylaştırabilir.

Ancak bütün parçaların aynı feed snapshot'ına ait olduğu korunmalıdır.

24. Chunk'ların Aynı Veri Sürümünü Kullandığını Doğrulayın

İlk 5.000 ürün:

Feed V1

son 5.000 ürün:

Feed V2

üzerinden işlenirse katalog karışık snapshot haline gelebilir.

Bu nedenle tek senkronizasyonda mümkünse:

tek doğrulanmış feed snapshot

kullanılmalıdır.

25. Paralel İşlem Kullanırken Ürün Çakışmasını Kontrol Edin

Paralel worker'lar performansı artırabilir.

Ancak iki worker aynı:

SKU

üzerinde aynı anda işlem yapıyorsa race condition oluşabilir.

Chunk tasarımı ürün kayıtlarını güvenli biçimde ayırmalıdır.

26. Tedarikçi İstek Limitlerini Zamanlama Planına Ekleyin

Tedarikçi:

  • istek limiti,
  • belirli erişim saatleri,
  • minimum kontrol aralığı

uygulayabilir.

Scheduler bu sınırları görmezden gelmemelidir.

Aksi halde sık retry veya paralel job kaynağı gereksiz yere yükleyebilir.

27. Timeout Süresini Job Tipine Göre Belirleyin

XML download:

10 saniyede bitebilir.

Büyük katalog importu:

dakikalar sürebilir.

Bütün işlemlerde tek timeout değeri kullanmak uygun olmayabilir.

fetch timeout

ve:

processing timeout

ayrı değerlendirilebilir.

28. Başarısız Görev İçin Retry Politikası Belirleyin

Örneğin feed geçici olarak erişilemiyor.

İlk hata sonrası:

yeniden dene

mantığı kullanılabilir.

Ancak retry'nin:

  • kaç kez,
  • ne aralıkla,
  • hangi hata türlerinde

çalışacağı belirlenmelidir.

29. Her Hatayı Retry Etmeyin

Network timeout

geçici olabilir.

Ancak:

XML schema tamamen değişti

ise aynı job'ı 20 kez tekrar çalıştırmak sonucu değiştirmeyebilir.

Hatalar:

RETRYABLE

ve:

NON_RETRYABLE

olarak sınıflandırılabilir.

30. Retry'lerde Kademeli Bekleme Kullanılabilir

İlk başarısızlık sonrası kısa,

sonraki başarısızlıklarda daha uzun

bekleme kullanılabilir.

Amaç kaynak sunucuyu arka arkaya yoğun biçimde sorgulamamaktır.

31. Maksimum Retry Sayısını Belirleyin

Sonsuz retry:

  • sunucu yükü,
  • log şişmesi,
  • kaynak yükü

oluşturabilir.

Belirli sayıdan sonra job:

FAILED

durumuna alınarak alarm üretebilir.

32. Kaçırılan Çalışmalar İçin Politika Oluşturun

Sunucu 2 saat kapalı kaldı.

Normalde XML dört kez çalışacaktı.

Sunucu açıldığında:

dört eski sync'i sırayla çalıştırmak

gerekli olmayabilir.

Bazı operasyonlarda yalnızca:

en güncel feed'i işle

daha anlamlı olabilir.

Bu karar feed türüne göre verilmelidir.

33. “Catch-Up” İşlemi Katalogu Boğmamalıdır

Normalde:

saatlik job.

Sistem 12 saat kapalı.

Tekrar açılınca:

12 ayrı tam katalog importu

aynı anda başlatılırsa yüksek yük oluşabilir.

Missed-run politikası önceden tanımlanmalıdır.

34. Manuel Çalıştırma Seçeneği Bulundurun

Scheduled job çalışıyor olsa bile bazen:

şimdi tekrar güncelle

ihtiyacı doğabilir.

Manuel çalıştırmada da:

  • overlap,
  • validation,
  • loglama

kuralları atlanmamalıdır.

35. Manuel Job Zamanlanmış Job'la Çakışmamalıdır

Operatör manuel sync başlattı.

İki dakika sonra scheduled sync zamanı geldi.

İki işlem aynı anda başlamamalıdır.

Manual ve scheduled tetikleyiciler aynı lock sistemini kullanabilir.

36. Dry-Run Modu Faydalıdır

Zamanlanmış görev gerçek veri yazmadan:

kaç ürün değişecek

kaç stok sıfırlanacak

kaç fiyat değişecek

kaç hata oluşacak

raporu üretebilir.

Yeni schedule canlıya alınmadan önce bu modda denenebilir.

37. Aynı İşlemin Tekrar Çalıştırılması Güvenli Olmalıdır

Bir job:

başarısız göründü.

Operatör tekrar çalıştırdı.

Aynı ürün:

iki kez oluşmamalı,

aynı stok hareketi iki kez uygulanmamalıdır.

Bu nedenle scheduled işlemler mümkün olduğunca idempotent tasarlanmalıdır.

38. İlk Import ile Scheduled Update'i Ayırın

İlk XML aktarımı:

  • ürün oluşturma,
  • görseller,
  • açıklamalar,
  • kategoriler

gibi kapsamlı olabilir.

Rutin scheduled update ise:

  • fiyat,
  • stok,
  • aktiflik

gibi kritik alanlarla sınırlı olabilir.

Canlı 110 içeriğinde de ilk aktarım ile rutin güncellemenin ayrılması öneriliyor.

117'de bunun farklı job planlarına dönüştürülmesi sahiplenilmelidir.

39. İçerik Güncelleme Job'ını Fiyat/Stok Job'ından Ayırabilirsiniz

Örneğin:

kritik sync

fiyat + stok

content sync

ürün adı + görsel + açıklama

olabilir.

Böylece ağır içerik işlemi kritik ticari verinin zamanında aktarılmasını engellemez.

40. Fiyat ve Stok Aynı Snapshot'tan Geliyorsa Tutarlılığı Koruyun

Feed aynı anda:

stok 10

ve:

yeni maliyet 150 TL

gönderiyor olabilir.

Stok bugünkü feed'den,

fiyat dünün feed'inden

işlenirse iki alan farklı veri dönemlerini temsil edebilir.

Hangi alanların birlikte güncellenmesi gerektiği planlanmalıdır.

41. Satış Kanalına Gönderimi Import Başarısına Bağlayın

Örneğin:

XML validation başarısız.

Ama pazaryeri push job'ı yine çalıştı.

Bu durumda eski veya yarım veri kanala gönderilebilir.

Daha kontrollü yapı:

IMPORT_SUCCESS

olmadan:

CHANNEL_PUSH

başlatmamak olabilir.

42. Partial Success Durumunu Ayrı Planlayın

10.000 ürünün:

9.950'si başarılı,

50'si hatalı.

Ne olacak?

İki seçenek olabilir:

9.950'yi yayınla, 50'yi review'a al

veya:

bütün batch'i durdur.

Bu iş kuralı scheduled job tasarımında önceden belirlenmelidir.

43. Başarısız Job Sonrasında Önceki Güvenilir Veri Korunmalıdır

XML job başarısız oldu diye:

  • stokları sıfırlamak,
  • fiyatları silmek,
  • ürünleri pasife almak

genel varsayılan davranış olmamalıdır.

116 numaralı stok sıfırlama konusu özellikle bu güvenlik alanını derinleştirir.

117'de ise başarısız scheduled job'ın:

yanlış takip job'larını tetiklememesi

önemlidir.

44. Bakım ve Deploy Dönemlerini Planlayın

Yazılım güncellemesi sırasında:

  • database migration,
  • kod değişikliği,
  • queue restart

yapılıyor olabilir.

Aynı anda ağır XML importunun çalışması istenmeyebilir.

Scheduler altyapısının bakım modunda görev davranışı bilinmelidir. Güncel Laravel scheduler dokümantasyonu scheduled task'ların bakım modundaki davranışını ve görevlerin geçici olarak duraklatılmasını ayrıca destekliyor.

45. Scheduled Job'ı Gerektiğinde Kontrollü Durdurabilin

Tedarikçi XML'i bozuldu.

Entegrasyon her 15 dakikada aynı hatayı uyguluyor.

Böyle bir durumda:

kodu deploy etmeden schedule'ı geçici durdurabilme

yeteneği operasyon açısından yararlı olabilir.

Durum düzeldikten sonra kontrollü biçimde yeniden başlatılabilir.

46. Timezone'u Açıkça Tanımlayın

Özellikle sistem:

  • farklı ülke sunucusu,
  • farklı tedarikçi,
  • farklı kanal

kullanıyorsa:

14:00 hangi timezone?

sorusu önemlidir.

Modern scheduler'lar görev timezone'u tanımlayabilir; ayrıca daylight-saving kullanan zaman dilimlerinde görevin iki kez çalışması veya hiç çalışmaması gibi riskler oluşabileceği de güncel Laravel dokümantasyonunda belirtiliyor.

47. Zamanlama Planında Sunucu Saatine Körü Körüne Güvenmeyin

Uygulama:

UTC

kullanıyor olabilir.

Operasyon paneli:

yerel saat

gösterebilir.

Tedarikçi:

başka timezone

kullanabilir.

Loglarda zaman bilgisi mümkün olduğunca açık tutulmalıdır.

48. Başarı ve Hata Callback'leri Kullanılabilir

Scheduled job bittiğinde sistem:

SUCCESS

veya:

FAILED

sonucuna göre farklı aksiyon alabilir.

Örneğin güncel Laravel scheduler'ında başarı ve başarısızlık için ayrı callback/hook mekanizmaları bulunuyor.

Genel prensip:

job bitti → sonucu değerlendir → sonraki aksiyonu buna göre tetikle

olmalıdır.

49. Başarısız Görev İçin Alarm Oluşturun

Bir XML güncellemesi birkaç gün hiç çalışmazsa:

“scheduled” olması tek başına işe yaramaz.

Örneğin alarm:

Supplier-A XML sync failed

Son başarılı çalışma: ...

Hata aşaması: FETCH

gibi bilgi sunabilir.

50. “Çalıştı” ile “Başarılı Güncelledi” Ayrımını Koruyun

Cron saatinde tetiklendi.

Bu sadece:

job başladı

demektir.

Gerçek başarı:

feed indirildi

validation geçti

veriler uygulandı

kanal gönderimi tamamlandı

gibi aşamalardan sonra belirlenmelidir.

51. last_attempt ve last_successful_sync Ayrı Tutulmalıdır

Örneğin:

Son deneme:

15:00

Son başarılı:

12:00

ise sistem üç saattir güncel veri alamıyor olabilir.

Canlı 110 içeriği de bu ayrımı özellikle öneriyor.

117'de bu bilgi scheduler dashboard'unun temel metriklerinden biri olabilir.

52. Scheduled Job Dashboard'u Oluşturabilirsiniz

Örneğin panel:

Supplier A

Son başarı → 15:00

Son süre → 3 dk 20 sn

Sonuç → SUCCESS

Sonraki çalışma → 16:00

gösterebilir.

Böylece cron dosyalarına bakmadan operasyon görülebilir.

53. Sonraki Çalışma Zamanının Görünmesi Faydalıdır

Operatör:

“Bu XML bir daha ne zaman çalışacak?”

sorusuna cevap verebilmelidir.

Bazı scheduler sistemleri görevlerin ve sonraki çalışma zamanlarının listelenmesine yönelik yerleşik komutlar sunar.

Bu yalnızca geliştirici için değil operasyon kontrolü için de yararlıdır.

54. Job Çalışma Süresini Kaydedin

Örneğin:

normal:

4 dakika.

Bugün:

28 dakika.

Bu durum:

  • feed büyümesi,
  • database yavaşlığı,
  • kaynak problemi

olabilir.

Scheduled plan yalnızca start time değil duration da izlemelidir.

55. Beklenen Süreyi Aşan Job İçin Alarm Kurabilirsiniz

Görev teknik olarak hâlâ:

RUNNING

olabilir.

Ancak normalin çok üzerinde çalışıyorsa:

stuck job

ihtimali vardır.

Bu durumda yeni job'ın overlap nedeniyle sürekli atlanması da mümkündür.

56. Tedarikçi Bazlı Bağımsızlık Sağlayın

Supplier A feed'i bozuldu.

Supplier B sağlıklı.

A'daki hata:

bütün XML senkronizasyon sistemini

durdurmamalıdır.

Tedarikçi job'ları yeterince bağımsız tasarlanabilir.

57. Bir Tedarikçinin Ağır Job'ı Diğerlerini Bloke Etmemelidir

Supplier A:

50.000 ürün.

Supplier B:

500 ürün.

Tek işlem kuyruğunda A bütün kapasiteyi kullanıyorsa B'nin kritik stok değişiklikleri gecikebilir.

Queue veya worker öncelikleri buna göre planlanabilir.

58. Kritik Görev Öncelikleri Tanımlayın

Örneğin:

yüksek öncelik

stok/pasiflik.

orta

fiyat.

daha düşük

görsel/içerik.

Bu yalnızca örnektir.

Gerçek öncelik işletmenin riskine göre belirlenmelidir.

59. Schedule Değişikliklerini Loglayın

Örneğin:

Supplier-A:

saatlik → 30 dakikalık

olarak değiştirildi.

Kim değiştirdi?

Ne zaman?

Neden?

Bu bilgi ileride:

“Sunucu yükü neden arttı?”

veya:

“Stok güncellemeleri neden gecikti?”

sorularını açıklayabilir.

60. Zamanlanmış Güncellemeyi Bir Operasyon Planı Olarak Görün

İyi plan yalnızca:

*/15 * * * *

gibi bir cron ifadesi değildir.

Asıl sistem:

ne zaman → hangi job → hangi kaynak → hangi koşulla → hangi sırayla → hangi lock ile → hangi retry politikasıyla → hangi başarı kriteriyle → hangi sonraki görevi tetikleyerek

çalışacağını tanımlar.

117'nin ana değeri burada oluşur.

XML ZAMANLANMIŞ GÜNCELLEME KONTROL LİSTESİ

Sıklık

Çalışma aralığı 110'daki yöntemle belirlendi mi?

Görev adı

Her job ayrı isim taşıyor mu?

Tedarikçi

Job hangi kaynağa ait belli mi?

Aşama

Fetch, validate, import ve publish ayrılmış mı?

Bağımlılık

Bir job diğerinden önce yanlışlıkla başlayabilir mi?

Snapshot

Aynı senkronizasyon aynı feed sürümünü mü kullanıyor?

Overlap

Önceki job bitmeden yenisi başlayabiliyor mu?

Lock

Aynı iş ikinci kez tetikleniyor mu?

Çoklu sunucu

Aynı görev birkaç sunucuda aynı anda çalışıyor mu?

Queue

Scheduler ve ürün işleme görevleri ayrılmış mı?

Chunk

Büyük katalog güvenli parçalara ayrılıyor mu?

Rate limit

Tedarikçinin teknik sınırları dikkate alınıyor mu?

Timeout

İşlem türüne uygun mu?

Retry

Hangi hatalarda yeniden deneneceği belli mi?

Retry limiti

Sonsuz tekrar önleniyor mu?

Missed run

Kaçırılan görevlerin ne olacağı belirli mi?

Manuel çalışma

Scheduled job ile çakışıyor mu?

Dry-run

Canlı veri yazmadan test edilebiliyor mu?

Idempotency

Aynı job iki kez çalışınca duplicate oluşuyor mu?

Maintenance

Deploy sırasında job davranışı belli mi?

Timezone

Çalışma saatinin hangi timezone'a ait olduğu belirli mi?

Başarı

Başarılı sayılması için hangi aşamaların tamamlanması gerekiyor?

Hata

Başarısız job alarm üretiyor mu?

Last success

Son başarılı çalışma kaydediliyor mu?

Duration

İşlem süresi takip ediliyor mu?

Next run

Bir sonraki çalışma zamanı görülebiliyor mu?

Audit

Schedule değişiklikleri kayıt altında mı?

XML ZAMANLANMIŞ GÜNCELLEME NASIL PLANLANIR?

Pratik uygulama sırası:

1. Önce her tedarikçi için uygun güncelleme sıklığını belirleyin.

2. XML operasyonundaki bütün scheduled görevleri listeleyin.

3. Her göreve açık ve benzersiz bir isim verin.

4. Fetch, validation, import ve channel-publish aşamalarını ayırın.

5. Görev bağımlılıklarını belirleyin.

6. Tek senkronizasyonun kullanacağı feed snapshot'ını sabitleyin.

7. Tedarikçilerin çalışma saatlerini birbirine yığmadan dağıtın.

8. Kritik fiyat/stok görevlerini ağır içerik işlerinden ayırın.

9. Overlap ve lock mekanizması ekleyin.

10. Çok sunuculu sistemde tek-job çalıştırma kontrolü oluşturun.

11. Büyük kataloglarda queue/chunk modelini belirleyin.

12. Tedarikçi rate-limit ve timeout kurallarını tanımlayın.

13. Retry edilebilir ve edilemez hataları ayırın.

14. Maksimum retry ve missed-run politikalarını belirleyin.

15. Manuel çalıştırmanın da aynı güvenlik kurallarından geçmesini sağlayın.

16. Maintenance/deploy sırasında görev davranışını belirleyin.

17. Başarı, partial success ve failure kriterlerini tanımlayın.

18. Son deneme, son başarı, süre ve sonraki çalışma zamanını loglayın.

19. Önce test/dry-run ortamında bütün zinciri çalıştırın.

20. Canlıya geçtikten sonra job sürelerini, hataları ve schedule performansını düzenli izleyin.

SIK SORULAN SORULAR

XML güncelleme sıklığı ile zamanlanmış güncelleme aynı şey midir?

Hayır. Güncelleme sıklığı XML'in ne kadar sık kontrol edilmesi gerektiğini belirler. Zamanlanmış güncelleme planı ise belirlenen aralık geldiğinde hangi job'ın, hangi sırayla, hangi güvenlik kontrolleri ve hata politikalarıyla çalışacağını tanımlar.

Bütün XML tedarikçilerini aynı saatte çalıştırmak doğru mudur?

Teknik olarak mümkün olabilir ancak özellikle büyük feed'lerde CPU, ağ ve veri tabanı yükünü aynı anda artırabilir. Aynı sıklık korunurken görevler farklı dakikalara dağıtılabilir.

Önceki XML güncellemesi bitmeden yeni görev başlamalı mı?

Genellikle aynı veri üzerinde çalışan iki senkronizasyonun çakışması istenmez. Scheduler altyapıları bu amaçla overlap lock kullanabilir. Örneğin güncel Laravel scheduler withoutOverlapping mekanizması sunuyor.

XML güncellemesi hata verirse otomatik tekrar denenmeli mi?

Hata türüne bağlıdır. Geçici bağlantı problemi yeniden denenebilirken bozuk XML şeması veya yanlış mapping gibi kalıcı problemleri tekrar tekrar çalıştırmak çözüm olmayabilir. Retry edilebilir ve edilemez hatalar ayrılmalıdır.

Birden fazla sunucu varsa aynı XML görevi birkaç kez çalışabilir mi?

Scheduler her sunucuda ayrı çalışıyorsa bu risk olabilir. Kullanılan altyapıda merkezi kilit veya tek-sunucu execution mekanizması kurulmalıdır. Güncel Laravel scheduler bunun için onOneServer benzeri bir yöntem sunuyor.

ZAMANLANMIŞ XML GÜNCELLEME “CRON'A SAAT YAZMAK”TAN DAHA FAZLASIDIR

En basit sistem:

15 dakikada bir XML import çalıştır

diyebilir.

Daha kontrollü sistem ise:

zaman geldi

önceki job bitmiş mi kontrol et

tek sunucuda lock al

doğru tedarikçi feed'ini indir

snapshot oluştur

feed sağlığını doğrula

veriyi işle

kritik kontrolleri uygula

başarılı kayıtları güncelle

satış kanallarını doğru sırada güncelle

başarı/partial failure durumunu kaydet

gerekiyorsa retry veya alarm oluştur

şeklinde çalışır.

Örneğin:

“XML saatte bir çalışıyor.”

tek başına operasyon bilgisi değildir.

Daha yararlı bilgi:

Supplier-A stok/fiyat sync'i saatte bir tetikleniyor; önceki çalışma bitmediyse başlamıyor; feed doğrulanmadan canlı veriye yazmıyor; başarısız olursa kontrollü retry yapıyor; başarı sonrası kanal gönderimini tetikliyor ve son başarılı çalışma zamanı kaydediliyor.

şeklindedir.

117'nin ana mesajı:

“Güncelleme sıklığını seçtikten sonra, o güncellemeyi güvenli ve izlenebilir bir görev zincirine dönüştürün.”

Benzer Yazılar