SaaS 是什么

界说

相信咱们都对云服务中的 IaaS、PaaS、SaaS 早就有所耳闻,现在更是衍生出了 aPaaS、iPaaS、DaaS 等等的类似概念。关于 SaaS 也有各种各样的界说,本文给出的界说是:

SaaS 是一种依据互联网供给服务和软件的交付方式,一切网络根底设备及软件、硬件运作渠道的一切前期施行、后期保护都由 SaaS 渠道完结,用户只需求租借软件服务并经过互联网接入运用。SaaS 模型依靠敏捷性和运营功率,作为推动增长、掩盖和创新的事务战略的支柱。业界咱们一般会以 Salesforce 作为 SaaS 的标杆。

【网易云商】构建高效 SaaS 体系的技能关键与最佳实践

价值

现在市场上越来越多的企业和安排选用 SaaS 服务来替代本来传统的软件收购布置方法,其原因能够首要总结为以下几个方面。

【网易云商】构建高效 SaaS 体系的技能关键与最佳实践

别的,比较于传统软件,SaaS 的盈利方式也决议了客户的成功关于 SaaS 厂商来说极其重要,只要客户成功了,才会有续费, SaaS 项目才有办法继续下去。当然 SaaS 体系比较传统软件也会有一些缺陷,如独立性、可控性、个性化等。

根底架构

SaaS 体系一般是一个普通的分布式体系,因而它必定具有分布式体系的一切组成要素,如服务发现、负载均衡、序列化协议、传输协议、授权认证、网络安全等等。

进口

客户最直接接触的一般是 SaaS 体系的客户端,客户端的方式能够依据事务的需求决议,常见的有浏览器网页、移动端 APP、小程序、智能设备等。

客户端到服务器的进口一般是一个通用域名或者是每个租户的独立子域名。如互客的进口是 huke.163.com,网易七鱼的进口是 xxx.qiyukf.com。域名的背面就必定需求 DNS 的存在,需求装备出合理的 DNS 解析,一般传统的依据 UDP 的 DNS 服务简略受到中间人进犯,存在被劫持的风险,别的也存在被运营商封禁等状况,因而 SaaS 体系一般经过建立自己的 HTTPDNS 来躲避风险。

有了域名作为进口之后,下一步便是客户端和服务器之间的通信协议,关于少量简略的 SaaS 体系来说只要经过域名和 HTTP 协议就能够完结一切服务,但大部分 SaaS 体系都会存在双向通信的需求,因而还需求保护长连接通道,常用的如原生 TCP 协议,或 Websocket 协议。别的如果事务中有媒体流传输的需求,还会用到 UDP、RTP 协议等。当然,现在市场上关于各种场景和需求都有对应的成熟处理计划,因而 SaaS 体系一般不会去从 0 开端处理一切问题,如长链接和媒体流咱们能够集成网易云信的服务来处理。

【网易云商】构建高效 SaaS 体系的技能关键与最佳实践

接入层

接入层一般是各种路由协议以及多层署理组成,如运营商和 AS 之间一般用 BGP 协议或者三线,机房内部一般会有接入的三层交换机,四层署理等等。网易七鱼现在的接入计划如下图所示,而关于规划较小的事务,为了灵活性和性价比,一般会在交换机和 Nginx 之间加入四层署理 nlb。这一层根本都是由集团的 SA 同学担任建立和运维。

【网易云商】构建高效 SaaS 体系的技能关键与最佳实践

事务层

这里咱们不去讨论事务上的各种规划方式和分层,因而把接入层之后、数据层之前的一切服务和设备统称为事务层。一般事务层是一个 SaaS 体系研制中投入资源最大的,线上问题如功能瓶颈、稳定性、安全漏洞等大部分都来自于事务层,因而该层也是开发和线上运维的关键。

在事务层现在 SaaS 体系最常用的仍是微服务的架构,不同于 IaaS 或 PaaS,SaaS 事务的一个重要特征是其事务复杂度很高、事务链路很长,而微服务的架构刚好能够很好地应对这种状况。当然在事务刚开端的时分,咱们能够用简略的单体应用来快速实现原型验证,等事务发展起来后再开端逐步微服务拆分。

流量经过接入层后,一般为了体系的灵活性,会经过 Nginx 的 upstream 来转发恳求到网关,由网关共同分发到对应的事务服务,而事务服务又能够拆分为许多独立的微服务相互调用。这也就带来了 SaaS 体系中的大部分常见问题,如:

  • 谁能够运用什么服务?(租户办理)

  • 服务在哪里?(服务发现)

  • 恳求应该由哪个服务节点处理?(负载均衡)

  • 信息怎么传输?(传输协议)

  • 怎么防止一个租户影响另一个租户?(资源阻隔)

  • 输入和输出怎么表示?(序列化协议)

  • 网络出现分区、超时或者服务出错了怎么办?(熔断、降级、服务治理)

  • 服务权限怎么办理?(认证授权)

  • 怎么确保通信安全?(网络安全)

  • 重要程度和依靠联系怎么样?(服务分级)

  • 怎么确保不同机器的服务状况共同?(分布式数据共同性)

等等…这些全都需求研制人员投入很多的精力,每个点打开细说都是一个很大的话题。依据事务和技能的考虑,一般还需求引入消息行列、缓存、装备中心、守时任务等组件。

【网易云商】构建高效 SaaS 体系的技能关键与最佳实践

数据层

一切事务逻辑,最后必定都会在数据存储上得到体现。在一个 SaaS 体系中,最常用的存储依然是联系型数据库,如咱们的 DDB、别的常用 HBase、TiDB 等作为冷数据存储,ES、MongoDB 等作为对应功能的数据存储。因而 SaaS 体系中多个数据存储之间的共同性是一个需求注重的地方。

目标存储方面,咱们集团内有 Nos,市面上的云厂商也都有相应的服务,不需求自己构建。不管客户存储的目标仍是体系中的某些资源,为了提高客户的拜访速度,咱们都需求有 CDN 的存在。

SaaS 事务中还有一个常见的需求便是 BI,这要求体系具有数据分析才能,OLAP 数据库也是必不可少的,网易云商选用的是 ClickHouse。

在某些特定的事务场景,也许还需求用到 TSDB,录入智能设备的传感器读数,用户的活动轨道,体系的状况变化等。

数据层还有一个非常重要,但常常被忽视的话题便是数据合规。特别是关于 SaaS 事务,由于面向的客户都是企业和安排,因而数据的安全合规是非常重要的。例如网易云商有专门的中间件用于数据库的敏感数据加密。

【网易云商】构建高效 SaaS 体系的技能关键与最佳实践

运维才能

到现在为止,一个 SaaS 体系根本现已建立成型能够供给服务了。可是咱们对体系的状况还一无所知,因而还要构建满足强大的运维才能。其间包含了可观测性、计量计费、快速恢复、毛病演练、体系治理各个方面。以可观测性为例,咱们需求采集体系中的各种数据并经过很多技能手段来观测体系的状况,如体系资源、事务指标、健康状况、链路追寻、事务埋点、报警办理、错误统计、流量水位、趋势分析、变更办理等。针对 SaaS 事务的特色,还需求特别对体系进行租户维度的监控和办理。

【网易云商】构建高效 SaaS 体系的技能关键与最佳实践

布置方式

SaaS 体系依据阻隔程度的不一样能够分为三种布置方式,每种布置方式都会涉及到架构的调整适配,都有各自的优缺陷。

同享方式

指 SaaS 体系中的一切资源,如事务服务、数据存储等全部是同享的,这要是绝大分部 SaaS 体系一开端选用的方式,这种方式体系的优势是灵活性高,资源利用率高,选用集中化办理,开发运维更简略。缺陷是租户间简略相互影响,合规性也简略被一些特定职业客户挑战,还有很难为不同租户供给差异化服务。

【网易云商】构建高效 SaaS 体系的技能关键与最佳实践

专属方式

指 SaaS 体系中几乎一切资源都是租户独占的,这种布置方式的优势是每个租户有彻底阻隔的环境,租户之间不会有影响,能够针对不同租户供给个性化的服务。可是缺陷也很明显,这种布置方式的资源利用率低、本钱高、运维难度高、办理复杂。一般会被用于一些特定职业或者特别需求的客户场景。

【网易云商】构建高效 SaaS 体系的技能关键与最佳实践

混合方式

指 SaaS 体系中有部分资源是一切租户同享的,还有部分资源是租户独占的,这种方式是现在大型 SaaS 体系常见的布置方式,能够统筹上面种方式的优缺陷,针对不同的客户供给不同的处理计划。

【网易云商】构建高效 SaaS 体系的技能关键与最佳实践

未来发展

上面简要介绍了建立一个 SaaS 体系的首要进程,虽然 SaaS 的规划初衷是快速为特定事务场景供给垂直处理计划,但企业对跨事务跨部门的需求也越来越强烈,例如营销服务一体化、私域运营等场景。因而,业界不管在事务仍是技能方面都还在不断地探究之中,例如关于 SaaS 的本钱操控,合规性,可扩展性,针对不同租户的差异化服务等等,都是 SaaS 厂商常常面对的难题。有人在探究布置方法的优化,有人在探究产品的规划计划,有人在探究低代码的方式,还有人在探究生态合作的计划。不管怎么,咱们的的努力都是在为了客户的成功,回到咱们的起点,只要客户成功了,SaaS 才有存在下去的价值。