从字面中理解SaaS的全称是Software as a service, 即软件即服务。
从服务模式来看,SaaS是一种软件授权和交付模式,以订阅模式代替传统授权模式,以集中式部署代替用户环境部署,通常被认为是按需付费软件。
目前SaaS被广泛的认为是云计算的一部分,跟Infrastructure as a service, platform as a service, xxx as a service等并列。
从用户访问方式来看,用户一般使用像浏览器这样的瘦客户端访问SaaS应用,随着更多的企业级软件陆续提供SaaS化,客户端也将变得更加丰富,如微软Office 365, 钉钉,Saleforces, Oracle Fusion Cloud等。
SaaS的产品可以简单的分为三个阶段。
第一阶段是在上世纪60年代,将各种商业应用集中托管在一台大型主机里,从这个年代起IBM和其它大型机厂商提供一种服务中心业务,为客户提供分时享用和效用计算服务,这些大型机厂商通过还提供计算资源和数据库存储服务。
第二阶段是上世纪90年代,随着Internet的不断扩展,一种新的集中计算服务出现,被称为应用服务提供商(ASP)。ASP不但提供应用服务所需要的主机,还提供专业化的业务应用,并且通过集中式的托管硬件与软件来降低客户成本。
第三阶段是进入新世纪后,SaaS将ASP模式发扬光大,但又有着明显的区别:
如上文所述,大多数主要SaaS应用都基于多租户架构,在这个架构中应用采用单一版本和统一的配置(硬件,网络,操作系统)为所有的用户服务。为了支持伸缩性,应用必须可以部署在多服务器中以支持横向扩展。有一些应用运行多版本共存,比如新版本上线后只能小部分用户开放以验证产品的稳定性,验证成功后才全量发布。
租户识别是SaaS平台入口环节的重要功能,通过系统访问域名(DNS)和用户登陆信息来进行确认访问具体租户的应用与数据。
子域名进入:
域名格式参考:[租户域名].[部署池].[主域名].[根域名]
示例如下:my-pos.eastchina01.examledomain.com
公共域名进入:
登陆域: login.examledomain.com
用户成功登录后直接跳转到子域,用户在子域中访问系统,若一个用户绑定多个租户则由用户选择待进入的租户。
租户在资源层次结构中建立数据隔离边界,每个租户都有自己的以下属性:
多租户架构存储资源隔离模式主要有如下三种类型,不同类型的架构复杂度和成本均不同。
应用服务器采用共享集群的方式,将租户分配到不同的部署池中,租户的分配可采取随机或者容量规则,从并发数和数据库连接数的维度考虑每一个集群部署租户的数量。
把所有的资源配置作为元数据,存储到配置中心,在系统运行时动态的创建和路由DataSource,消息集群,缓存集群,路由key为tenantId。
缓存服务,基于成本和管理的便利性,缓存服务采取垂直切分,根据业务模块和部署集群分配缓存集群。缓存KEY以Tenant识别符为前缀,在缓存访问层进行访问控制。
消息服务,基于成本与性能的考虑,给为每一个租户部署消息集群或者单独频道与队列变得复杂且低效。消息服务采取共享资源的访问,通过消息体进行约定,在消息体头部分加上租户标识,消息订阅者获得消息后根据消息头的租户ID进行处理,调用租户的API完成业务操作。
当租户选择一款SaaS产品时,产品的安全性将会放置在第一位考虑,如数据隔离,敏感数据加解密,数据访问权限,个人隐私以及运维流程。针对安全性的考虑,SaaS一般需要考虑以下几点:
一个成熟的SaaS产品需提供灵活用户界面配置能力。当新版本发布时为业务对象增加一个字段,需要在Web端,移动端和关联的报表同步改动生效,那么产品能通过相同的工具和流程去配置产品。常见的配置项如下:
一个SaaS产品要取得成功,系统的集成能力是重要的一环,API设计是集成能力提供的关键因素。业内首屈一指的云厂商Amazon AWS的产品设计之初就提出Everything is API和The API first的策略。在产品内部所有的行为都应该是API的调用,无论是内部访问还是外部访问,一切设计均围绕API进行。
API能力以微软的AKS产品为例:
如果有土豪顾客对产品表示十分喜欢,受制于内部的安全因素无法在公有云上使用产品,灵活的SaaS需具备私有化的能力。要满足这个要求,在技术选型需考虑以下:
微胖中年码农-老王