saas是什么意思(saas领域什么意思)
为什么需要 SaaS?
软件即服务(SaaS)是一种灵活的软件分发模型,可以由少到一个人或多至上千人的组织来运作。云服务的问世让任何人都可以独立运行自己的 SaaS,并在此基础上建立免费增值模式的业务。
与其他类型的软件服务相比,它的系统设计相对简单。但是,由于没有合适的基准架构,如果我们在设计 SaaS 时没有认真思考,其结果可能会变得一团糟。我见过的一些例子中,SaaS 平台最终成为一个庞大却脆弱的单体 Web 应用程序,其中遍布冗杂的功能。
本文的目的是为你提供一种参考架构,为 SaaS 实现可伸缩性和可维护性。SaaS 平台的需求产品需求用户和用户组的访问控制。向用户和组织提供订阅层,其中每种订阅类型都可以访问一组产品。托管内部管理工具的能力。可扩展的功能。我们应该能轻松添加新的产品和功能集。设计目标隔离的服务带来清晰的责任归属与点分离。减小任何更改的影响半径,比如说分析仪表板中的错误不应该影响管理仪表板。隔离运行 Web 应用程序。每个 Web 应用程序都提供一组相关的功能来服务我们的客户。在大型公司中,每个 Web 应用程序都可以有自己的专门团队来构建和运行。解决方案:隔离和重用
将服务隔离到逻辑组件中的设计可以让我们的 SaaS 有更好的可扩展性。我们应该针对我们的架构作出改进,在规模扩展时打破常规:规模越大,架构却变得越容易管理。就算只有一位孤独的车间开发人员,他也可以很容易运行并管理多个服务,尤其是现在我们已经拥有了各种各样可以编排微服务的云服务,这种事情做起来就更简单了。
因为计划在 SaaS 平台上运行这些功能 Web 应用(feature Web app),所以我们应该先思考"我们可以重用什么?"这个问题。隔离
隔离的 Web 应用程序是将相关功能分组在一起形成的一个 Web 应用程序,或是代表一款产品的一组 Web 应用程序。具体而言,我将其称为"产品 Web 应用",后文将做更进一步的介绍。在 Web 应用程序中分组相关功能
例如,所有 " 分析报告功能 " 都可以组合在一起,成为一个独立的 Web 应用程序,该应用将由一个专门的团队来构建和维护,且这个团队在构建分析报告产品方面具有相关的领域知识。在大型公司中,每个产品 Web 应用都有自己专门的团队来构建和运行。内部与公共(可选)
你的产品 Web 应用也可以分为两个部分:内部和公共部分。内部和公共部分之间明确区分开来后,你就能在自己的专用网络内路由一组专用的安全管理工具。
在内部和公共区域代理这些服务的工作由 " 路由服务 " 处理,具体将在后面的章节中介绍。重用
这些是不同的功能 Web 应用及其相应服务共享的通用功能。每种功能 Web 应用都需要利用下面列出的这些功能。
组件
下面这些是构成我们 SaaS 的逻辑组件。路由服务
每个请求都需要路由到正确页面。当用户访问 yourWebsite.com/your-path 时,/your-path 需要将用户转发到其关联的请求页面或功能 Web 应用。路由服务可确保用户得到他们所请求的内容。
在本文的例子中,我们将需要路由服务(routing service)调用另一个服务以获取路径和 Web 应用程序 URL 映射,以及所需权限。
这些映射预计将在运行时更新。例如,在需要引入新页面或更改用户权限而无需发布的情况下更新。
路由服务还负责内部或公共的产品 Web 应用。可以将其部署到两个单独的运行实例中。
公共和私有路由服务设置的高级设计
实现技巧:Node.js 的 http-proxy-middleware 或 Nginx 的 Reverseproxy 是两个可行的选择。如果你不需要在运行时从其他服务中以编程方式检索路径、URL 和权限,则后者是理想的选择。有关更多信息,请参见后文的 "Web 应用仓库 " 章节。产品 Web 应用
每个产品 Web 应用都通过一个可在内部访问的 URL 公开,例如 https://my-product-app-1.mydomain.local。其中一些由路由服务路由,以供订阅的用户访问,而另一些仍在内部访问。
通过路由服务路由的产品 Web 应用
在后台,这可以是单个或一组带有 Web 前端的微服务。这些 Web 应用彼此独立,有自己独立的代码库、支持服务、部署管道,并且理想情况下是由不同的团队所有。在 SaaS 平台中,它们的分组方式与其所有团队的结构保持一致。
这样以来我们就能将大型 Web 项目分解为许多可管理的单元。可以将这种模式想象成是将大块牛排切成许多小块。一个产品 Web 应用包含一组不应与其他 Web 应用重叠的相关功能。
实现技巧:产品 Web 应用可以是任何 Web 应用程序,例如常见的 Express、Node.js 和 React 堆栈。将设计系统与可复用的微前端(例如 Mosaic 或 Open Components)搭配使用,可以让你的产品拥有一致的外观和体验。Web 应用存储库
这个服务负责保存多个团队拥有的 Web 应用程序的记录。路由服务调用 Web 应用存储库,以获取与所请求路径对应的 Web 应用 URL(匹配某个条目)。
路由服务检索 Web 应用 URL 及其关联的路径
下面是一个 Web 应用存储库表示例,用来说明它的功能。
基于角色的访问控制(RBAC)服务将提供权限信息,以帮助我们检查登录用户是否有权访问产品 Web 应用。
如果要维护的产品 Web 应用条目数量很少,这里就可以用一个简单的路由和硬编码哈希映射的代理。
实现技巧:这既可以是具有自己的 Web 管理 UI 的 RESTful 服务,也可以是简单的基础架构,比如说是位于路由服务中,或者来自对象存储(如 AWSS3)的代码配置文件。具体的实现方式将取决于所需的规模和可配置性。如果你要继续考虑服务实现,则可以将 Java、Go 或 C#与 RDBMS 或 NoSQL 数据存储搭配使用。
对于这个服务来说,验证过程是非常重要的,如果路径或 Web 应用 URL 的配置不正确,则可能会影响你服务的可用性。如果无法确定要支持的产品数量,请使用进化原型方法。你不必在开发周期的早期就构建这个服务,因为一开始只用一个简单的配置文件就够了。身份验证
应该有一个跨服务共享的专用身份验证服务。这里 JSON Web 令牌就可以派上用场,因为我们能轻松地通过标头跨多个服务传递令牌和其他有用的用户信息。
可以从路由服务或产品 Web 应用中调用身份验证服务。如果从产品 Web 应用调用身份验证服务,就能让产品 Web 应用所有者灵活地对他们想要保护的任何页面实施身份验证。这种灵活性让服务所有者可以管理公共页面,例如用户注册页。这种方法还减少了在路由服务中执行的逻辑。
产品 Web 应用调用身份验证。
或者也可以在路由服务中处理身份验证过程。从安全角度来看,这使身份验证处理更容易审核,因为我们无需查看每一个产品 Web 应用页面。这也意味着,如果需要让一个网页开启公开访问权限,则应该采用某种形式的白名单。这是另一个可配置性折衷。
路由服务调用身份验证。
实现技巧:AWSCognito、Auth0 或任意 JSON Web 令牌(JWT)身份验证服务。基于角色的访问控制(RBAC)
验证用户身份后,我们需要能够回答以下问题:是否允许登录用户访问此页面或他们尝试访问的信息?
可能的答案有:是的,用户 Alice 属于组织 A,该组织有权访问内容 A。否,用户 Bob 属于组织 B,该组织无权访问内容 B。是否允许登录用户执行此动作?
可能的答案有:是的,用户 Alice 具有管理员角色,该角色具有删除已注册用户的权限。否,用户 Bob 只有成员角色,该角色对所有内容只有只读权限。
RBAC 帮助我们回答上述问题,从而让我们的 Web 应用可以允许或撤消用户执行的特定动作。
产品 Web 应用从 RBAC 服务中检索权限信息。
下图显示了对用户进行身份验证并使用 RBAC 检查其权限时发生的事件流。
下面的伪代码说明了如何在特定用例中使用 RBAC 服务。
检查用户是否具有查看页面的权限。if (userHasPermissionToViewPage(userId)) { showPage(); }else { showNoPermissionError();}
检查用户是否有权执行某个动作。
复制代码if (userHasPermissionToPerformAction(userId)) { showButton(); } else { doNothing();}
实现提示:与其他服务相比,这个服务的通信量预计会更高,具体取决于你的权限会有多少粒度。你可以考虑使用和 Web 应用存储库实现类似的选择:Java、Go 或 C#,搭配 RDBMS 数据存储和一个缓存系统。用户权限管理需要一个 Web 管理 UI。高阶设计
下图显示了运行时中组件之间的交互方式。
这种解决方案的好处包括:明确所有权、重用通用功能以及点分离。高阶序列
下图显示了路由服务将用户路由到请求页面的序列。从 Web 应用存储库中检索到产品 Web 应用详细信息之后,便会发生这些序列。选项 1
在产品 Web 应用中调用身份验证。
在产品 Web 应用中调用身份验证。选项 2
在路由服务中调用身份验证。
在路由服务中调用身份验证使用 Web 应用存储库、RBAC 和身份验证页面作为一个 Web 应用
Web 应用存储库、RBAC 和身份验证服务需要它们自己的 Web UI 来管理数据或接收用户输入。Web 应用存储库、RBAC 和身份验证服务均有它们自己的 Web 应用。使用另一个具有管理 UI 的 Web 应用可以管理对某个 Web 应用的访问权限。
某些 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. 工程设计审查
糟糕的代码可能会浪费数天甚至数周的开发时间,但相比之下,糟糕的架构决策可能会浪费数月至数年的时间。对于大型公司而言,工程设计审查可能更容易推进;但如果你自己是一名开发人员,那么也可以从社区中认识的其他工程师那里获得反馈。
花费合理的时间预先编写工程设计文档,并在工程设计审查期间获得反馈,可以为你节省很多时间。应该验证软件设计假设,并让其他工程师为你设计的软件架构找出尽可能多的漏洞。
我并转发此篇文章,私信我"领取资料",即可免费获得InfoQ价值4999元迷你书!
樱桃哪里的好(樱桃是什么季节的水果)樱桃是现在非常火的水果,它不仅颜值高,红如玛瑙,且口感好,一口咬下汁水炸开在味蕾,另外樱桃富含维生素C,食用对身体有很多好处,随着樱桃需求增加,现在国内很多地区都有栽种。放眼全国,
哪里学肠粉(附近有可以学拉肠粉的地方吗)珠海肠粉到处都是,但是正宗的西关布拉肠却越来越少了,是因为做起来麻烦,所以全部被那些抽屉式的肠粉代替了,但是抽屉式的肠粉再怎么做也没有布拉肠那样的口感,特别是老广东人,就是喜欢吃布
李子勋视频(星夜故事秀李子勋全集)李子勋视频(星夜故事秀李子勋全集)一本娓娓道来,却让人心悦诚服的心理分析的伴侣书!一部兼具文学性哲理性和实用性的治愈系心灵读本。书中,李子勋从心理学视角融入中国传统文化和哲学的智慧
李子璇为什么没有出道(李子璇到底多强)很多人都觉得当偶像是一件非常轻松的事情,每天只需要把自己装扮的美美的,在舞台上跳个舞唱个歌就能够获得很多粉丝的追捧,但是殊不知这样的待遇背后却是十年磨一剑的汗水。而且,如果努力能够
小李子为什么叫小李子(小李子好大)莱昂纳多为什么叫小李子?奥斯卡的梗是多么鬼?莱昂纳多可是一个非常有名的男演员但是他却被中国的影迷们叫成小李子。最开始的来源是港台地区,主要还是发音的的原因,在港台,人们是叫他李奥纳
为什么叫小李子(小李子玩水枪梗)莱昂纳多为什么叫小李子?奥斯卡的梗是多么鬼?莱昂纳多可是一个非常有名的男演员但是他却被中国的影迷们叫成小李子。最开始的来源是港台地区,主要还是发音的的原因,在港台,人们是叫他李奥纳
轻度越野剽悍GLK引领时尚风潮拥有轻度越野能力又结合GML与GLModel的外观造型,这就是M。Benz沿用W204底盘的最新力作GLKClass,融合现役家族风格以简洁俐落的外观重新提供消费者有稜有角新选择。
最速SUV火热登场BrabusGLKV12BrabusGLKV12httpwww。brabus。de才刚刚成功创下最速SUV宝座的TechartCayenneTurbo,虽然在Techart技术支援下拥有强大的性能作撑腰,
起亚kx7怎么样(起亚kx7停产了还能买吗)每经记者孙桐桐每经编辑裴健如传闻已久的东风悦达起亚股比生变或将尘埃落地。日前,每日经济新闻记者获悉,东风公司已确定将要退出东风悦达起亚,将在产权交易所挂牌转让所持东风悦达起亚25的
glc怎么样(奔驰glc3l的质量如何)德国品质,大空间高逼格,有里有面,实拍奔驰GLC众所周知,德国豪华车里最优雅的品牌是奔驰,其外观沉稳内饰豪华,很多成功的人们都被看做是优雅,婚庆时往往都会亮相,奔驰SUV除售价贵之
奔驰商务车多少钱(七座奔驰mpv商务车)在很多时候,我们去选择一款汽车的时候,都会从品牌出发,只要是品牌实力强的车型,一般都不愁卖。我们就拿丰田来说,它的车型销量在全世界都很出色,特别是旗下的卡罗拉,是世界级的销量冠军。
中国著名景点(中国十大风景名胜古迹)中国著名景点(中国十大风景名胜古迹)中国十大名胜古迹是指万里长城桂林山水北京故宫杭州西湖苏州园林安徽黄山长江三峡台湾日月潭承德避暑山庄西安秦兵马俑十个风景名胜区。这十个景区分布于祖
南昌生活(南昌风景名胜区有哪些)南昌生活(南昌风景名胜区有哪些)图花瓣网侵删01。高考那年,许多人都在问我,要报考深圳哪所学校,因为他们都知道,我喜欢深圳,也一直渴望考去深圳。我笑了笑,没有说什么,转头就去跟后桌
太宰治语录(太宰治经典名句!)太宰治语录(太宰治经典名句!)日本战后文学有三大不可逾越的山峰,即川端康成三岛由纪夫以及太宰治。提到太宰治,那就不得不说起他笔下那部半自传体小说人间失格。可以说,人间失格与太宰治联
现代诗人有谁(中国当代著名诗人)现代诗人有谁(中国当代著名诗人)互联网时代,让我们可以忽略时间和距离,把我们聚集在网络上,大家一起聊天,一起在网上冲浪。在广大的网友朋友中,不只存在会讲各种笑话和各种搞笑段子的开心
迪拜为什么有钱(迪拜真的很有钱吗?)1。迪拜是一个国家吗?相信很多人都会肯定的说是啊!但事实上并不是。迪拜是一个城市,阿联酋是国家,迪拜是其中之一。2。迪拜的官方语言是阿拉伯语,政府的文件也用阿拉伯语书写。但日常生活
为什么我没钱(为什么我没钱别人都说我有钱)1习惯性地用信用卡消费信用卡刷起来是很方便,但刷信用卡也会让人上瘾。很多人无论买什么都刷信用卡,虽然能看到自己消费了多少,但并不能看到存款在减少,只有等到还款的那天,才会发现心在滴
写小说去哪个网站好(晋江好混还是起点好混)首先提到小说,我们第一个会想到的就是起点中文网它的后台是腾讯阅文,老牌网站。流量很大,许多大神都在起点上发布作品,对于老手来说写得好,可能一夜封神。像唐家三少老鹰吃小鸡爱潜水的乌贼
怎么样写小说(写小说都是怎么开始的)咳咳,上一篇给大家说了一下如何发作品,那么今天就开始说如何写作品。小编小板凳,花生瓜子矿泉水啦先说一下经验哈!小编一开始入行的时候,完全不知道什么大纲细纲,就是拿起键盘就是干,噼里
哪个网站写小说(可以自己写小说的平台)有一些网文平台为了防止作者的收入过低,提供了一项创作保障金,大多数的创作保障金都还是比较高的。塔读就有为期4个月的创作保障金。作品满20万字以后,日更4000,月更15万,可获得保
如何写小说(适合新手的写小说软件)如何写小说(适合新手的写小说软件)创作,特别是对于一个热爱写作的人而言,这个过程是欢欣雀跃的,是享受。小说作为创作的基础,其中涉猎的层面众多大量人物背景故事前后铺垫小故事之间的串联
三国真髓传(三国真髓传为何不写了)三国真髓传(三国真髓传为何不写了)迎大家继续关注懒猫荐玄幻,曾经红极一时的100本网络小说系列本期推出NO7180(八),(一)至(七)请大家点击懒猫头像阅读,敬请关注后续PS要是