Web tabanlı bir SaaS çözümü oluşturmaya çalışıyorum ve çoklu kiracılık veya çoklu örnek kullanma konusunda emin olmadığım bir yola çıktım. Neyi başarmaya çalıştığımı ve her yaklaşımın avantaj ve dezavantajlarını (okuduğum şeye göre fikrim) açıklamaya çalışacağım. Bir yaklaşımda diğerini kaçırdığımda lütfen önerilerinizi ekleyin.
Oluşturmaya çalıştığım uygulama, daha önce de belirttiğim gibi, şirketlerin hesaplarını oluşturabileceği bir SaaS çözümüdür ve her hesabın / şirketin kendi kullanıcıları, müşterileri, ürünleri, hizmetleri ... vb. Her kullanıcı; şirket çalışanı olan; bir hesap / şirketle ilgili olarak yalnızca şirket müşterileri, ürünleri ve hizmetlerine erişebilir. Şirketler sınırsız sayıda müşteri, ürün ve hizmete sahip olabilir, bu nedenle her şirketin kendi veri merkezi olmalıdır.
Bunun için paylaşılan bir veritabanı (giriş için tüm kullanıcıların kimlik bilgilerini kaydetme) ve birden çok veritabanı paylaşılan şeması (hesap / şirket başına veritabanı) oluşturmaya karar verdim. Temel olarak, Çoklu Kiracılık .
Daha sonra birisi bunun yerine Multi Instance kullanılmasını önerdi , burada her şirket kendi uygulama örneğine (yani kod, kütüphaneler, veritabanı, çerçeveler ... vb.) Diğer şirketlerden tamamen ayrılmış olacak. Her kiracının kullanıcılarının yalnızca şirket verilerine erişebildiğinden emin olmam gereken ekstra bir katmana dikkat etmek zorunda olmadığım için bu daha iyi görünüyor. Bu yaklaşımı elde etmek için Docker'a bağımlı olduğumu belirtmek iyi olduğunu düşünüyorum (daha önce hiç kullanmadım), ancak gelecekte ihtiyaç duyacağım özelliklere (daha sonra daha fazla) sahip olmadığını düşünüyorum (en azından ben yapmadım) onları biraz arama ile bulamazsınız).
Ancak, her yaklaşım artıları ve eksileri ile birlikte gelir, bu yüzden hangi yaklaşımın gideceğine karar veremedim. İşte bir liste, ama her ikisinde de bilgim eksik olduğu için benimle çıplak, bu yüzden farkında olmadığım bir şey veya web'de bulamadığım bir sorunun çözümü olabilir: [Her yaklaşımın sıralı bir listesini tek tek karşılaştırmamı izliyorum]
Çoklu Kiracılık :
- Paylaşılan ana bilgisayar / donanım, paylaşılan kod ve çoklu veritabanı.
- Bu var daha kolay kod ve düzeltme hataların işlevselliğini (paylaşılan kodu) uzatmak için.
- Bu var zor (bir bulut hizmetini kullanabilirsiniz) donanım uzatmak veya yasasında değişiklik yapmadan başka bir sisteme bireysel kiracının veritabanını taşımak için.
- En önemlisi, daha önce de bahsettiğim gibi, kullanıcının aslında kendi şirketine ait olduğundan ve diğer şirketin bilgilerine erişmediğinden emin olmak için sisteme fazladan bir katman eklemem gerekiyor.
Çok Örnek :
- Paylaşılan veya paylaşılmayan ana bilgisayar / donanım, örnek başına kod ve örnek başına veritabanı.
- Bu var zor (ben emin bir örneği veya Docker kaba işlevsellik / özelliğini ekleyin ve başkalarına dağıtabilir nerede Docker bunu yapmanın bir yolu varsa değilim) işlevselliği veya düzeltme hataları uzatmak.
- Bu var daha kolay farklı bir host / donanıma bütün örneği taşımak.
- Örnek olarak, her örneğin kendi veritabanına sahip olacağı için bu katmanla ilgilenmem gerekmiyor.
Tüm avantajları ve dezavantajları el ile bir şey yapmak istemem durumunda gereksizdir (her kiracı için el ile bir örnek oluştururken) ve bu yüzden Docker çözümünden şüphe duyuyorum, belki de ana yol budur sorunun nedeni. Soruyu çözümlere referansla cevaplarsanız çok memnun olurum ve bu yaklaşımın neden diğerinden daha iyi olduğunu düşünüyorsunuz?
Bu yardımcı olabilirse (belki?), Laravel'i arka uç için ana çerçeve olarak kullanıyoruz (hepsi RESTfully).