我正在嘗試構建一個基於Web的SaaS解決方案,並且我碰到了一個不確定使用多租戶或多實例的道路。我會試着描述我想要達到的目標,並且每種方法都有優點和缺點(根據我的看法,我認爲)。請包括您的建議,以防我錯過了其中一種方法。多租戶或多實例?
,我試圖建立的應用程序是,正如我所說,一個SaaS解決方案,企業可以建立自己的賬戶,每個賬戶/公司有它自己的用戶,客戶,產品,服務...等。每個用戶;誰是公司員工;與一個帳戶/公司相關的用戶只能訪問其公司客戶,產品和服務。公司可以擁有無限數量的客戶,產品和服務,因此每家公司都應該擁有自己的數據中心。
對於我決定創建一個共享數據庫(節省用於登錄的所有用戶憑證)和多個數據庫共享模式(每用戶/企業數據庫)。基本上,多租戶。
然後有人建議使用多實例代替,每個公司都會有自己的應用程序(即代碼庫,數據庫,框架...等),從其他公司完全分開的實例。這聽起來更好,因爲我不需要照顧額外的層,我需要確保每個租戶的用戶只能訪問其公司的數據。我認爲這是很好的一提的是,我根據Docker實現這種方法(我以前從來沒有使用過),但我認爲它缺乏(這些後來更多),我將需要在未來的功能(至少我沒有發現他們有一點搜索)。
然而,每個方法有以下優點和缺點,所以我不能讓與方式去決定。這裏列出了一個列表,但是由於我缺乏這兩方面的知識,所以可能有些我不知道的東西,或者是我在網絡上找不到的問題的解決方案:[每種方法都有的有序列表,其中I,接着爲一個比較的一個]
多租約:
- 共享主機/硬件,共享代碼,和多數據庫。
- 它容易擴展代碼的功能並修復錯誤(共享代碼)。
- 這是更難延長硬件(可以使用雲服務),或個別租戶的數據庫移動到另一個系統沒有做修改代碼。
- 最重要的是,正如我之前提到的,我需要爲系統添加一個額外的層,以確保用戶實際上屬於他/她的公司,而不是訪問其他公司的信息。
多實例:
- 共享或每個實例非共享主機/硬件,每個實例代碼,和數據庫。
- 這是更難擴展功能或修復錯誤(我不確定是否有方法在Docker中執行此操作,您可以將功能/功能添加到一個實例或Docker容器,並將其部署到其他)。
- 它的更容易將整個實例移動到不同的主機/硬件。
- 作爲實例,我不需要照顧該層,因爲每個實例都有自己的數據庫。
所有的優點和缺點的情況下,多餘的我想手動做任何事情(如手動爲每個租戶創建一個實例),這就是爲什麼我懷疑泊塢窗的解決方案,除非有解決辦法這可能是問題的主要原因。如果您能夠參考解決方案回答問題,我將不勝感激,您爲什麼認爲這種方法比其他方法更好?
如果這有助於(也許?),我們使用Laravel作爲後端(所有RESTfully)的主要框架。
謝謝。我會從一開始就回答你的問題。開始時會有兩個客戶(公司),所以有兩個客戶。對於第二個問題,只是另一個SaaS,它可能是成功或失敗,但是,至少會有兩個客戶。整個事情取決於用例是可以理解的,但您引用的成熟度模型將多實例解決方案視爲較低級別(級別1),而將其他多租戶解決方案(級別2)視爲較高級別,但是我不要這樣看。它也沒有提到任何關於從關卡移動到另一個關卡...... – Anas