这年头,不管什么应用,仿佛“上云“都成了标配,感觉拥抱了“云”,应用的逼格都上升了。那真的是这样的吗?
是的,的确是这样。 云计算是一种按照需求通过 Internet 获取计算资源的形态。这些计算资源被包装成为服务,提供给用户。而提供这些服务的主体,我们称之为云服务供应商(Cloud Service Provider)。云服务最主要的有三类,就是本文的三个主角 IaaS、PaaS、SaaS。 那这三个 aaS 到底是个啥?
XaaS
看到这个标题,可能就有人产生疑惑了,那三个 aaS 都不知道是什么,怎么突然又多了一个 XaaS。不急,且听我娓娓道来。 XaaS,即一切皆服务,代表 “X as a service”、“anything as a service”或“everything as a service” 。这一缩写指越来越多地通过互联网提供的服务,而不仅仅指本地或现场服务。云计算的本质就是 XaaS。 XaaS 最常见的例子就是“软件即服务”(Software as a Service,SaaS)、“基础设施即服务”(Infrastructure as a Service,IaaS)和“平台即服务”(platform as a service,PaaS)。
详解
根据所提供服务的不同,云服务可以被分为以下三类/三层:
缩写 | 全写 | 注释 |
---|---|---|
IaaS | Infrastructure as a Service | 基础设施即服务 |
PaaS | Platform as a Service | 平台即服务 |
SaaS | Software as a Service | 软件即服务 |
如下图所示:
SaaS
Software as a Service (SaaS) 又称云应用服务,通过网络为最终用户提供应用服务。绝大多数 SaaS 应用都是直接在浏览器中运行,不需要用户下载安装任何程序。对用户来说,软件的开发、管理、部署都交给了第三方,不需要关心技术问题,可以拿来即用。 比如:电商服务 淘宝
PaaS
Platfrom as a Service (PaaS) 的主要作用是将一个开发和运行平台作为服务提供给用户,能够提供定制化研发的中间件平台,以及数据库和应用服务器等。对开发者来说,只需要关注自己系统的业务逻辑,能够快速、方便的创建 Web 应用,无需担心底层软件。 比较典型的便是计算平台。 比如:微信开放平台
IaaS
Infrastructure as a Service (IaaS) 主要提供一些基础资源,包括服务器、网络、存储、安全等服务**。**由自动化的、可靠的、扩展性强的动态计算资源构成。用户可以按需购买服务满足业务需求。可以分为公共和私有两种基础资源服务,“公共云” 包含了共享资源 提供了部署在互联网上的基础设施,“私有云” 则是运行在专用网络上的基础设施,另外还有“混合云”,提供公共或私有云的混合组合方式。 比如:阿里云
上面说的这些可能还是太过抽象,下面我会从一个实际例子出发,直观感受一下。
从实例出发
我有一个朋友,他之前实习的时候,每天上班只能乘坐价值上千万的交通工具——地铁。对于当时的他来说,只要交钱坐上地铁等到站下车就可以了,这是 Saas。后来,“人性化”的公司考虑到这些“自愿”加班的员工下班后可能赶不上地铁了,于是规定 9 点以后报销打车费。终于,我的这个朋友,可以体验到公费打车的快乐了。这时候的他只需要提供目的地,剩下的(比如汽车、油费)交给司机就可以了,这是 PaaS。再后来,他喜欢上一个菇凉,想着每次约会都坐公交、地铁觉得不太合适,但是又买不起车,无奈,只好从租车公司租了一辆车,汽车的维修、安检都由租车公司承担。他需要做的是提供燃料、自己开车,这是 IaaS。再后来,他总算“码农翻身”,买得起车了,可各种事情接踵而来,自己开车,需要维护汽车,确保其安全行驶。同时需要为车上保险,提供燃料。这是 On-premise。
感悟
一路走来,这个朋友做的事情变得越来越多了,这是好事还是坏事? 不好说。我们需要辩证的看待问题,从维护成本上来看,自己买车开的成本肯定是要高于坐公交地铁的,毕竟要把车牌费、停车费、油费、保险等全部算上,这么看,确实不是一件好事。但是,如果从其他角度,例如出行更方便,买车更有身份等角度去考虑,这又是一件好事。 类比到系统设计中,这三种方式最大的区别就在于开发人员所参与的程度: High Code:IaaS Low Code:PaaS No Code:SaaS 而这三种方式通常也反映了程序员的编码能力。一般来说,越接近底层的程序员,其能力更强。如果为了追求快速实现业务需求,直接使用 PaaS,甚至 SaaS,肯定会更好。但从技术的角度去思考,IaaS 对于开发人员技术的提升肯定是优于 PaaS 和 SaaS 的。