Zamanlayıcı Tabanlı İşlemleri Otomatikleştirme (Cron + Queue Yapıları)

Modern yazılım sistemlerinde, belirli işlemlerin belirli zamanlarda otomatik olarak tetiklenmesi oldukça yaygındır. Örneğin; günlük raporlamalar, e-posta gönderimleri, veri arşivleme veya stok güncellemeleri gibi işlemler manuel yapılmak yerine, zamanlayıcılarla yönetilerek sistemsel güvenilirlik ve verimlilik sağlanır.

Bu yazıda, cron işleri ve kuyruk (queue) yapılarının birlikte kullanılmasıyla nasıl güçlü ve esnek otomasyon sistemleri kurabileceğinizi ele alıyoruz.


Cron Nedir?

Cron, Unix tabanlı sistemlerde belirli komutları zamanlanmış olarak çalıştırmaya yarayan bir zamanlayıcıdır. En temel haliyle, bir işlemin ne zaman tetikleneceğini belirtmenize olanak tanır.

Örnek bir cron ifadesi:

bashCopyEdit0 8 * * * /scripts/raporla.sh

Bu ifade her gün sabah saat 08:00’de raporla.sh script’ini çalıştırır.


Kuyruk (Queue) Yapıları Ne İşe Yarar?

Queue (kuyruk) sistemleri, işlemlerin arka planda, sıralı ve asenkron bir şekilde yürütülmesini sağlar. Bir işlem çalıştırıldığında doğrudan sistem kaynaklarını yormak yerine, bir kuyruğa atılır ve uygun kaynak müsait olduğunda işlenir.

Yaygın queue sistemleri:

  • Redis + Bull / BullMQ (Node.js)
  • RabbitMQ
  • Amazon SQS
  • Celery (Python)

Cron ve Queue Birlikte Nasıl Kullanılır?

Zamanlama işlemleri cron tarafından yönetilirken, bu cron job sadece işi başlatmaktan sorumlu olur. Asıl ağır işlem ise kuyruk sistemine bırakılır.

Neden Bu Yaklaşım?

  • ⚙️ Esneklik: Aynı işi birden fazla worker ile paralel çalıştırabilirsiniz.
  • 🧱 Yalıtım: Zamanlama ve işlem işleyişi ayrılır, sistem hataları daha kolay yönetilir.
  • 🔄 Retry Mekanizması: Queue sistemleri başarısız işleri otomatik tekrar deneyebilir.
  • 📊 Gözlemlenebilirlik: Hangi işin ne zaman başladığı, ne zaman bittiği izlenebilir.

DinamikUp ile Gerçek Hayat Uygulaması

DinamikUp olarak geliştirdiğimiz projelerde, özellikle yüksek hacimli e-posta bildirimleri, gece yapılan veri senkronizasyonları veya entegrasyon sistemleri gibi zamanlama gerektiren durumlarda, cron ve BullMQ kombinasyonunu sıklıkla kullanıyoruz.

Örneğin:

  • Her gece saat 01:00’de cron job tetiklenir.
  • Bu cron job, “stokGuncelle” işini BullMQ kuyruğuna ekler.
  • Kuyrukta çalışan worker, arka planda bu işi sırasıyla işler.

Bu yapı sayesinde API’lerimiz hızlı yanıt verirken, sistemsel otomasyonlar arka planda sorunsuz ilerlemeye devam eder.


Kodla Gösterelim (Node.js + BullMQ)

tsCopyEdit// cron.js
import { Queue } from 'bullmq';
import cron from 'node-cron';

const queue = new Queue('islem-kuyrugu');

cron.schedule('0 1 * * *', async () => {
  await queue.add('stok-guncelle', { tarih: new Date() });
  console.log('İş kuyruğa eklendi.');
});
tsCopyEdit// worker.js
import { Worker } from 'bullmq';

const worker = new Worker('islem-kuyrugu', async job => {
  if (job.name === 'stok-guncelle') {
    // stokları güncelle
    console.log('Stoklar güncelleniyor...');
  }
});

Ne Tür İşler Otomatikleştirilebilir?

  • 📩 Toplu e-posta gönderimi
  • 📈 Raporlama & log analizi
  • 🔄 Veritabanı senkronizasyonları
  • 🧹 Eski verilerin temizlenmesi
  • 🛒 E-ticaret sistemlerinde sepet hatırlatmaları
  • 🧾 Fatura oluşturma & arşivleme

Sonuç

Zamanlayıcı (cron) ve kuyruk (queue) yapılarının birlikte kullanımı, ölçeklenebilir ve hataya dayanıklı otomasyon sistemleri kurmanın en etkili yollarından biridir. İyi tasarlanmış bir otomasyon altyapısı, hem geliştirici deneyimini hem de kullanıcı memnuniyetini artırır.


#cronjob, #queue, #otomasyon, #NodeJS, #BullMQ, #Zamanlayıcı, #YazılımMimari, #DinamikUp, #Otomatikİşlemler, #BackEndGeliştirme,

Bir yanıt yazın

E-posta adresiniz yayınlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir