Güzellik Salonu Platformu
Salonlar için rezervasyon ve işletme platformu. Tek API, tek panel, iki Flutter uygulaması.
Bu nasıl ölçüldü: Test ve kaynak dosyalar depoda sayıldı; kiracı yalıtımı testlerle kapsanmış.
- CLIENTS
- müşteri
- personel
- işletme
- admin
- API
- ExpressREST
- TENANCY
- tenant scopeher sorguda
- DATA
- PostgreSQLSequelize
Problem
Salon platformu ilk satırdan çok kiracılı. Her salonun kendi ekibi, hizmetleri, takvimi var. Bir salon diğerinin verisini görmemeli.
Aynı ürün üç ayrı kullanıcıya bakıyor: telefondan randevu alan müşteri, ekibini yöneten salon sahibi, bütün kiracıları izleyen platform yöneticisi.
Kısıtlar
- Kiracı izolasyonu her sorguya eklenen bir filtre değil, veri erişim katmanının özelliği.
- Dört istemci, tek kod tabanı: API, yönetim paneli, salon uygulaması, müşteri uygulaması.
- Platform, varsayılan seed şifresiyle üretimde çalışmayı reddetmeli.
Mimari kararlar
Kiracı kimliği zorunlu parametre
Kiracı kimliği sessiz bir varsayım değil; modül çağrılarına açıkça geçiyor. Eksik kiracı, sessiz bir çapraz okuma değil, derleme hatası oluyor.
Bedeli: Çağrı yerleri daha uzun.
İzolasyon testle kanıtlanıyor
Çapraz kiracı erişimi varsayılmıyor, test ediliyor: başka kiracının verisini okumak başarısız olmalı.
Bedeli: Test süresi.
Tek kod tabanı, dört istemci
Salon ve müşteri uygulamaları Flutter, yönetim Next.js, API Express/Sequelize; ortak konvansiyon ve rol modeli.
Bedeli: Ortak model değişikliği dört istemciye yayılıyor.
Varsayılan şifre üretime ulaşamaz
Varsayılan şifreyle seed işlemi dokümantasyonla değil kodla engelli.
Bedeli: İlk dağıtım biraz daha yavaş.
Kanıt
- Test dosyası134
- Kaynak dosya483
- İstemci4 (API, admin, salon uygulaması, müşteri uygulaması)
- Kiracı izolasyonutestle kapsanmış
Bilinen sınırlar
- Açık kaynak referans projesi; ticari olarak ölçekte işletilmiyor.
- Ödeme ve SMS entegrasyonları yerel geliştirme için sahte (stub).
Ne öğrendim
Çok kiracılılık kod incelemesinde değil, veri erişim katmanında kararlaşır. Kiracı kimliği unutulabiliyorsa unutulur. Hem de kimsenin bakmadığı o tek sorguda.