用于基于灯的 crm 应用程序的 saas 架构

Posted

技术标签:

【中文标题】用于基于灯的 crm 应用程序的 saas 架构【英文标题】:saas architecture for lamp based crm application 【发布时间】:2012-05-28 23:03:39 【问题描述】:

这看起来像是一系列问题,但都与我们一直在构建的基于 SaaS 和 php 的应用程序有关。我们意识到我们的应用程序架构并对其进行研究,以便我们确保在投入生产之前遇到所有基本技术并且不会面临任何失败。!

为了支持 SaaS,我们决定让我们的数据库多租户,每个客户都有自己的数据库。我的思绪在进一步以下问题列表中令人难以置信。

如何提供定制 SaaS 多租户应用程序以满足个别租户需求的能力?

如何保证每个租户数据库的安全,不至于意外访问对方的数据?

什么是集群,如果数量增加,我们如何向它们添加应用程序和数据库的新实例。客户?

我们如何确保 SaaS 网站的性能和可扩展性?

我们如何处理 SaaS 应用程序的故障,尤其是在我们推出新版本和更新时(持续集成)?

有什么特殊的解决方案来处理 SaaS 应用程序中的订阅者/客户以及激活和停用模块的权限?

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

【问题讨论】:

这不是一个坏问题,但是它相当广泛,不适合这个网站。 Stack Overflow 处理特定的编程问题,而不是这类问题。 【参考方案1】:

我写了一篇很好的文章,其中包含了我们在使用 PHP 开发 SaaS 应用程序时需要考虑的许多项目。检查SaaS application development using PHP in Zend Framework

您的一些问题的答案如下:

如何提供定制 SaaS 多租户应用程序以满足个别租户需求的能力?

它就像一个正常的网站开发。假设您有资源 A 到 Z,那么您需要将分配的或可访问的资源保留在数据库中。然后在访问时您可以简单地检查权限。

如何保证每个租户数据库的安全,使他们不会意外访问对方的数据?

SaaS 应用程序的数据库设计是 Stack Overflow 上多次讨论的话题。您可以为每个租户使用单一数据库或唯一数据库。对于大项目,第二个是合适的。

如果您使用单一数据库,只需将租户 ID 存储在所有表中。然后在对租户进行身份验证时,根据请求来自的子域将租户 ID 保留在 SESSION 中。然后在所有数据库操作中传递此 ID,因此它不会意外影响任何其他租户的数据。

【讨论】:

以上是关于用于基于灯的 crm 应用程序的 saas 架构的主要内容,如果未能解决你的问题,请参考以下文章

SaaS 系统架构设计经验总结

SaaS架构经验总结

站在甲方的角度是如何选择CRM

SAAS解决方案架构师--北京

中国SaaS的中场

基于多租户SaaS架构设计:SaaS多租户平台基础功能介绍