不同的用户需要的服务是不一样的,有些公司可能只需要租借服务器、有些公司可能需要整套服务,而有些个人客户可能希望直接可以通过付费得到一个网站等。
所以,根据服务类型的不同,云计算可以分为三类,即基础设施即服务(IaaS)、平台即服务(PaaS)和软件即服务(SaaS)。这3种云计算服务有时称为云计算堆栈,因为它们构建堆栈,它们位于彼此之上。
本文,就来分别介绍下到底什么是IaaS、PaaS和SaaS。
IaaS
IaaS(Infrastructure as a Service),即基础设施即服务。指把IT基础设施作为一种服务通过网络对外提供,并根据用户对资源的实际使用量或占用量进行计费的一种服务模式。
做一个简单的比喻,IaaS服务优点类似于共享厨房服务。
商家为用户提供了厨房、锅具、煤气灶、烤箱、电饭煲等等一系列厨房用品。用户需要自己购买米、面、蔬菜、调味品等,并进行加工制作。
有了IaaS服务,用户可以在云服务提供商提供的基础设施上部署和运行任何软件,包括操作系统和应用软件。
用户没有权限管理和访问底层的基础设施,如服务器、交换机、硬盘等,但是有权管理操作系统、存储内容,可以安装管理应用程序,甚至是有权管理网络组件。
简单的说用户使用IaaS,有权管理操作系统之上的一切功能。我们常见的IaaS服务有虚拟机、虚拟网络、以及存储。
PaaS
PaaS(Platform as a Service),是指平台即服务。是一种云计算服务,提供运算平台与解决方案服务。
还是使用共享厨房的例子来比喻。
餐厅除了提供厨房、厨具等,还提供了清洗干净切好的蔬菜、调好味道的肉、饺子皮和饺子馅等。用户要享受美食,首先需要炒菜、加热或者煮熟,但却不用做太多的前期多种复杂准备。
PaaS给用户提供的能力是使用由云服务提供商支持的编程语言、库、服务以及开发工具来创建、开发应用程序并部署在相关的基础设施上。
用户无需管理底层的基础设施,包括网络、服务器,操作系统或者存储。他们只能控制部署在基础设施中操作系统上的应用程序,配置应用程序所托管的环境的可配置参数。
SaaS
SaaS(Software-as-a-Service),意思为软件即服务,即通过网络提供软件服务。
SaaS平台供应商将应用软件统一部署在自己的服务器上,客户可以根据工作实际需求,通过互联网向厂商定购所需的应用软件服务,按定购的服务多少和时间长短向厂商支付费用,并通过互联网获得Saas平台供应商提供的服务。
和IaaS以及PaaS的共享厨房相比,SaaS更像外卖平台。
SaaS相当于餐厅直接为大家提供做好的菜肴,还提供外卖服务。用户只需要付费,就可以享受各种不同类型的美味佳肴,还可以在有外卖网点的地方直接点餐。
SaaS给用户提供的能力是使用在云基础架构上运行的云服务提供商的应用程序。可以通过轻量的客户端接口(诸如web浏览器(例如,基于web的电子邮件))或程序接口从各种客户端设备访问应用程序。
用户无需管理或控制底层云基础架构,包括网络,服务器,操作系统,存储甚至单独的应用程序功能,可能的例外是有限的用户特定应用程序配置设置。
根据SaaS应用是否具有可配置性,高性能,可伸缩性的特性,SaaS成熟度模型被分成四级。每一级都比前一级增加三种特性中的一种:
多次开发
这种模型下,软件服务提供商为每个客户定制一套软件,并为其部署。每个客户使用一个独立的数据库实例和应用服务器实例。数据库中的数据结构和应用的代码可能都根据客户需求做过定制化修改。
一次开发多次部署
通过不同的配置满足不同客户的需求,而不需要为每个客户进行特定定制,以降低定制开发的成本。
但是,软件的部署架构没有太大的变化,依然为每个客户独立部署一个运行实例。只是每个运行实例运行的是同一份代码,通过配置的不同来满足不同客户的个性化需求。
可配置性的比较通用的实现方式,就是通过MetaData(元数据)来实现。
一次开发一次部署
多租户单实例(Multi-Tenant)的应用架构才是通常真正意义上的SaaS应用架构,它可以有效降低SaaS应用的硬件及运行维护成本,最大化地发挥SaaS应用的规模效应。
无需开发
将第三级的Multi-Tenant SingleInstance系统扩展为Multi-Tenant MultiInstance。最终用户首先通过接入Tenant Load Balance层,再被分配到不同的Instance上。通过多个Instance来分担大量用户的访问,我们可以让应用实现近似无限的水平扩展。
总结
本文通过厨房最菜的例子介绍了云计算中的三种形式:IaaS、PaaS以及SaaS。
从IaaS到PaaS再到SaaS,服务商提供的服务及产品越来越多,而普通用户承担的工作量便越来越少。
从左到右,使用了对应的云服务后,用户承担的工作量(上图绿色部分)会越来越少,IaaS > PaaS > SaaS。
IaaS 是云服务的最底层,主要提供一些基础资源。常见的产品有Amazong EC2、阿里云等。
PaaS 提供软件部署平台,抽象掉了硬件和操作系统细节,可以无缝地扩展。开发者只需要关注自己的业务逻辑,不需要关注底层。常见的产品有Heroku等。
SaaS 是软件的开发、管理、部署都交给第三方,不需要关心技术问题,可以拿来即用。常见的产品有Gmail、PayPal等。
参考资料:
https://baike.baidu.com/item/IaaS
https://baike.baidu.com/item/PaaS
https://baike.baidu.com/item/saas
https://www.zhihu.com/question/20387284
http://www.ruanyifeng.com/blog/2017/07/iaas-paas-saas.html