2017-01-09 60 views
1

在我工作的公司,我們爲數據庫隔離的多個組織開發和託管CRM系統 - 即我們的客戶不共享1個類似於Facebook的大型數據庫,每個客戶端都有獨立的數據庫,但是同樣的CRM軟件。所有其他系統方面(如緩存)都是特定於組織的。多個組織的系統設計

我們正在將服務器遷移到AWS上,這給了我們一個思考基礎架構的機會。

我們的基礎系統是使用CodeIgniter框架編寫的,所以我們在考慮不使用同一個CRM的多個實例,而是根據主機名/用戶帳戶創建單個實例並附加相關的數據庫憑據(此方法CRM將通過專用的URL訪問)。例如。如果用戶A爲公司B工作,我們將連接到公司B的數據庫而不是公司C.這個例子也有助於我們的版本控制。

我只是想知道其他人是否有過類似的經歷,以及總體感覺是保持實例完全隔離還是遷移到真正的「軟件即服務」單實例方法?

回答

0

它實際上取決於數據庫的大小和流量。如果你有很多流量,單獨的數據庫會更好,因爲如果他們需要更多的資源,它可以輕鬆地將它們移動到自己的服務器實例上,而且它可以輕鬆管理。如果流量不大,則可以使用一個數據庫,但如果您需要針對特定​​公司的具體情況,則這樣做風險很大。明智的做法是,單個實例更容易維護,因爲您不必單獨爲每個實例推出更改,並且如果您的服務器達到容量,只需使用負載平衡器並旋轉同一個webserver的更多實例()記住DB應該在單獨的服務器上。

+0

數據庫大小相對較小,每個組織5 GB。我很可能會查看額外的用戶身份驗證層,該層映射到組織,然後加載相關的數據庫憑據。然後讓所有人通過https:// crm。[x] .com訪問。 - 我看過負載均衡器,擁有單個域名要直截了當。 – aldocx

+0

如果您擁有專用的URL,則負載平衡可能會變得複雜,但如果您需要它,仍然可能。至於解決方案本身,這與我們爲多客戶端項目所做的相同:一個應用程序和專用數據庫,如果所有客戶端的核心邏輯相同,則只需按用戶組處理數據庫連接。 – Auris

0

此主題的作者已接受提案作爲答案。不過,我建議您閱讀multi-tenant architecture,這將引導您更多。在這裏,您可以將個別公司關聯爲租戶。

0

有在選擇多tencancy或單租戶架構,其中包括一些重要的注意事項:

  • 安全 - 你能有效地隔離數據,訪問,權限等多租戶環境?
  • 基礎設施成本 - 您是否能夠有效地利用單一租戶的服務器/平臺容量?在AWS上,縮放可以幫助解決這個問題。
  • 許可費用 - 在單一租借環境中是否存在重要的額外許可證費用(通常更多的服務器意味着更多的許可證)?
  • 實施和維護的成本/成本 - 單租戶解決方案是否需要更多精力來管理部署和維護基礎架構?