Giriş
Bu full-stack pazar yeri web uygulaması, serbest çalışanlar (freelancer) ile müşterileri tek bir platformda buluşturan, uçtan uca hizmet ve randevu yönetim sistemidir. Hizmet sağlayıcılar uzmanlık alanlarını tanımlayıp esnek çalışma saatlerini ve takvimlerini yönetebilirken; müşteriler kategoriler arasında kolayca gezinebilir, freelancer müsaitliklerini anlık takip edebilir ve çakışma yaşamadan randevu oluşturabilir.
Sorun
Platformun geliştirilmesindeki temel teknik zorluk, eş zamanlı (concurrent) randevu taleplerinde aynı zaman dilimine birden fazla rezervasyon yapılmasını (double-booking) önlemekti. Bunun yanında, çok sayıda freelancer profili, takvim verisi ve müsaitlik slotunun doğrudan ilişkisel veritabanı (MySQL) üzerinden sorgulanması performans darboğazlarına yol açıyordu. Yüksek veritabanı yükünü azaltırken, çakışmasız ve milisaniyeler seviyesinde veri sunan güvenilir bir mimari kurgulamak gerekiyordu.
Ne yaptım
- Mimari ve Backend: ASP.NET Core ve Entity Framework Core kullanarak modüler bir RESTful API mimarisi kurdum; veri kalıcılığını MySQL üzerinde sağladım.
- Eş Zamanlılık & Randevu Çakışması Engelleme: Aynı saat dilimine iki farklı kullanıcının randevu almasını engellemek amacıyla veritabanı seviyesinde kilitleme ve transaction tabanlı zaman slotu doğrulaması geliştirdim.
- Redis Önbellekleme (Caching): Sık sorgulanan freelancer profil detayları, aktif hizmet listeleri ve genel takvim müsaitliklerini Redis üzerinde önbelleğe alarak veritabanı okuma yükünü ve yanıt sürelerini önemli ölçüde düşürdüm.
- Arayüz ve State Yönetimi: React, Redux ve Tailwind CSS kullanarak hem müşteri hem de freelancer panellerine sahip, takvim etkileşimleri hızlı ve duyarlı (responsive) bir arayüz tasarladım.
Sonuç
Geliştirilen platform, çakışmasız randevu süreçlerini yüksek performans ve kararlılıkla yönetebilir hale geldi. ASP.NET Core tarafında uygulanan eş zamanlılık kontrolleri ve Redis önbellekleme katmanı sayesinde veritabanı erişim süreleri minimuma indirildi; hem müşteriler hem de hizmet sağlayıcılar için pürüzsüz bir kullanıcı deneyimi sağlandı.