市面上主要的云计算主机服务形式分类
这几年云计算概念炒的很火热,不仅是很多的云计算相关的创业公司如雨后春笋般冒出来,大佬们也纷纷加入战场。iaas、paas、saas、baas多种形态并存,一派繁荣景象。本文结合自己的理解对目前市面上的云计算形式,谈一谈看法。
基础设施云
又称为iaas,故名思议,这类提供商主要提供的是系统底层的设备服务。最简单的理解,比如提供一个台linux或者windows服务器,那么用户可以远程连接服务器,在上面安装软件,对这台服务器的控制能力相对比较强。提供商通常会让用户在内存、硬盘、带宽、操作系统等偏硬件的参数上做出选择,并根据选择收取相应的租用费用。
提供商通常以虚拟化的方式来高效的利用自己的物理资源。事实上,对于用户而言,面对的跟物理服务器没有区别,还能拥有更稳定的硬件环境,降低了用户的运维难度。这类云提供商,比较知名的有阿里云、微软的windowsazure等。
一般提供商会为用户提供一个管理控制台,可以方便的看到服务器的运行状况,如下图是阿里云的后台控制台界面,用户的管理单位是虚拟服务器:
平台设施云
又称为paas,这类提供商提供给用户的是软件平台和开发工具,比如php、python、.net、数据库系统、存储平台。用户通常不用考虑底层的操作系统、硬件配置、网络配置、负载,只需要将开发好的程序通过提供的方式上传即可运行于特定的软件平台;数据库方面,用户也无需关心备份、分流等问题,提供商都会做好,要做的只是根据要求链接数据库读写就可以了。
还有一类笔者也归类为paas,就是存储提供商。通常,存储提供商负责提供文件的存储、备份,并提供对文件的读写api,这种api跟操作系统无关,通常是基于http或tcp。正因为如此,笔者认为这跟单纯的提供磁盘不同,这是一种统一化的,更逻辑化的存储服务,用于无需关心底层的存储结构。
笔者接触的比较多的新浪云和七牛云。新浪云主要提供的是软件平台和数据库,还有一些配套服务;七牛云是纯粹的存储提供商,特点在于对存储的文件的多样化处理,比如视频转码、图片变换、甚至最近出的鉴黄,应该来说给用户提供了极大的便利。
paas通常用用多少收多少的形式收费,对于小流量的用户,往往是免费的。
下图是新浪云的后台的应用管理界面,用户的管理单元是应用,应用有应用的语言、平台、配套的数据库、缓存等服务:
下图是七牛云的后台,用户的管理单元是空间,文件存储在空间下:
软件服务云
又称为saas,这类云实际上更贴近最终用户,用户也比较好理解,比如典型的百度云盘。这类云相对来说比较难下定义,范围很广,这里不再累述。
后端即云
又称为baas,这类云是比较新的概念,随着移动互联网的发展而提出并实现,因此比较针对移动应用这种端应用。简单的说,这类云的目标就是“消灭”后端程序员,听起来有些吓人。笔者接触下来,感觉还是非常不错的。
结构化数据存储:跟直接提供数据库系统不同,这类云提供一系列的api和sdk,让移动开发人员或web开发人员,在没有数据库服务器和中间件的情况下,直接存取数据。比如以前,我们要做一个用户注册,那么我们必须首先设计并初始化好数据库,然后用某种语言,编写接口程序向客户端暴露一些接口,让客户端通过这个编写的接口来访问数据。这个接口也可以称为中间件,而这个工作通常由被称为“后端程序员”的角色所完成,然后在baas下,这个过程是不需要的。baas能够直接提供客户端访问数据的能力,而数据表可以自动的创建。与之配套的还有一套完整的数据分析方案和体系。也免去了后台管理、数据查看分析功能的开发。
推送:baas还能为移动客户端提供消息推送的能力。
文件:有些baas也附带提供文件存储的能力。
如果创业团队需要精简人员,专注于产品的前端体验,尤其是移动端体验,可以考虑采用baas,简化后端服务和人员结构的搭建。笔者接触过的国内的baas有avos、bmob等。
下图是avos的后台,可以看到,展现的就像是数据库一样,而这些class(表),都无需事先创建,读写完全是通过api和sdk来完成的:
总结
存在即合理,在选用上述产品时,并无优劣之分。针对不同的应用性质,应用规模,团队人员状况做出最适合的选择才是重要的。比如如果是做移动app,在人员紧张,尤其缺少后端开发人员的前期,可以考虑采用baas。而在中期,随着人员规模的扩大,需求的增加,baas无法满足要求,那么可以转向paas。如果应用规模进一步扩大,考虑成本人员等因素,iaas也许可以考虑,甚至也可以自建机房。