hakanakbulut Video başlığı Multi-tenant (SaaS) olunca sanki multi-tenant SaaS demekmiş gibi olmuş, değil elbette ama SaaS uygulamalarda çok sık kullanılan bir yaklaşım.
İlk düşünmeniz gereken tek bir veritabanı üzerinde tüm veriyi kontrol etmek. Bu genellikle tablolara eklenen bir customer_id, user_id, company_id ya da domain_id gibi bir foreign key ile sağlanır. Bu key aynı zamanda tenant key olarak adlandırılır, ait olduğu tablo ise tenant tablosudur.
Bu yolun avantajları:
- Verilere tek bir yerden erişim sağlanır, bu kolaylık sağlar.
- Ortak veri kopyalanmamış olur. Örneğin uygulamada şehirler varsa bütün tenantlar bundan faydalanır.
- Genel istatistikler daha rahat toplanır.
- Tek veritabanı tüm tenantlar için geçerli olur, tek tek uğraşmak zorunda kalmazsınız.
Dezavantajları:
- Veri ve veritabanı hataları tüm tenantları etkiler.
- Bireysel rollback ya da backup gerçekleştirilemez ya da çok zor olur.
- Tek bir veritabanında çok fazla veri birikmesine sebep olabilir, bu durumda sharding gibi yöntemlere ihtiyaç duyulabilir.
- Müşteriye özel güncellemeler yapılamaz ya da faklı çözümler üretmek durumunda kalabilirsiniz.
Projenize hangisi uygunsa onu seçeceksiniz. Eğer bireysel yedekler ve rollback sizin için çok önemli ise tenant veritabanları ayrı olacak ama çok önemli değilse tek veritabanı her zaman daha iyidir.
Bir müşteri tarafından özel bir istek geldiğinde onu değerlendireceksiniz. Eğer tüm müşterilerin işine yarayabilecek bir şey ise herkesin kullanabileceği şekilde sisteme entegre edeceksiniz. Bir müşteriye özel değişikler yapmayacaksanız, burada söz sahibi sizsiniz.
Özel tasarım gibi konular tema sistemi ile çözülebilir. Bunu sizinle daha önce konuşmuştuk:
https://laravel.gen.tr/d/5952-dinamik-subdomain-temasi