Appearance
本文写作目的是探索XaaS(IaaS、PaaS和SaaS)三种模式的概念及区别,以及多租户的基础概念
XaaS
随着云计算、云服务等概念的兴起,XaaS的概念也被不断提及
一切皆服务(XaaS)是一个术语,是在IT领域首先提出来的。它描述了与云计算和远程访问相关的一大类服务。借助云计算技术,供应商可以通过网络或类似网络为公司提供不同类型的服务。这个想法始于基本的软件即服务(SaaS),云提供商提供单独的软件应用程序。随着云服务的发展,增加了平台即服务(PaaS)、数据库即服务(DaaS)、基础设施即服务(IaaS)和通信即服务(CaaS)等其他术语。

IaaS(Infrastructure as a Service)
基础设施即服务,提供基于云的虚拟化计算和存储服务
IaaS通过即用即付的方式为用户提供网络、存储和计算等基础设施资源。用户只需要购买和配置应用程序及系统所需的资源,然后自己负责部署、维护和开发应用程序。可以把IaaS简单理解为基于云的虚拟化硬件服务提供商,购买了IaaS的服务你就拥有了能随时随地联网的服务器。
IaaS 通常为互联网企业提供虚拟化的计算资源,它主要技术组件包括计算资源、存储和网络。采用 IaaS 后,可以访问虚拟组件,在它之上创建自己的 IT 平台,而不是在自己的数据中心上搭建。
在 IaaS 模型中,第三方服务提供商以高度自动化的交付模式为客户托管硬件设备、操作系统和其他软件、服务器、存储系统,以及其他各种 IT 组件。在某些情况下,他们还处理持续的系统维护、数据备份和业务连续性等任务。
IaaS 服务的领先供应商(即第三方服务提供商)有亚马逊网络服务(AWS)、微软、谷歌、IBM、阿里巴巴云、Oracle、Virtustream、CenturyLink、Rackspace,以及 Joyent。

PaaS(Platform as a Service)
平台即服务,PaaS可以为用户提供安装操作系统、中间件和开发工具的一站式运维服务,用户需要考虑的只是编写代码和测试应用程序。用户开发完应用程序以后,PaaS会负责应用程序后续的生命周期如构建、部署、托管以及更新。
在控制成本方面,PaaS也是非常灵活的。用户可以根据应用的客户体量和使用效期来决定购买合适的资源。
服务提供商向客户(企业)提供一个平台,客户自己设计软件应用,数据也由自己保管。基于服务他们能够开发、运行和管理业务应用程序,而不用构建和维护软件开发过程通常需要的基础设施,主要包括运行系统、中间件、运行库。
PaaS 的交付方式有,公有云、私有云、混合云。公有云的方式,客户控制软件部署,云服务商提供应用程序开发所需的全部主要 IT 组件,包括服务器、存储系统、网络、操作系统和数据库,前三个合起来就是 IaaS,简单理解为 IaaS 、操作系统、数据库。私有云的方式(也叫私有化部署),是在内部的数据中心部署,以软件或应用的形式交付 PaaS。混合云的方式则是混合了这两种类型的云服务。
除了常见的操作系统、数据库服务、web应用以及容器服务,成熟的 PaaS 服务会简化开发人员,提供完备的 PC 端和移动端软件开发套件(SDK),拥有丰富的开发环境(Inteli、Eclipse、VS 等),完全可托管的数据库服务,可配置式的应用程序构建,支持多语言的开发,面向应用市场。

SaaS(Software as a Service)
前面说到 PaaS 就是提供平台,客户自己设计软件应用,数据自己保管。进一步,平台提供方自己设计软件应用和管理数据,客户只管到这个平台上来使用,就是 SaaS 了,诸如我们平时用的各类邮箱(谷歌邮箱、网易邮箱)、各类文档(腾讯文档、石墨)、各类设计平台(羚珑设计平台)等等。
如果从用户的角度来说,IaaS、PaaS、SaaS 的用户分别是运维工程师、开发者、端用户。
常规来说,真正的SaaS应用往往需要满足以下两点
- 单实例
- 多租户
单实例意味着系统资源层面的共享,多租户意味着应用逻辑层面的隔离。所以如何平衡好这两点,才是SaaS应用多租户设计的核心关注点

多租户
企业级SaaS市场近几年在每个细分领域都涌现出了一批玩家。从技术角度看,不同的领域、不同的SaaS产品,必定有着同样的架构内核,其中最关键的便是对于多租户(Multi-Tenancy)的支持。对广大企业来说,引入SaaS产品本质上就是对互联网服务的租赁,因而多租户便必然是SaaS的天然属性之一,也是其与传统互联网应用架构设计的重要差异之一。在SaaS架构的成熟度演进过程中,其核心路线便是如何实现多租户,也就是说,SaaS成熟度的高低,很大程度上取决于如何实现多租户的支持。
要做到在同一套程序下,满足多个不同用户群体的使用,最关键的就是保证资源层面的隔离性
谈到资源,我们可能会想到CPU、内存、磁盘、网络带宽等,但如此多类型的资源,从其特征上又可以归为两类,即存储资源和计算资源。
换句话说,SaaS系统在技术本质上也可以认为就是分布式存储和分布式计算的融合。
在多租户的实现中,往往更关键的是对于存储资源的处理,计算资源一般只在必要情况下才会考虑,这主要是和存储的“有状态性”有关
存储资源的隔离
目前saas多租户系统的数据隔离有三种解决方案,即为每个租户提供独立的数据库、独立的表空间、按字段区分租户,每种方案都有其各自的适用情况

具体的分析放到另一篇文章 多租户数据隔离设计