Fatih Demirağ — Kişisel Portfolyo, Sistem Mimarisi & Teknik Blog
İletişim
24 Ekim 2026 • 5 dk okuma

SaaS Randevu Sistemlerinde Çakışma Önleme Mimarisi ve SMS Hatırlatma Entegrasyonu

Fatih Demirağ
Fatih Demirağ
Yazılım Geliştirici & Sistem Mimarı
SaaS Randevu Sistemlerinde Çakışma Önleme Mimarisi ve SMS Hatırlatma Entegrasyonu

Eşzamanlı Rezervasyon Çakışmaları Nasıl Oluşur?

Kliniklerde, güzellik merkezlerinde ve kuaför salonlarında iki farklı müşteri aynı anda son kalan 14:00 seansına tıkladığında basit bir where('status', 'empty') sorgusu iki rezervasyonu da onaylayabilir (Race Condition). Ranapp randevu sisteminde bu sorunu veritabanı düzeyinde kilit mekanizmasıyla çözdüm.

Pessimistic Locking (lockForUpdate) Kullanımı

DB::transaction(function () use ($staffId, $appointmentTime, $userId) {
    // Seçilen saat dilimini işlem bitene kadar diğer isteklere kilitler
    $slot = AppointmentSlot::where('staff_id', $staffId)
        ->where('start_time', $appointmentTime)
        ->lockForUpdate()
        ->first();

    if (!$slot || $slot->is_booked) {
        throw new \Exception('Bu randevu saati az önce başka bir müşteri tarafından rezerve edildi.');
    }

    $slot->update(['is_booked' => true, 'booked_by' => $userId]);
});

Otomatik SMS Hatırlatma Servisi

Randevuya gelmeme oranını (no-show) %80 azaltan en önemli özellik randevudan 2 saat önce giden SMS bildirimleridir. Laravel Scheduler (Cron) her 15 dakikada bir kuyruğu tarayarak SMS API üzerinden müşteriye konum ve saat hatırlatması gönderir.