Geçtiğimiz yıl 500’den fazla katılımcının katıldığı büyük bir hackathon sırasında yaşanan bir gece vakti krizinden esinlenerek geliştirilen Project Morfeus, konaklama yönetimindeki en büyük kabusa kalıcı bir çözüm getirdi: çifte rezervasyonu tamamen ortadan kaldırdı. Bu sistem, MongoDB’nin işlemsel özelliklerini kullanarak, operasyonel baskının en yoğun olduğu saatlerde bile veri bütünlüğünü koruyor.
2:00 AM Kâbusundan Doğan Bir Çözüm
Etkinliklerin organizasyonunda karşılaşılan en yaygın sorunlardan biri, katılımcıların aynı anda aynı odaya yerleştirilmeye çalışılmasıdır. Geleneksel CRUD tabanlı sistemlerde, birden fazla operatörün aynı bedi eşzamanlı olarak tahsis etmesiyle ortaya çıkan bu durum, verilerin tutarsızlığa uğramasına yol açabilir. Project Morfeus’un arkasındaki ekip, bu sorunu kökten çözmek için tüm tahsis işlemlerini atomik birimler halinde ele alan bir motor geliştirmeye karar verdi.
Gerçek Dünyadaki Senaryoları Modellemek
Projeye başlamadan önce ekip, kampüs konaklama sistemlerinde kullanılan gerçek kuralları inceledi. Bu kuralların en kritik olanları şunlardı:
- Cinsiyet ayrımı: Kadın ve erkek katılımcılar farklı bloklarda kalmalıdır.
- Takım bütünlüğü: Bir takımın üyeleri mümkün olduğunca aynı odada ya da bitişik odalarda yerleştirilmelidir.
- Doğrulama zorunluluğu: Her katılımcının kimlik doğrulaması yapılmadan yerleştirme işlemi tamamlanamaz.
- Sıralı optimizasyon: Odalar, blok bazında belirli bir sıra izleyerek doldurulmalıdır.
Bu kurallar, sistemin sadece verileri değil, aynı zamanda fiziksel dünyadaki lojistik gereksinimleri de karşılayan bir yapıya sahip olmasını sağladı.
MongoDB İşlemleriyle Veri Bütünlüğünün Sağlanması
Project Morfeus’un çekirdeğinde, her tahsis talebinin atomik bir işlem olarak ele alınması yatıyor. Bu yaklaşım, veritabanında gerçekleşen tüm değişikliklerin ya tamamen tamamlanmasını ya da hiç gerçekleşmemesini garanti eder. Böylece, sistem çökmeleri veya ağ kesintileri sırasında bile veri bütünlüğü korunmuş olur.
İşlemsel Sıranın Adımları
Bir tahsis talebi geldiğinde, sistem aşağıdaki adımları izler:
- Eşzamanlılık denetimi: Takımın daha önce tahsis edilip edilmediği kontrol edilir. Eğer tahsis edilmişse, sistem otomatik olarak hata döndürür.
if (team.isAllocated) {
throw new Error("Takım zaten tahsis edilmiş");
}- Cinsiyet bazlı arama: Sistem, katılımcıların cinsiyetine göre uygun blokları tarar ve boş yatakları bulur.
const availableBeds = await db.collection('hostels').aggregate([
{ $match: { gender: teamGender } },
{ $unwind: "$rooms" },
{ $unwind: "$rooms.beds" },
{ $match: { "rooms.beds.isOccupied": false } },
{ $limit: memberCount }
]).toArray();- Büyük yazma işlemi: Tüm değişiklikler, MongoDB’nin işlemsel oturumları kullanılarak tek bir atomik işlem içinde gerçekleştirilir. Bu aşamada:
- Her katılımcı için konaklama kayıtları oluşturulur.
- Seçilen yataklar
isOccupiedolarak işaretlenir. - Takımın
isAllocateddurumu güncellenir.
Peki Neden İşlemler Bu Kadar Önemli?
Diyelim ki, tahsis fişleri basıldıktan hemen sonra sunucu çöktü. Geleneksel sistemlerde, hostel durumu henüz güncellenmediği için aynı yataklar tekrar tahsis edilebilir. Ancak MongoDB işlemleriyle, tüm değişiklikler ya birlikte tamamlanır ya da hiç gerçekleşmez. Bu, fiziksel dünya ile sistem verileri arasındaki uyumu korur.
Operasyonel Verimlilikteki Devrim
Project Morfeus’un devreye alınmasından önce, manuel tahsis işlemleri ortalama 5 dakika sürüyordu. Otomatik sistemle bu süre 2,5 saniyeye indirildi. Ayrıca, çifte rezervasyon riski sıfıra yakın hale geldi ve operasyonel koordinasyon büyük ölçüde basitleştirildi.
| Metrik | Öncesi | Sonrası | |--------|--------|---------| | Tahsis Süresi | ~5 dakika | ~2,5 saniye | | Çifte Rezervasyon | Sık görülen | İmkanı olmayan | | Manuel Koordinasyon | Yoğun | Minimal | | Tahsis Fişi Üretimi | Manuel | Otomatik |
Gerçek Dünyada Test Edilen Güvenilirlik
Sistem, 2023 yılında gerçekleştirilen bir kampüste 1.200 katılımcıya hizmet verdi. Sonuçlar şaşırtıcıydı:
- 0 çifte rezervasyon
- Tahsis süresinde %99,9 verimlilik artışı
- Operatörlerin stres seviyesinde belirgin düşüş
Geliştiriciler İçin Önemli Dersler
Project Morfeus’un geliştirilmesi sırasında edinilen en önemli ders, veri bütünlüğünün hızın önünde olması gerektiğiydi. Fiziksel varlıkların (yataklar, koltuklar, rezervasyonlar) yönetildiği sistemlerde, küçük bir tutarsızlık bile büyük operasyonel sorunlara yol açabilir. Bu nedenle:
- Hız yerine tutarlılık öncelikli olmalıdır.
- Eşzamanlılık sorunlarına karşı dayanıklı sistemler tasarlanmalıdır.
- İnsan hatalarına karşı yedekli mekanizmalar bulunmalıdır.
Geleceğe Bakış: Sürekli İyileştirme ve Ölçeklenebilirlik
Project Morfeus, şu anda yalnızca konaklama sistemlerinde kullanılsa da, benzer mantık diğer rezervasyon sistemlerine de uygulanabilir. Gelecekteki hedefler arasında:
- Yapay zeka destekli tahsis optimizasyonu
- Mobil uygulamalarla entegrasyon
- Çoklu konaklama tesislerini destekleme
Bu proje, arka uç mühendisliğinin ne kadar kritik olduğunu bir kez daha gösterdi: İyi tasarlanmış sistemler, en kaotik anlarda bile güvenilir kalır.
Yapay zeka özeti
Çifte rezervasyon kabusuna son veren Project Morfeus’un ardındaki MongoDB işlemleri, 500+ kişilik etkinliklerde tahsis süresini 5 dakikadan 2 saniyeye indirdi. Veri bütünlüğünü koruyan otomatik sistemin detayları burada.