Yıllardır "cron öldü" deniyor; o öldüğü söylenen araç, 2026'da hâlâ her sunucuda ve her dağıtım hattında yaşıyor. Sunucusuz platformlar bile kendi zamanlayıcılarını cron adıyla sunuyor. Cron'un dönüşü tesadüf değil: arka planda çalışan işlerin büyük bölümü için basit zamanlama hâlâ en ucuz çözüm. Asıl mesele, cron ile kuyruk arasındaki sınırı doğru çizmektir.

Bu ayrımı yapamayan ekipler iki uca da savrulur: her şeyi cron'a bağlayıp dakikada bir "yeni iş var mı?" diye sorgulayan sistemler ya da bir dosya temizliği için mesaj aracısı kuran, altyapıyı gereğinden şişiren projeler. İkisinin ortası, çoğu projenin gerçek ihtiyacıdır.

Cron Ne Zaman Yeterli?

Cron, "her gün sabah üçte" gibi takvime bağlı işler için tasarlanmıştır: yedekleme, rapor üretimi, veritabanı temizliği, sertifika yenileme. Başlangıç zamanı öngörülebilir, iş süresi önemsizdir ve birkaç dakikalık gecikme kimseyi rahatsız etmez. Ayrıca bağımlılığı yoktur: mesaj kuyruğu, ekstra servis, izleme paneli istemez.

# her gece 03:15'te eski dosyaları temizle
15 3 * * * /usr/bin/php /app/bin/temizle.php >> /var/log/temizlik.log 2>&1

Cron'un zayıf noktası, takvimle hiçbir bağlantısı olmayan işlerdir: kullanıcı bir eylem yaptığında hemen çalışması gerekenler. Bunu cron'a zorlamak, her dakika "yeni iş var mı?" diye sorgulamak demektir; bu da gecikmeyi dakikalara ve boş sorgu trafiğine sabitler.

Kuyruk Ne Zaman Gerekli?

Kullanıcı kayıt olduysa doğrulama e-postası hemen gitmeli; ödeme onaylandıysa fatura üretimi hemen başlamalı. Bu işler olaya bağlıdır ve kuyruk doğal evrenleridir: istek, işi kuyruğa bırakıp cevap verir; işçi boşaldığı an alır. Kuyruğun üstünlüğü yalnızca gecikme değildir: yeniden deneme, gecikmeli iş, öncelik ve ölçekleme gibi sorunların hepsi aynı çatıda çözülür.

await kuyruk.add('eposta', { tur: 'hogeldin', kullaniciId: k.id }, { delay: 60_000 });

İkisini birleştiren desen de vardır: cron, yalnızca kuyruğa iş atan zamanlayıcıdır. Gece yarısı raporu için cron Tetiklenir, ama iş asıl işlemciye kuyruk üzerinden iletilir. Böylece takvim disiplini ile kuyruk esnekliği aynı işte bulunur; çakışan çalışmaları önlemek için iş kuyrukta tekil kimlikle atanır.

Cron'u Uzun Süreli İşlere Zorlamayın

Cron'un ikinci zayıflığı, iş süresidir: beş dakikada bitmesi beklenen iş, saatin altında kalırsa bir sonraki tetikleme üstüne biner. Kilit dosyası veya dağıtık kilit ile binmeyi önleyebilirsiniz; ama iş süresi öngörülemez hâle geldiyse, sorun cron'da değil işi doğru yere koymamış olmanızdadır. Ayrıca her işin çalışma süresini kaydedin: ortalama üç dakika süren bir gece işi, altı dakikaya çıktığında bu grafik, kapasiteyi konuşmadan önce söyleyen ilk uyarıdır.

Arka plan işlerinde doğru soru "cron mu kuyruk mu" değil, "bu iş takvimin mi olayın mı çocuğu"dur. Takvimin çocuğuysa cron'a, olayın çocuğuysa kuyruğa verin; ikisinin kesiştiği nadir işte cron'u yalnızca tetikleyici olarak kullanın.

Ve unutmayın: arka plan işi, önemsiz iş demek değildir. Kullanıcı arayüzünün görmediği kod, en az arayüz kadar test ve izleme hak eder. Sessiz köşede çalışan işin hatası, ancak sonuçlarında görünür; sonuç da çoğu zaman haftalar sonra, telafisi en pahalıyken ortaya çıkar. Yedeklemeniz, cron'unuzun başarı yazdığı günden itibaren en az bir kez geri dönüştürülerek test edilmeyi de hak eder: çıktısı bozuk bir başarılı iş, sessiz felaketlerin en klasik türüdür.