İçeriğe geç

Zamanlanmış Görev Nedir? Gece Çalışan İşler Rehberi

Sunucu ve Performans
Zamanlanmış Görev Nedir? Gece Çalışan İşler Rehberi

Zamanlanmış görev, yazılımın kimse tetiklemeden belirli bir saatte kendi kendine çalıştırdığı iştir: gece yarısı stok mutabakatı, sabah altıda satış raporu, saat başı entegrasyon yoklaması. Doğru kurulduğunda varlığı fark edilmez; yanlış kurulduğunda günün ilk sorusu rapor neden gelmedi olur ve kimse işin çalışıp çalışmadığına nereden bakacağını bilmez.

Aşağıda önce hangi işlerin zamanlanmaya uygun olduğunu, sonra üç klasik arızayı (hiç başlamayan iş, üst üste binen iş, hatada ne yapacağı belli olmayan iş) ve son olarak izleme kurulumunu bulacaksınız.

Hangi işler zamanlanmış göreve taşınır?

Kuralı tek cümlede söylemek mümkün: kullanıcının ekranda sonucunu beklediği hiçbir iş zamanlanmaz. Zamanlanan işler, tekrarlayan ve birkaç dakikalık gecikmesi tolere edilebilen işlerdir.

  • Mutabakat işleri: stok, cari bakiye, sipariş durumu gibi iki sistemin sayılarının karşılaştırılması ve farkların listelenmesi.
  • Toplu üretim: gün sonu raporu, dışa aktarım dosyası, yöneticiye giden özet e-posta.
  • Temizlik işleri: süresi dolmuş oturumların kapatılması, geçici dosyaların silinmesi, eski kayıtların arşive taşınması.
  • Dış servis yoklaması: kargo takip durumunun güncellenmesi, pazaryerinden sipariş çekme, kur bilgisinin tazelenmesi.
  • Bakım işleri: yedek alma, arama dizininin yenilenmesi, önbellek ısıtma.

Listeyi çıkarırken her işin yanına iki sütun açın: hangi sıklıkta çalışacak ve çalışmazsa ilk kim fark eder. İkinci sütunu dolduramadığınız iş, izlenmeyen iştir; onu kurmadan önce izlemesini tasarlamak gerekir.

Kaçan çalışma: iş neden hiç başlamadı?

En sinsi arıza, hata veren iş değil, hiç başlamayan iştir. Hata veren iş günlüğe bir satır bırakır ve er geç görülür; hiç başlamayan iş hiçbir iz bırakmadığı için günlerce fark edilmez, genellikle de eksik rapor üzerinden ortaya çıkar.

Sık görülen sebepler şunlardır: sunucu yeniden başlatıldıktan sonra görev zamanlayıcısının otomatik açılmaması, sunucu saat diliminin beklenenden farklı olması ve işin gerçekten gece değil öğlen çalışması, görevi çalıştıran sistem hesabının yetkisinin bir güncellemeyle daralması, bir önceki çalışmanın hâlâ sürüyor olması.

Çözüm işin kendisine değil, çalıştığının kaydına bakmaktır. Her görev başlarken ve biterken ayrı bir tabloya satır yazsın: görev adı, başlama zamanı, bitiş zamanı, işlenen kayıt sayısı, sonuç. Bu tablo varsa dün gece çalıştı mı sorusu tartışmayla değil tek sorguyla cevaplanır.

Üst üste binme ve aynı işin iki kez çalışması

Beş dakikada bir çalışacak şekilde kurulan bir iş, yoğun günde yedi dakika sürmeye başladığında ikinci kopya birincisi bitmeden açılır. İki kopya aynı kayıtları işler; sonuç mükerrer kayıt, çift gönderilen e-posta ya da birbirinin üzerine yazan güncellemelerdir.

Bunun önüne kilitle geçilir: görev başlarken bir kilit kaydı oluşturur, bitince bırakır, kilidi alamayan kopya hiçbir şey yapmadan çıkar. Kilide mutlaka bir süre sonu koyun; yoksa çöken bir çalışma kilidi üzerinde bırakır ve iş bir daha hiç çalışmaz. Bu, kaçan çalışmanın en can sıkıcı biçimidir çünkü sebebi kilidin kendisidir.

İşin gövdesi de iki kez çalıştığında aynı sonucu üretecek biçimde yazılmalıdır. Bunun ayrıntısı mükerrer kayıt ve idempotency yazısında duruyor.

Hata olduğunda yeniden denenir mi?

Her hata aynı değildir; hepsine aynı tepkiyi vermek zarar verir. Geçici bir ağ hatasında yeniden denemek doğrudur, hatalı veriden kaynaklanan bir hatada aynı kaydı yüz kez denemek yalnızca günlüğü şişirir ve gerçek sorunu görünmez kılar.

Hata türüÖrnekDoğru tepki
GeçiciDış servise erişilemedi, zaman aşımıAralığı artırarak sınırlı sayıda yeniden dene
Veri kaynaklıZorunlu alan boş, eşleşmeyen ürün koduO kaydı ayır, kalan kayıtları işlemeye devam et
Yetki veya yapılandırmaAnahtar geçersiz, dizin bulunamadıHemen dur ve uyar, yeniden deneme
BeklenmeyenTanımsız istisnaBir kez dene, sonra dur ve ayrıntıyı kaydet

Yeniden deneme sayısı sınırsız olmamalı. Sınıra gelen kayıt, elle bakılacaklar kuyruğuna düşmeli. O kuyruk boşsa sistem sağlıklıdır, dolmaya başlamışsa birinin bakması gerekir; bu tek gösterge çoğu zaman on ayrı uyarıdan daha işe yarar.

Uzun işler: kaldığı yerden devam etmek

Yarım saat süren bir iş yirminci dakikada kesilirse baştan başlamak hem süreyi ikiye katlar hem de yapılmış işi tekrarlar. Uzun işleri partilere bölün: her parti işlendikten sonra nereye kadar gelindiği kaydedilsin, görev bir sonraki çalışmasında o işaretten devam etsin.

Parti boyutu küçüldükçe kesintinin maliyeti düşer ama yük artar; ölçüyü işin süresine bakarak ayarlayın. Bir partinin tek başına birkaç dakikada bitmesi iyi bir hedeftir.

İzleme: başarısızlığı kim görecek?

Zamanlanmış görev sessiz çalıştığı için izleme kurulmadan güvenilmez. En az üç şey gerekir.

  1. Çalıştı kaydı: her çalışmanın başlangıç, bitiş ve sonucunu tutan tablo. Panelde bir ekrandan görülebilmeli.
  2. Beklenen saatte çalışmadı uyarısı: iş hata vermediği hâlde hiç çalışmadıysa haber veren kontrol. Kaçan çalışmayı yakalayan tek şey budur.
  3. Sonuç bildirimi: başarısız biten ya da elle bakılacaklar kuyruğunu büyüten çalışmalarda ekibe giden mesaj.

Uyarıların gideceği yer kişisel bir posta kutusu değil, ekibin ortak izlediği bir kanal olmalı. Tek kişiye giden uyarı, o kişi izinli olduğunda yok hükmündedir.

Kısa kontrol listesi

  • Her görev için sıklık ve sahip belirlendi mi?
  • Çalıştı kaydı tutuluyor ve panelden görülebiliyor mu?
  • Süre sonu olan bir kilit var mı?
  • Hata türüne göre yeniden deneme kuralı yazılı mı?
  • Uzun işler partiye bölünüp ilerleme işareti kaydediliyor mu?
  • Beklenen saatte çalışmayan iş için uyarı kurulu mu?
  • Elle bakılacaklar kuyruğuna kim bakıyor, belli mi?

KAV Yazılım, geliştirdiği özel yazılım ve entegrasyon projelerinde bu görevleri kayıt, kilit ve uyarı düzeniyle birlikte kurar; işin kendisi kadar çalıştığının kanıtı da teslim kapsamındadır.

Sık sorulan sorular

Zamanlanmış görev ile mesaj kuyruğu arasındaki fark nedir?

Zamanlanmış görev saate bağlıdır: belirlenen anda çalışır ve o anki veriyi işler. Mesaj kuyruğu olaya bağlıdır: bir sipariş oluştuğunda ya da bir kayıt değiştiğinde tetiklenir. Mutabakat ve raporlama gibi periyodik işler zamanlamaya, tek tek olayların işlenmesi kuyruğa uygundur.

Gece çalışan iş çalışmadığında nasıl anlaşılır?

Hata vermeden hiç başlamayan iş günlüğe satır bırakmaz, bu yüzden yalnızca hata izlemek yetmez. Her çalışmanın başlangıç ve bitişini ayrı bir tabloya yazmak ve beklenen saatte kayıt oluşmadığında uyarı üretmek gerekir. Bu kontrol kurulmazsa arıza genellikle eksik rapor üzerinden günler sonra fark edilir.

Aynı görev iki kez çalışırsa veri bozulur mu?

Kilit yoksa bozulabilir; iki kopya aynı kayıtları işlediğinde mükerrer kayıt veya birbirini ezen güncelleme oluşur. Süre sonu olan bir kilitle ikinci kopyanın hiç çalışmaması sağlanır. Ayrıca işin gövdesi, iki kez çalıştığında aynı sonucu üretecek biçimde yazılmalıdır.

Başarısız olan kayıtlar ne yapılmalı?

Sınırsız yeniden deneme yerine belirli bir denemeden sonra kaydı elle bakılacaklar kuyruğuna almak doğrudur. Böylece kalan kayıtlar işlenmeye devam eder ve sorunlu kayıtlar tek bir listede toplanır. O kuyruğun boyutu, sistemin sağlığını gösteren en pratik göstergedir.
  • iş akışı
  • izleme
  • yazilim mimarisi
  • zamanlanmış görev