“云”到底是什么?--科普贴

越来越多的软件,开始采用云服务。从小型企业到全球企业,云都是一个非常热门的话题,它是一个非常广泛的概念,涵盖了很多在线领域。

术语“云”的概念已经被过度使用了。但是如果穿过这些天花乱坠的宣传,我们就会发现云计算有三种模式。它们分别是:

  • 基础设施即服务(Infrastructure as a Service,IaaS);
  • 平台即服务(Platform as a Service,PaaS);
  • 软件即服务(Software as a Service,SaaS)。

它们有什么区别呢?

IBM 的软件架构师 Albert Barron 曾经使用披萨作为比喻,解释这个问题。David Ng 进一步引申,让它变得更准确易懂。

在这里我们把这个比喻改造一下: 假设你现在饿了,想要吃饭,有下面四种选择:

(1)在家做饭。

(2)去超市买一份预先做好的膳食,然后你加热并享用它。

(3)叫外卖送到家里来。

(4)去餐厅直接点餐吃。

下图展示了这个模型:

“云”到底是什么?--科普贴

这些选择之间的区别就是谁负责来烹饪这些膳食,以及在哪里烹饪:

  1. 内部自建模型中,想要在家里吃就需要做所有的工作,还需要使用家里的烤箱和食材。
  2. 从超市购买食材,就想使用基础设施服务(IaaS)计算模型一样,由厨师使用他们的烤箱预先烘培好食物,但你仍然有义务加热那些膳食并在家里吃(然后清洗餐具)。
  3. 平台即服务(PaaS)模型中,你只需要提供餐具,餐厅老板会提供烤箱,食材,厨师来做饭。
  4. 软件即服务(SaaS)模型中,你去一家餐厅吃饭,在那里所有的服务都会为你准备好,吃完买单,不需要自己准备或清洗餐具。

每个模型中的关键项就是控制:由谁来负责维护基础设施,以及构建应用程序的技术选择是什么?

在IaaS模型中,云供应商提供基础设施(通常是服务器,存储,宽带),但你需要选择技术并构建最终解决方案;而在SaaS模型中,你就是供应商所提供的服务(比如微信,淘宝等)的被动消费者,无法对技术进行选择,同时也没有任何责任来维护应用程序的基础设施。

下面这张图来自 Microsoft Azure 官网上的一张图,更能详细的说明不同计算模型中的各部分:

“云”到底是什么?--科普贴

说白了,云计算就是一种按照需求通过 Internet 获取计算资源的形态。这些计算资源被包装成为服务,提供给用户。而提供这些服务的主体,我们称之为云服务供应商(Cloud Service Provider)。

比如国内我们熟知的 阿里云,腾讯云等,都有提供 IaaS,PaaS,SaaS 等服务。当然了这些都是公有云,我们也可以搭建自己的私有云,但本质上都是一样的。

新兴的云平台

目前一些新的云平台类型也已经出现。这些新兴的的平台包括:

  • 函数即服务(Functions as a Service,FaaS)
  • 容器即服务(Container as a Service,CaaS)

基于Faas 的应用程序会使用像亚马逊的 Lambda 技术和 Google Cloud 函数这样的的设施。应用会讲代码块以无服务(serverless)的形式部署。使用Faas平台,无需管理任何服务器基础设施,只需要支付执行函数所需的计算周期。

使用容器即服务(CaaS)模型,开发者将微服务作为便携式的虚拟容器(如 Docker)进行构建部署到云供应商。与 IaaS 模型不同,使用 IaaS 的开发人员必须管理部署服务的虚拟机,而 CaaS 则是将服务部署在轻量级的虚拟容器中,云服务提供商会提供运行容器的虚拟服务器,以及用于部署,构建,监控和伸缩容器的综合工具。

小结

本文介绍了 IaaS,PaaS,SaaS 等流行云计算模型的特点,从左到右,云计算的用户承担的工作量越来越少,IaaS > PaaS > SaaS。

  • IaaS 是云服务的最底层,主要提供一些基础资源。用户需要自己控制底层,实现基础设施的使用逻辑。

  • PaaS 提供软件部署平台(runtime),抽象掉了硬件和操作系统细节,可以无缝地扩展。开发者只需要关注自己的业务逻辑,不需要关注底层。

  • SaaS 是软件的开发、管理、部署都交给第三方,不需要关心技术问题,可以拿来即用。普通用户接触到的互联网服务,几乎都是 SaaS。