我目前在研究如何将一个基于Java的单租户Web应用程序转换为完全成熟的SaaS式应用程序,该应用程序使用了Spring、GWT、Hibernate、Jackrabbit、Hibernate Search/Lucene等技术。
我发现一篇文章,强调以下7个方面是将单租户应用程序变成SaaS应用程序的重要改变:
- 应用程序必须支持多租户。
- 应用程序必须具有某种程度的自助注册功能。
- 必须有订阅/计费机制。
- 应用程序必须能够高效地扩展。
- 必须有功能来监视、配置和管理应用程序和租户。
- 必须有机制来支持唯一用户识别和身份验证。
- 必须有机制来支持每个租户的某些程度的定制。
我的问题是,是否有人使用类似于我列出的技术在SaaS/多租户应用程序中实现了上述7个方面的任何一个?在我考虑当前的路径之前,我渴望获得尽可能多的关于最佳实践的建议。
首先,我相当确定我知道如何在模型层处理多个租户。我考虑在所有表中添加租户ID,然后使用Hibernate过滤器(以及Hibernate Search的全文过滤器)根据登录用户的租户ID对所有查询进行过滤。
但是,我对性能也有一些担忧,特别是当我们的租户数量增加时。
如果您有关于如何实现这样的解决方案的建议,将不胜感激(如果这个问题有点太开放,请谅解)。