我目前正在考虑将使用 Spring、GWT、Hibernate、Jackrabbit、Hibernate Search / Lucene(以及其他)的基于 Java 的单租户 Web 应用程序转换为成熟的 SaaS 风格的应用程序。
我偶然发现了一篇文章,其中强调了以下 7 个“事情”,这些“事情”是对单个租户应用程序进行重要更改以使其成为 SaaS 应用程序:
- 应用程序必须支持多租户。
- 应用程序必须具有某种程度的自助注册。
- 必须有一个订阅/计费机制。
- 应用程序必须能够有效地扩展。
- 必须有适当的功能来监控、配置和管理应用程序和租户。
- 必须有一种机制来支持唯一的用户标识和身份验证。
- 必须有一种机制来支持每个租户的某种程度的定制。
我的问题是,是否有人使用与我列出的技术类似的技术在 SaaS/多租户应用程序中实现了上述 7 项中的任何一项?在我走上我目前正在考虑的道路之前,我渴望获得尽可能多的关于最佳方式的意见。
首先,我很确定我对如何在模型级别处理多个租户有很好的了解。我正在考虑将租户 ID 添加到我们所有的表中,然后使用 Hibernate 过滤器(以及用于 Hibernate 搜索的全文过滤器)根据登录用户的所有查询的租户 ID 进行过滤。
然而,我确实对性能有一些担忧,尤其是当我们的租户数量增长得相当高时。
任何有关如何实施此类解决方案的建议将不胜感激(如果这个问题有点过于开放,我深表歉意)。