Teknomers | Dünyadan Güncel Teknoloji | Oyun | Müzik | Film | Spor HaberleriTeknomers | Dünyadan Güncel Teknoloji | Oyun | Müzik | Film | Spor HaberleriTeknomers | Dünyadan Güncel Teknoloji | Oyun | Müzik | Film | Spor Haberleri
Yazı Tipi BoyutlandırıcıAa
  • Anasayfa
  • Teknoloji
    • Siber Güvenlik
    • Yapay Zeka
    • Donanım
    • Bilim
  • Yazılım
  • Savunma & İstihbarat
  • Oyun
  • Yaşam
    • Finans
    • Sinema
    • Dünyadan Haberler
  • İş Birliği
Okuma: Ölçeklenebilir Bir Rezervasyon Sistemi Oluşturma: Manuel Planlamadan 7/24 Otomasyona Geçiş
Paylaş
Yazı Tipi BoyutlandırıcıAa
Teknomers | Dünyadan Güncel Teknoloji | Oyun | Müzik | Film | Spor HaberleriTeknomers | Dünyadan Güncel Teknoloji | Oyun | Müzik | Film | Spor Haberleri
Ara
Bizi Takip Et
  • Hakkımızda
  • Gizlilik politikası
  • Tanıtım Yazısı ve Backlink Hizmeti
© 2026 Teknomers. All Rights Reserved.

Anasayfa » Ölçeklenebilir Bir Rezervasyon Sistemi Oluşturma: Manuel Planlamadan 7/24 Otomasyona Geçiş

Yazılım

Ölçeklenebilir Bir Rezervasyon Sistemi Oluşturma: Manuel Planlamadan 7/24 Otomasyona Geçiş

teknomers
Son güncelleme: 19 Haziran 2026 21:52
teknomers
Paylaş
Paylaş



Problem

Geçtiğimiz yıl, Portekiz’de büyüyen bir berber dükkanları ağı için bir rezervasyon sistemi geliştirmek üzere işe alındım. İlk ihtiyaçlar basit görünüyordu: müşterilerin çevrimiçi randevu almasını sağlamak. Ancak sistem 5 dükkandan 50+ dükkana ölçeklendiğinde, beklenenden çok daha karmaşık bir mimari yapı oluşturma zorlukları ile karşılaştık.



İlk Mimari: MVP

Laravel ve PostgreSQL kullanarak geleneksel bir istek-cevap modeliyle başladık:

Client → API → Database → Email Queue → Email Service
Enter fullscreen mode
Exit fullscreen mode

Basit. Küçük trafik için işe yaradı. Ancak yük altında çökmeye başladı.

Problem: Her rezervasyon:

  • Veritabanı yazma
  • Berber için e-posta bildirimi
  • Müşteri için e-posta onayı
  • 3 farklı entegrasyonla takvim senkronizasyonu
  • SMS hatırlatma planlama

Hepsi senkron olarak. Tek bir yavaş işlem tüm isteği engelledi.



Ölçekleme Problemi

6. ayda, elimizde:

  • 50 berber dükkanı
  • 3.000 günlük rezervasyon
  • Cevap süreleri 200 ms’den 2-3 saniyeye düştü
  • Müşterilerin onaylarını 30+ saniye sonra aldığı

Senkron model artık geçerli değildi.



Çözüm: Her Şeyi Asenkron Yapmak

Sistemi RabbitMQ ile mesaj kuyruklama kullanarak yeniden yapılandırdık:

Client → API (Hızlı) ↓
         Queue → Workers (Paralel İşleme)
              ├→ Email Worker
              ├→ SMS Worker
              ├→ Calendar Sync Worker
              ├→ Analytics Worker
              └→ Notification Worker
Enter fullscreen mode
Exit fullscreen mode

Sonuç: API cevap süresi 2.5 saniyeden 180 ms’ye düştü. Müşteriler anında onay aldı.



Ana Teknik Kararlar



1. Eşzamanlılık için Veritabanı Tasarımı

Randevu slotları için optimist locking uyguladık:

CREATE TABLE appointments (
    id BIGINT PRIMARY KEY,
    barber_id BIGINT,
    time_slot_id BIGINT,
    customer_id BIGINT,
    version INT DEFAULT 1,
    status ENUM('pending', 'confirmed', 'completed', 'cancelled'),
    created_at TIMESTAMP,
    updated_at TIMESTAMP,
    UNIQUE KEY(time_slot_id, version)
);
Enter fullscreen mode
Exit fullscreen mode

Neden? Çift rezervasyon engeli için pahalı kilitler olmadan. version sütunu, atomik güncellemelerin yalnızca başka bir süreç kaydı değiştirmediğinde başarılı olmasını sağlar.



2. Zaman Dilimi Karmaşıklığını Yönetme

Bizi şaşırtan bir sorun: farklı zaman dilimlerinde randevu alan uluslararası müşteriler.

// Her şeyi içsel olarak UTC olarak sakla
$appointment = Appointment::create([
    'scheduled_at' => $request->scheduled_at->setTimezone('UTC'),
    'barber_timezone' => $barber->timezone,
    'customer_timezone' => Auth::user()->timezone,
]);

// Müşterinin zaman diliminde döndür
return $appointment->scheduled_at
    ->setTimezone($customer->timezone)
    ->format('Y-m-d H:i');
Enter fullscreen mode
Exit fullscreen mode



3. Kuyruk Güvenilirliği

Kolay yoldan öğrendik: mesaj kuyrukları ölü mektup yönetimi gerektirir.

// Başarısız işleri eksponansiyel geri dönüş ile tekrar dene
Queue::job(SendConfirmationEmail::class)
    ->tries(5)
    ->backoff([1, 5, 10, 30, 60]) // saniye
    ->retryUntil(now()->addHours(24))
    ->dispatch($appointment);
Enter fullscreen mode
Exit fullscreen mode

Başarısız e-postalar derhal inceleme için ölü mektup kuyruğuna gitti ve sessizce başarısız olmadı.



Performans Metrikleri

Optimizasyondan sonra:

MetrikÖnceSonraDeğişim
API Cevap Süresi2.5s180ms%93 daha hızlı
Rezervasyon Başarı Oranı%94%99.7Çift rezervasyon engellendi
Müşteri Memnuniyeti3.2/54.7/5Daha hızlı onaylar
Eşzamanlı Rezervasyonlar5/saniye150/saniye30 kat kapasite



Farklı Olacaklarımız

  1. 1. İlk günden asenkron olarak başlamak – Büyüme aşamasında kuyruk sistemini yeniden inşa ettik. Acı vericiydi.
  2. 2. İzlemeyi daha erken uygulamak – Bottleneck’leri müşteri şikayetleri aracılığıyla keşfettik, paneller vasıtasıyla değil.
  3. 3. Aşırı sınamaları daha fazla yapmak – 11 PM rezervasyonları, gece yarısı geçişleri, yaz saati uygulaması gibi durumlar üretimde debelenmemize sebep oldu.



Ders

Bir rezervasyon sistemi görünüşte bir programlama problemidir ama aslında bir eşzamanlılık problemidir. İş mantığı basit. Mühendislik ise değil.

Aynı anda:

  • Birden fazla kullanıcı aynı kaynağa (randevu slotları) erişmeye çalışıyorsa
  • Zaman hassasiyeti olan işlemler (onayların anında olması gerekir)
  • Dağıtılmış işler (birden fazla entegrasyon)

…eşzamanlılık için tasarlanmış bir sisteme ihtiyacınız var, kolaylığa değil.


Benzer zorluklarla dağıtılmış sistemler geliştirdiniz mi? Yorumlarda yaklaşımınızı paylaşın — özellikle zaman dilimi problemini daha iyi nasıl çözdüğünüzü!

Kaynak: Orijinal Makale

Contents
  • Problem
  • İlk Mimari: MVP
  • Ölçekleme Problemi
  • Çözüm: Her Şeyi Asenkron Yapmak
  • Ana Teknik Kararlar
    • 1. Eşzamanlılık için Veritabanı Tasarımı
    • 2. Zaman Dilimi Karmaşıklığını Yönetme
    • 3. Kuyruk Güvenilirliği
  • Performans Metrikleri
  • Farklı Olacaklarımız
  • Ders
Sistem Kurma: Kürdistan’da Modern Çok Satıcılı Kitap Pazarı
İşçi Çöküşlerini Durdurma: Üretimde Laravel Kuyruk Bellek Sızıntılarını Giderme
Yandex Arama API’si Üzerine: yandex-search-php PHP Kütüphanesi İncelemesi
AI Kapsamlarında N+1 Problemi: Laravel + OpenAI’nin Ölçeklendirilmesi
Big Data (Büyük Veri) Nedir?
Bu Makaleyi Paylaş
Facebook Bağlantıyı Kopyala Yazdır
Paylaş
Önceki Makale 15 inçlik Dell dizüstü bilgisayar 250$ indirimle 349$ oldu
Sonraki Makale Kritik: ‘usbliter8’ Açığı ile Apple A12 ve A13 Güvenli Boot Zinciri Kırıldı

Sanal Medya

FacebookBeğen
452Takip Et
PinterestSabitle
237Takip Et

Son Eklenenler

Çinli rakip CEO’su, Musk’a Fable 5 sınıfı AI modeli vaadinde bulundu
Donanım
Şifreleme, casus yazılım ve Mythos: Siber İhracat Kontrolünün İşe Yaramadığına Dair Tarihsel Kanıtlar
Genel
Teknolojide Devrim: Slay the Spire 2 Güncellemesi Geliyor!
Oyun
Acil: Klue OAuth Saldırısı Büyüyor, Icarus Hırsızları İş Başında
Siber Güvenlik
Go robotaksileri ve satın almaları hedefliyor. İşte neden önemli
Genel
ViewSonic VX2730D-4K: Hız, renk ve doğrulukta 4K oyun monitörü incelemesi
Donanım
//

Siber güvenlik, yapay zeka ve savunma sanayiinden; finans ve sinema dünyasına uzanan geniş bir yelpaze. Teknomers; teknoloji, strateji ve yazılım dünyasını sade bir dille sizlerle buluşturuyor.

Kurumsal

  • Hakkımızda
  • Gizlilik politikası
  • Tanıtım Yazısı ve Backlink Hizmeti

Kategoriler

  • Teknoloji
  • Oyun
  • Sinema
  • Siber Güvenlik
  • Bilim
  • Finans
  • Dünyadan Güncel Haberler

Populer

  • TV'de Ücretsiz İzlenebilen Şifresiz Erotik Kanallar (2025 Güncel Frekans Listesi)

  • The Last of Us PC Kontrolleri: Hızlı Silah Değiştirme ve Tüm Tuşlar (2025)

  • Hogwarts Legacy'de Odaklanma İksiri Nasıl Yapılır?

Teknomers | Dünyadan Güncel Teknoloji | Oyun | Müzik | Film | Spor HaberleriTeknomers | Dünyadan Güncel Teknoloji | Oyun | Müzik | Film | Spor Haberleri
Bizi Takip Et
© 2026 Teknomers. All Rights Reserved.
Welcome Back!

Sign in to your account

Kullanıcı Adı veya E-posta Adresi
Şifre

Şifrenizi mi unuttunuz?