2012-05-22 95 views
0

這看起來像的範圍的問題,但所有都涉及到SaaS和基於PHP的應用程序,我們已經建立。我們意識到我們的應用程序架構和研究它,讓我們確保遇到的所有必要的技術之前,我們轉移到生產和不面對任何失敗!SaaS的架構基於燈CRM應用

支持的SaaS我們決定讓我們的數據庫多租戶,每個客戶都將擁有自己的數據庫。我的想法在下面的問題列表中令人驚歎。

  • 如何提供定製SaaS多租戶應用程序以滿足個人租戶需求的能力?

  • 如何確保每個租戶數據庫的安全,使他們不會無意中訪問彼此的數據?

  • 什麼是羣集,以及如何增加新的應用程序和數據庫實例,以增加它們。的客戶?

  • 我們做什麼,以確保SaaS的網站的性能和可擴展性?

  • 我們如何處理SaaS應用程序的故障,尤其是當我們啓動新版本和更新(持續集成)時?

  • 任何特殊的解決方案,用於處理用戶/客戶,激活和停用模塊的權限,SaaS應用程序?

I have attached block diagram of DB we have decided to go with

+0

這不是一個壞問題,但它很廣泛,不適合本網站。堆棧溢出處理特定的編程問題,而不是這種類型的問題。 – jprofitt

回答

0

我已經寫了一篇好文章很多,我們需要考慮在開發PHP中的SaaS應用程序的項目。檢查SaaS application development using PHP in Zend Framework

解答大家的一些問題都低於:

如何提供自定義一個SaaS多租戶應用程序,以滿足個別租戶需求的能力?

它像一個正常的網站開發。假設您有資源A到Z,那麼您需要將分配或可訪問的承租人資源保留在數據庫內。然後在訪問時可以簡單地檢查權限。

如何確保每個租戶數據庫的安全,使他們不會意外訪問彼此的數據?

關於SaaS應用程序的數據庫設計是一個在Stack Overflow上討論很多次的話題。您可以使用單個數據庫或每個租戶的唯一數據庫。對於大項目,第二個是合適的。

如果您打算使用Single Database,只需將TENANT ID存儲在所有表中。然後在認證租戶時,根據請求來自的子域,在SESSION中保留租戶ID。然後在所有數據庫操作中傳遞此ID,因此,它不會意外地影響任何其他租戶的數據。

+0

該鏈接不再有效 –

+0

@JorgeZapata立即查看。該鏈接正在工作。 –

+0

非常有幫助,謝謝@stanzen –