大约一年前,联通范总写了一篇《我所知道的云计算》,对云计算的各种新技术和理念进行了深入浅出地解读。
这一年来,云计算发展得风起云涌,有了很多变化。经过最近一段时间的全面学习和思考,我也手痒写一篇自己的理解。其中很多观点比较极端,算是抛砖引玉,给大家立个靶子。
要说的核心是:世上本没有云,说的人多了,云山雾绕,人云亦云,于是云计算就成了趋势。
硬件的演变
大家已经习惯,用软件和硬件,来对计算机的构成部分进行区分。
笼统来说,硬件是为计算机系统提供的物理平台,软件则是在硬件平台上,呈现出各种各样的功能。二者既有分工又协同发展,构成了纷繁复杂的计算机世界。
我还记得,大学时在51单片机上做开发,相对于BASIC和FORTRAN,C语言是当时最先进的编程语言。技术高手用汇编语言来做开发,虽然掌握起来难度大,但操作的对象是寄存器或存储器,因此执行速度特别快。
那个时候,硬件资源稀缺而昂贵,如果能节约几行代码,少几分资源损耗,都能直接体现巨大的价值。
之后的发展,主要是由硬件厂商驱动,但发展的模式却恰恰是通过发展软件,来提升硬件的竞争力。
一方面,操作系统的发展,在降低软件开发门槛的同时,使系统软件和硬件紧紧捆绑在了一起;另一方面,硬件厂商也利用平台的主导地位,打造出适合于不同类型应用的硬件平台。
比如银行业广泛采用的大型机、容错机,就是提供了一个稳定可靠的运算平台,虽然很贵而且资源冗余,但是稳定性可靠性堪称完美;再比如NCR的数据仓库解决方案,也是软硬件一体的,在数据分析方面表现出众。
各种计算机硬件都有相对的应用场景,尤其在上个世纪中后期,各类硬件平台不断进步,体积越来越小,容量越来越大,集成度越来越高,性能越来越强大。
当然,由于UNIX小型机在开放性、稳定性以及成本等方面的综合性能最佳,因此成为应用范围最广的计算机系统的硬件平台。而PC服务器虽然成本低,但因为稳定性差、故障率高、性能低等缺点,很难进入企业和大规模计算领域。
在这个过程中,发展动力主要来自两个方面:
一是摩尔定律,集成电路的突飞猛进,推动了硬件平台的发展,各类服务器都不断推陈出新,几乎每年都会推出性能更好、价格更低的新产品;
二是IT系统初建的浪潮,各单位都在发展IT,用计算机系统取代手工作业,从无到有纷纷建起来的IT系统,可谓百花齐放。由于各类应用存在差异,稳定性、安全性、业务连续性等方面的要求都各不相同,所以各种硬件都有非常好的市场空间。
说到这里,我还想到一个插曲:早些年,有人说美国为代表的海外IT系统,用的都是几十年不变的硬件和软件,表现同样很稳定;而国内总买最好、最先进的硬件设备,这不是乱花钱么?
在我理解,两者只是IT的发展阶段不同:国内IT企业发展快速,尤其是用户规模和系统复杂度远超海外运营商,所以用最新最好的服务器并没有错。而海外的IT初创阶段比国内早得多,如果系统能力满足,需求变化不大、变更成本又高,确实没有必要频繁更新设备。
所以,当美国互联网再度兴起,就对IT提出了新的需求,为云计算等一系列新科技的生长提供了土壤。
互联网是在通信和计算机网络的基础上成长发展起来的,而互联网的发展又给通信和计算机领域带来了机遇和挑战。
一个典型的例子,就是相对于传统的计算机系统,互联网需要更大规模的运算能力的同时,还希望尽可能地降低成本,所以X86服务器大行其道。
单机性能低,怎么办?靠软件堆。硬件不稳定,怎么办?靠软件来补。需求变化快,怎么办?靠软件改。云计算领域的诸多技术,就是这么被逼出来的。
互联网的初创企业都是省钱的高手,恨不得一分钱掰成两半花,因此钟爱于性价比最低的IT平台,上一轮次的受益者是SUN。而今,X86服务器逐渐成为新一代互联网公司的标配,一家没有那么多银子买机器,就以互联网的共享模式,根据实际需要租用计算能力和存储资源,这也正是催生云计算出现的源动力。
与此同时,"省钱"促成了开源技术的繁荣。从技术角度看,开放源代码,通过社区交流逐步完善,这些都是非常符合互联网发展思路的行为;但从商业角度看,免费的开源软件严重影响传统IT企业的经济效益,也抑制了传统IT企业的创新动力,让传统IT产业雪上加霜。
在诸多硬件流派中,X86拥有的成本优势无人能及,自然成为云计算技术的重点发展领域,互联网飞速发展产生的推动力,主要给了X86平台;而其他硬件由于规模大、成本高,变化空间有限,并没有多少互联网企业愿意在这上面做创新。
几年时间下来,大型机依靠安全稳定方面的优势坚守传统地盘,一部分小型机与软件深度整合发展为一体机,而更多的硬件厂商放弃了自身的发展计划。
未来的IT系统,尤其是新建系统新建能力,只能在一片片的X86服务器的基础上成长。对于绝大多数应用场景来说,将来除了X86,或许不再会有别的硬件平台可供使用。
云计算技术
基于同样的X86服务器,各家的玩法不同,催生出了不同的云计算技术。
最为大众熟悉和接受的,是虚拟化技术。所谓虚拟化,主要是将庞大的、完整的硬件资源(包括计算、存储等)分割成为较小的单元,并具备动态调整小单元的能力,如果虚拟化用得好,就可以灵活分配和及时调度计算存储资源,提高资源利用效率。
值得一提的是:虚拟化技术并不为X86所独有。事实上,在小型机上部署虚拟化软件,是目前IT系统经常采用的模式。
这是因为,单台小型机拥有的资源比X86多得多,因此在资源利用率提升方面,在小型机上部署虚拟化,往往比在X86上部署效果更好,甚至比X86具有成本优势。
比如运营商现在的系统,就是以小型机为主体,很多小的应用都跑在小型机的虚拟化软件上。
只不过,未来系统以X86为主体,就不再需要在小型机上部署虚拟化软件,更多的虚拟化场景都会转移到X86上来搞。所以,小型机的虚拟化场景会越来越少,剩下的小型机将主要是满足大的计算需求。这也就是说,传统小型机逐渐萎缩、退出,只是时间问题。
虚拟化技术是将大资源划小,那么,如何将小的资源,组合成大规模运算的平台呢?这就需要另一类云计算技术:分布式运算。
为什么说这是一类技术?虽然各家需求不一样,应用场景不同,采用的技术和策略也大相径庭,常规的网格计算、集群,以及很多互联网企业的专用技术,看似五花八门,其实万变不离其宗,解决的问题,都是如何将小的计算资源,组合成为大规模运算平台。
虽然目前虚拟化+X86的模式应用最广,但并非所有的云计算都基于虚拟化技术。其中最典型的就是Google。
作为提供搜索服务的互联网企业,谷歌需要解决的问题完全用不到虚拟化技术,相反,部署虚拟化软件将降低系统运行效率,增加成本。
因此,Google基于自己的需要进行定制化开发,先是做出企业自用的Map/Reduce和NDFS,又在此基础之上形成了经典的Hadoop平台,由"自研"到"自用"再到"产品化",令人钦佩。
在此基础上,谷歌持续创新,乃至引发了"容器"技术革命以及Kubernetes的狂飙突进,这是后话,暂且不表。
前面提到,受互联网带来的冲击,传统硬件平台的衰退势不可当。但使用低成本的X86和免费的开源软件做出来的系统,在安全性、稳定性、资源调度与管理、系统开发复杂性等方面,就需要做更多的工作,必须通过各种工具软件和配套的管理来解决。于是,很多新技术应运而生。
比如OpenStack。
OpenStack也是开源产品,设计和建设的目标是为云计算提供实施简单、可大规模扩展、丰富、标准统一的管理平台。它由NASA发起,又有众多行业大佬支持,在这一领域稳居霸主地位。
最初,OpenStack只是虚拟机的管理工具,但如今,它管理的范围已经扩展到网络、虚拟化、操作系统、服务器等各个方面,渐有一统天下之势。
当老大需要担当。互联网时代软件技术发展非常迅速,几个技术高手聚在一起,针对某种特殊场景,就可能开发出一套新系统,进而演变成为新技术新产品。作为综合的全面的管理平台,如果想要承载所有云计算产品,OpenStack就必须有强大的兼容性,支持各种技术、产品和平台的管理。
同样是开源模式,容器技术的目标,是构建更加高效的运行环境。而提供标准化手段,可以让用户自由组装相对独立的运行环境。虽然目前容器的众多流派的厮杀还没有尘埃落定,但对于开发者来说,容器技术的巨大诱惑,已经让它在很短的时间里收获了大批拥趸,在一些领域获得了非常好的效果。
OpenStack必须支持容器技术,然而如何与容器技术共生双赢,需要把握好平衡:容器的优势就在于高效,如果因为管理平台的存在,降低了计算效率,那就失去了意义;而如果不能接入综合性的管理平台,用户心有顾忌,也可能导致容器技术的发展空间受限。
毕竟,容器技术和许多小众类的IT技术类似,主要是针对性解决某些特殊场景,并非包打天下的灵丹妙药。
前面点过名的Kubernetes,也是随着容器技术一起热起来的。它是Google大规模容器管理技术Borg(一个更强大的技术)的开源版本,提供容器化应用的部署、维护,甚至可以管理跨机器运行的容器化应用,与容器技术的匹配度更高。
从某种角度来说,Kubernetes和OpenStack是竞争关系,两个平台有很多重叠的功能;但在我看来,如果根据整体系统实现目标,将功能分解到不同的平台来承载,在一个系统里依然能够做到两个平台共存,使其各自发挥出自己的优势。
云计算服务
另一股推进云计算发展的力量,是云计算服务。这一边的龙头企业是亚马逊,它提供的云服务,真正将云计算的理念转化成了实践。
看看美国国家标准与技术研究院(NIST)的定义:云计算是一种按使用量付费的模式,这种模式提供可用的、便捷的、按需的网络访问,进入可配置的计算资源共享池(包括网络、服务器、存储、应用软件以及服务),这些资源能够被快速提供。
从根本上来说,云计算是一种服务,是一种商业模式,而云计算技术只是实现云计算的手段。很多情况下我们谈的云计算,都本末倒置了。
国内人士对IT有很多根深蒂固的误解和错觉,比如愿意投资在硬件上,而不认可软件的价值;再比如愿意为开发商支付劳务费,而意识不到稳定的产品化软件价值。因此,谈到云计算服务时,往往是叶公好龙,说一套做一套。
多年前,有一家软件公司试图采用这种模式,用户并非购买软件,而是以租用方式拥有对软件的使用权;如果在租用期间软件升级,用户使用新软件而不必增加费用;而等租期一到,用户也就不能再继续使用,这家公司叫SAS。
可惜,虽然在它技术方面有优势,而且分析类应用也适合于这种商业模式,但当时国内绝大部分客户都不认可,所以SAS最终碰了一鼻子灰,铩羽而归。
如今,科技发达了,中国与世界接轨的程度也今非昔比,当海外云计算浪潮兴起的时候,国内各种各样的云公司也如雨后春笋般出现,再加上开源技术门槛不高,成本又低,互联网媒体也不断传播放大,一时间,云计算市场好戏连台,热闹得紧,不说做云都不好意思在IT圈混了。
但仔细看下来,很多所谓的云服务提供商只是新瓶装旧酒:做IDC的说自己提供的是IaaS,做应用软件的摇身一变,就说自己提供的就是SaaS服务。
反正国内大多数人也不知道真正的云计算是什么,先用概念和低价,把市场抢下来再说。
虽然它们对客户说,提供标准化的云服务,但其实还是像传统IT里的操作系统(尤其是大型机)一样,只要用户被绑定,再要进行系统移植、升级和搬迁,就不一定客户说了算啦。
这是当前国内很多云服务供应商的基本套路。
当然,从积极的角度看,云计算为开发者提供了价廉物美的基础设施,能够大幅降低IT系统的建设成本,推动IT发展。
而客观来讲,目前国内的IT还处于初级阶段,有非常大的提升空间,所以即使不是标准、完整、最佳的云计算,也会对IT水平的提高有强大的推动作用。
更为关键的是:伴随云计算传播的"服务"理念,以及分工协作意识,对IT的成长发展有很大意义。
传统IT以产品为中心,成本高,技术门槛高,需要大批高精尖的技术人才,经历很长时间才能搞定。而云计算的出现和发展,使IT的分工更加合理,高端人才可以专注打造越来越便利、高效、廉价、可管可控的平台;而大量的应用以及越来越快的变化,则可以交给数量多、水平一般的人员来负责。
结语
说云计算是趋势,并不是它有多么完美,而是作为客户的你,没有其他选择。
未来的IT世界里,云计算服务以及云计算技术将占据越来越大的比重,尤其对于新兴的、变化的、成长的领域,可能看不到传统IT的身影了。
就IT系统来说,并没有绝对的先进性,或者说,技术的先进性并不是最核心要解决的问题。IT系统要解决什么样的问题,实现什么样的场景,配合什么样的技术和平台,软件硬件与需求的和谐匹配才是最佳选择。
就像运营商的支撑系统,以前的运行环境是小型机,并非不可继续用。但如今所有供应商都已经不再开展下一代小型机的技术研发,如果不及时将应用系统调整到X86平台上,等几年之后,你的软件要跑在什么硬件上?