此文已由作者尧飘海授权网易云社区发布。
欢迎访问网易云社区,了解更多网易技术产品运营经验。
1983年,SUN公司提出的网络即计算的理念;2006年亚马逊(Amazon)推出弹性计算云(Elastic Compute Cloud;EC2)服务,云计算可以认为包括以下几个层次的服务:基础设施即服务(IaaS),平台即服务(PaaS)和软件即服务(SaaS)。
公司目前也在云计算等各层次里进行了较长的时间的投入和研发并应用在公司内外的各产品中,云计算相关的技术也得到了较好的论证。本文主要对PaaS进行相关的探讨。
PaaS(Platform-as-a-Service:平台即服务),较早期把服务器平台作为一种服务提供的商业模式,随着云计算时代的发展和成熟逐渐把部署环境、测试环境、甚至开发环境也当着一种服务来进行提供,并最终以SaaS的模式提交给用户。
PaaS也可以看成是SaaS模式的一种应用。SaaS的概念的提出非常早,根据相关文献和参考,理论上出现的时间在1998年或更早些,最早出现在欧美等发达国家。但最初的思想和现在发展的结果有相当大的不同,不再是单纯应用的服务提供了。
PaaS服务类似于IaaS也可以分为公有云PaaS平台和企业级PaaS平台。最早从事公有云的PaaS平台,如Google App Engine和Amazon Beanstalk,但是这二种类型的应用到国内都发展不是很好,特别是在国内GAE被墙,更是使用得其在国内基本上属于昙花一现,从后来Google的IaaS的转变路线也可以大概看到其发展也不是很好,很多只是当做试验的玩具而已,一方面是由于安全问题采用的沙箱机制使得开发人员施展能力受到相当大的限制,另一方面整个生态圈没有成熟,导致其他的云基础服务跟随不上,比如自动化的路由,负载均衡等技术。
在2007年左右,大规模的互联网的应用的快速成长和虚拟化技术的发展,PaaS服务加快了SaaS的发展,众多国内外厂商推出了自己的PaaS服务平台,国外包括 AMAZON, Google, SALEFORCES, CF等十大服务商,国内也最早的也包括SAE,BAE到后面的阿里云等。
PaaS服务开始的时间到今年也有8年左右的时间了,中国的抗日战争打了八年也结束了,尽管在国外有不少看似蛮红火的服务商,但是从国内从实际使用效果和真正推广的应用的情况来看,发展的不是特别理想,没有达到之前概念的预期发展。究竟其原因可能是多方面的,有技术方面的限制,也有产品化或开发人员对新概念接收度等非技术的原因。
近二年来,国内外又出新一批的PaaS服务创业公司,主要人员大部分是从第一批做PaaS服务平台的人员出来的创业的,比如DOTCLOUD,DEIS,国内的NICESCALE等公司,这些公司能不能很好的发展,现在还不好说,至少从目前的发展趋势来看,进入的门槛越来截低了,这些或许是得益于容器和虚拟化技术的发展。
我们公司目前也在致力这方面的探索和建设,从各服务的创业公司如春笋般新起和发展,大部分还是聚集在小型应用的基础上,对于中大型的应用,包括在一些大公司也只是刚刚开始着手构建,终究原因从技术方面来看大概有以下几种原因:
容器技术确定能带来些好处,但是这种好处对于相对成熟稳定保守的公司来说还不足以能够撼动其短处,使其能快速转头换向全力投入其怀抱。
技术储备,或者说跟风也好,追潮流也行,特别是小公司,由于成本较低,因此先试试水,看看是不是真的有红利或者做点什么,至少也得追上技术的发展趋势。
实际的痛处,就是那些真正接受过凤凰涅盘,想浴火重生的人,比如开发人员,测试人员和运维人员,在经过版本不一致,库依赖不同,环境不一致等带来的低效或依赖的人,希望能把精力放在解决各自专业的问题。
分久必合,合久必分:业务从小规模的起步到后来的大规模发展,应用的开发,测试和部署越来越复杂,依赖的服务越来越发多,最后变成相互抱怨,因此架构的演变也会随着这个趋势来发展。
整个计算的行业的发展也经过不同的发展,从最早有代表性的人月神话的作者所带领的IBM的大型系统的开发到单机系统,再到虚拟机及容器技术成熟,无一不是从之前的一个很大的一块细分成小小的一块。
WEB技术的应用发展也有精力的相似,在Web应用程序开发的早期,大部分应用程序通常使用Common Gateway Interface(CGI)建立,包括前几年的QQ里面的很多系统还是采用C类语言实现的CGI-BIN来完成,每个请求采用一个进程来处理,当时的Apache服务也是整个最流行的网络服务器之一。
CGI技术带来的维护和性能的问题后来变得越来越严重,所有的代码都是混在一起的,甚至HTML的输出也是在业务代码里面嵌入的,业务上的扩展变成十分艰难。因此,WEB程序开发中的下一个阶段中衍生了“server pages”技术,比如ASP和JSP等语言,它们很好的实现应用程序逻辑代码与视图代码被很好的分离,加上设计模式得以快速演变,各层分工的越来越明细,职责也越来越明确。
因此在较短的时间内发展成了Model-View-Controller(MVC)的开发模式,包括现在大部分的中小型应用还是按采这样模式来开发,Controller层主要负责各业务的路由,调用相关的实现方法,通过MODEL的业务数据作为输入,最后产出View的输出,用来显示相关的视图,在这种模式下,业务数据、应用程序、视图逻辑被很好的分离。
目前在大部分应用中还会把Controller再进一步的细分成服务层或数据操作层。各服务之间的调用可以通过RPC或REST的风格进行调用,实现类似的SOA的服务架构,各服务层只需要通过相关的接口,相互间是松散和解耦,即实现了数据依赖与交互,又消除了代码库共享的依赖性。
从公司内各产品的发展趋势来看,各种不同的产品在不同的规模和阶段采用不同的架构模式来组组织和运行,但是随着应用的访问量的快速发展,产品正在朝着合久必分的趋势来发展,逐步形成了服务化的架构思想;本文第二部分将继续分析产品的不同架构模式:整块架构和服务化架构。
为了避免本文的裹脚布又长又臭,分第二篇再阐述,你懂的~,有兴趣请点击下面的连接。
网易 云计算基础服务 深度整合了 IaaS 、 PaaS 及容器技术,提供弹性计算、 DevOps 工具链及微服务基础设施等服务,帮助企业解决 IT 、架构及运维等问题,使企业更聚焦于业务,是新一代的云计算平台, 点击可免费试用 。
相关文章:
【推荐】 Android之高效率截图