SaaS 架构设计的参考指南( 三 )


检查用户是否具有查看页面的权限 。
if (userHasPermissionToViewPage(userId)) {showPage();}else {showNoPermissionError();}检查用户是否有权执行某个动作 。
?复制代码
if (userHasPermissionToPerformaction(userId)) {showButton();} else {doNothing();}实现提示:与其他服务相比,这个服务的通信量预计会更高,具体取决于你的权限会有多少粒度 。你可以考虑使用和 Web 应用存储库实现类似的选择:Java、Go 或 C#,搭配 RDBMS 数据存储和一个缓存系统 。用户权限管理需要一个 Web 管理 UI 。
高阶设计下图显示了运行时中组件之间的交互方式 。

SaaS 架构设计的参考指南

文章插图
这种解决方案的好处包括:明确所有权、重用通用功能以及关注点分离 。
高阶序列下图显示了路由服务将用户路由到请求页面的序列 。从 Web 应用存储库中检索到产品 Web 应用详细信息之后,便会发生这些序列 。
选项 1在产品 Web 应用中调用身份验证 。
SaaS 架构设计的参考指南

文章插图
在产品 Web 应用中调用身份验证 。
选项 2在路由服务中调用身份验证 。
SaaS 架构设计的参考指南

文章插图
在路由服务中调用身份验证
使用 Web 应用存储库、RBAC 和身份验证页面作为一个 Web 应用Web 应用存储库、RBAC 和身份验证服务需要它们自己的 Web UI 来管理数据或接收用户输入 。Web 应用存储库、RBAC 和身份验证服务均有它们自己的 Web 应用 。使用另一个具有管理 UI 的 Web 应用可以管理对某个 Web 应用的访问权限 。
SaaS 架构设计的参考指南

文章插图
 
某些 Web 应用用作其他组件的 UI 。
Web 应用存储库 UI 允许我们使用所需的权限来管理路径和 Web 应用 URL 。
RBAC UI 用于管理用户、组织、角色和权限 。
身份验证服务的前端 UI(即登录页面)也被部署为 Web 应用 。
技术说明
  • 服务通过 HTTPS 调用进行通信 。
  • 服务是内部的,但某些 Web 应用由路由服务公开提供 。
  • 这里没有详细介绍冗余的信息 。你可以简单地在构成 SaaS 平台的服务之前添加一个负载均衡器,并在多个区域中运行它们 。
长期改进下面总结了一些应该牢记的准则,可以帮助你成功运营 SaaS 平台 。
1. 将技术文档视为产品一部分关键在于要让团队能通过良好的文档管理产品 Web 应用,同时充分利用可用的工具 。好的文档可以最大程度地减少你的团队重复询问 SaaS 平台相关问题的需求 。
2. 给工程师同事提供便利你可以在用于 RBAC 和 Web 应用存储库的 Web UI 管理工具之上,再开发一个 NodeJS/React 模板,其中包括开箱即用的 RBAC 和身份验证的客户端,以尽量减少将 Web 应用添加到 SaaS 平台所需的工作 。
这样你的工程师或你自己就可以方便地从这个模板创建新的 Web 应用,而无需花费很多精力将其集成到平台中 。
3. 工程设计审查糟糕的代码可能会浪费数天甚至数周的开发时间,但相比之下,糟糕的架构决策可能会浪费数月至数年的时间 。对于大型公司而言,工程设计审查可能更容易推进;但如果你自己是一名开发人员,那么也可以从社区中认识的其他工程师那里获得反馈 。
花费合理的时间预先编写工程设计文档,并在工程设计审查期间获得反馈,可以为你节省很多时间 。应该验证软件设计假设,并让其他工程师为你设计的软件架构找出尽可能多的漏洞 。




推荐阅读