SAAS yapıları tasarlamak için aslında bir kaç veritabanı modeli kullanılmaktadır. Kısaca açıklamak gerekirse;
1. Her yeni müşteriye yeni bir veri tabanı oluşturma(Multi-Database)
2. Her müşteriye yeni bir şema oluşturma(Multi-Schema)
3. Her müşteriye ait id ile kayıtları joinleyerek oluşturma(Shared Schema)
Yukarıdaki bu modellerin birbirine göre artıları eksileri bulunmaktadır. Dikkat edilmesi gereken konular ölçeklendirme, migration durumlarında yükünü kaldırabileceğiniz modeli seçmektir. Önümüzdeki yakın bir süreçte hayata geçirmeyi düşündüğüm saas projem için 2 ve 3 arasında gidip gelmekteydim. Böyle bir yapıda Müşterilerin verileri birbirinden çok iyi izole edilmelidir. 1. ve 2. model verilerin izole edilmesi açısından en iyi çözümlerdir. Ayrıca 2. model ölçeklendirme açısından da çok avantajlı olmasına rağmen, tek panelden müşterilerin yönetilebilmesi, müşteriler bazında karşılaştırmalı rapor alınması(Örneğin: kayıt sayılarına göre müşterilerileri listeleme gibi) her müşteri için ayrı şema bağlantısı gerektirdiğinden mantıksız bir hale geliyor. Son edindiğim bilgilere göre, kesin olmamakla beraber, paraşüt ön muhasebe yazılımı 3. modeli kullanıyormuş, bende o modeli kullanacağım. Ayrıca Laravel'in geliştiricisi Taylor Otwell tarafından geliştirilmişbir yapı olarak Laravel Spark(3. Modeli Kullanıyor) incelemeye değer. Türkiye'de Stripe Ödeme altyapısını kullanabilsek 100$ gibi bir ücrete anahtar teslim saas altyapısına sahip oluyorsunuz. Hemde Laravel tarafından official geliştiriliyor. Ayrıca Aşağıdaki Laravel paketlerinide incelemeye değer.
Paketler;
https://github.com/hyn/multi-tenant
https://github.com/orchestral/tenanti
Notlar ve Kaynaklar;
İngilizce aramalarda multi-tenant olarak arama yaparsanız birçok kaynağa ulaşacaksınız.
https://docs.microsoft.com/en-us/azure/sql-database/sql-database-design-patterns-multi-tenancy-saas-applications
https://stackoverflow.com/questions/2213006/how-to-create-a-multi-tenant-database-with-shared-table-structures
http://blog.memsql.com/database-multi-tenancy-in-the-cloud-and-beyond/