彻底理解 IaaS、PaaS、SaaS
关注「前端向后」微信公众号,你将收获一系列「用心原创」的高质量技术文章,主题包括但不限于前端、Node.js以及服务端技术
写在前面
总能听到云计算服务的 3 种模型:
-
IaaS:Infrastructure-as-a-Service
-
PaaS:Platform-as-a-Service
-
SaaS:Software-as-a-Service
还能看到各种类比:吃披萨、吃汉堡、吃烧烤、涮火锅、盖房子、装修、写文档、养猪、发电、开车、生孩子??、泡妞???……众说纷纭,那么有没有办法能去伪存真,彻底搞明白这些术语呢?
有,溯源
一.云计算
美国国家标准与技术研究院(NIST)在 2011 年给出了云计算的定义:
Cloud computing is a model for enabling ubiquitous, convenient, on-demand network access to a shared pool of configurable computing resources (e.g., networks, servers, storage, applications, and services) that can be rapidly provisioned and released with minimal management effort or service provider interaction.
也就是说,云计算是一种模型。让可配置的计算资源(如网络、服务器、存储、应用程序和服务)能够通过网络随取随用,只需要很少的管理工作或者与服务供应商简单交互就能快速控制这些资源的供应和释放
这种云模型由 5 个基本特征、3 个服务模型和 4 个部署模型组成:
This cloud model is composed of five essential characteristics, three service models, and four deployment models.
其中,三个服务模型就是所谓的*aaS
二.5 个基本特征
-
按需自助服务(On-demand self-service):使用者可以根据需要单方面地自动预配计算能力,比如服务器时间和网络存储,而不用与每个服务提供商进行人工交互
-
广泛的网络访问(Broad network access):功能通过网络提供,并通过标准机制来访问,这些机制能够促进各种客户端平台(比如移动电话、平板电脑、笔记本电脑和工作站)的使用
-
资源集中(Resource pooling):供应商的计算资源通过多租户模型集中用于为多个使用者提供服务,不同的物理和虚拟资源会根据使用者需求动态调配。有种位置独立的感觉,因为客户通常无法控制或不知道所提供资源的确切位置,但能在更高的抽象级别(如国家/地区、州或数据中心)指定位置。资源包括存储、处理、内存和网络带宽
-
快速弹性(Rapid elasticity):在某些情况下,可以自动弹性地配置和释放功能,以便根据需求迅速向外和向内扩展。对于使用者来说,可用于预配的功能通常看起来是无限的,并且可以随时以任何数量进行配置
-
可计量服务(Measured service):云系统通过在适合服务类型的某层抽象(例如存储、处理、带宽和活动用户帐户)上利用计量能力来自动控制和优化资源使用。可以监视、控制和报告资源使用情况,从而为所使用的服务的提供者和消费者提供透明性
三.3 个服务模型
-
基础设施即服务(Infrastructure as a Service (IaaS)):提供给使用者的功能是预配处理、存储、网络和其它基础计算资源,使用者能够在上面部署和运行任意软件,包括操作系统和应用程序。使用者不管理或控制底层云基础设施,但可以控制操作系统、存储和已部署的应用程序,并且还能受限地控制所选的网络组件(例如主机防火墙)
-
平台即服务(Platform as a Service (PaaS)):提供给使用者的功能是将使用者通过供应商支持的编程语言、类库、服务和工具来实现,或创建的应用程序部署到云基础设施上。使用者不管理或控制底层包括网络、服务器、操作系统或存储在内的云基础设施,但可以控制已部署的应用程序和配置应用程序托管环境的设置选项
-
软件即服务(Software as a Service (SaaS)):提供给使用者的功能是用于在云基础设施上运行的供应商应用程序,应用程序可通过瘦客户端界面(如 Web 浏览器(例如基于 Web 的电子邮件)或程序接口从各种客户端设备访问。使用者不管理或控制底层包括网络、服务器、操作系统、存储、甚至单个应用程序功能在内的云基础设施,但一些用户特定应用程序配置可能要额外设置
差异主要体现在使用者对资源的控制程度上:
控制程度 | IaaS | PaaS | SaaS |
---|---|---|---|
控制 (需要维护的) |
操作系统 应用程序 处理 存储 网络 其它基础计算资源 |
已部署的应用程序 应用程序托管环境的设置选项 |
一些用户特定应用程序配置 |
托管 (无需关心的) |
网络组件 | 网络 服务器 操作系统 存储 |
一些应用程序功能 网络 服务器 操作系统 存储 |
从基础设施到平台到软件,资源供应形式的抽象程度越来越高,使用者需要关注的底层设施越来越少,如下图:
四.4 个部署模型
-
私有云(Private cloud):云基础设施由多个使用者(例如,业务部门)组成的单个组织专用。它可能由组织、第三方或它们的某种组合所拥有、管理和运营,并且可能在内部部署(on-premises)也可能在外部(off-premises)
-
社区云(Community cloud):云基础设施由具有相同关注点(例如任务、安全性要求、策略和合规性考虑因素)的组织的特定消费者社区专用。它可以由社区中的一个或多个组织、第三方或它们的某些组合所拥有、管理和运营,并且可能在内部部署(on-premises)也可能在外部(off-premises)
-
公共云(Public cloud):云基础设施供公众开放使用,它可以由商业、学术、政府组织或它们的某些组合所拥有、管理和运营,由云供应商内部部署(on-premises)
-
混合云(Hybrid cloud):云基础设施由两个或多个不同的云基础设施(私有、社区或公共)组成,这些基础设施仍然是独特的实体,但通过标准化或专有技术绑定在一起,从而实现数据和应用程序的可移植性(例如云爆发,用来实现云负载均衡)
P.S.云爆发(cloud bursting)是一种建立在私有云和公共云之间的配置,用来应对 IT 需求高峰。如果使用私有云的组织达到其资源容量的 100%,溢出的流量会定向到公共云,而不会中断服务