云计算:程序员重回个人英雄时代
曾几何时,那些耳熟能详的程序英雄的名字渐渐地离我们远去。随着Windows和Internet时代的来临,个人的力量变得越来越渺小。正当我们开始坚信单打独斗的时代一去不复返的时候,云计算横空出世了。它强大的计算能力、存储能力和简单高效的编程接口,使得一位程序员能够轻松地操控成千上万台计算机,而不必考虑太多的细节。云计算时代,仿佛又让我们感觉到个人英雄时代伸手可及。
程序英雄时代的衰落
WPS作者求伯君、KV杀毒软件作者王江民、五笔字型作者王永民、中文之星作者王志东、UDDOS作者鲍岳桥和简晶、CCDOS作者吴晓军、自然码作者周志农、CCED作者朱崇君……每一个名字都代表一个奇迹!
三岁因小儿麻痹症而落下终身残疾,三十八岁才接触电脑的王江民,在1996年带着他无师自通编写的KV6杀毒软件来到中关村,一周就赚了150万。一年后,KV杀毒软件占据了通用软件40%以上的市场份额。一夜之间,王江民成为中关村最受人景仰的软件英雄——程序英雄们的故事,曾经是多么辉煌!
然而,随着Internet大浪潮席卷而来,程序英雄们开始隐身幕后。虽然一部分程序英雄成功转型,鲍岳桥和简晶创办了联众,王志东创办了新浪,雷军创办了卓越……但谁都清楚,他们是创办者,是管理者,不再是署在他们网站“封面”上的作者了。从那时起,除了一些小软件外(其中不乏成功案例,如NetAnts等),已经很少有人能够与某个知名软件划等号了。
日渐沉重的Winux时代
随着IT从DOS时代向Windows时代过渡,软件系统开始变得越来越复杂,程序开发变成了软件工程。软件除了开发过程外,还有运作过程、维护过程。首先,需要进行问题分析,形成软件需求规约,再进行需求分析,生成功能规约。然后,要进行概要设计和详细设计。接着,实现活动把设计结果转换为可执行的程序代码。软件研制的分工越来越细,有的人做数据库访问层,有的人做业务逻辑层,有的人做用户界面层;软件开发的整个过程,都有不断确认的活动,保证最终产品满足用户的要求;软件部署后,还有维护活动,包括使用过程中的扩充、修改与完善。伴随以上过程,还有管理过程、支持过程、培训过程等。
不仅软件开发和运维过程越来越复杂,软件的规模也越来越大。我们从Windows代码行数就可以看出端倪:Windows 95是1500万行,Windows 98是1800万行,Windows 2000是2000万行,Windows XP是3500万行,而Windows Vista则高达5000万行。虽然比尔·盖茨经常在公众面前怀念只有几十KB的BASIC语言,Windows还是不可避免地变得越来越臃肿。
由于坊间流传安迪-比尔定理,即比尔要拿走Intel CEO安迪所给的(What Andy gives, Bill takes away)。公众于是怀疑是不是微软有意为之呢?我以为不是。来看看以简洁为美的Linux就知道了。Linux各个版本源码的代码行数如图1所示。可以看出,Linux也是越来越庞大。在这一点上,Windows和Linux倒是有几分相象呢,不妨将之称作Winux,就像当年的Wintel一样。
图1 Linux各个版本源码行数
由于代码量巨大,软件越来越不可能单靠个人的力量就能完成。例如,Windows 2000开发团队有900位开发人员,还配有1800位测试人员。同时,又由于软件系统极其庞大,出现各种Bug的可能性大增,给维护工作带来巨大的挑战。例如,Windows XP迄今已经打了上千个补丁。每一个补丁都需要耗费大量人力。所以说,在Winux时代,软件业的个人英雄是很难出现的。
云计算时代程序英雄重现
2006年8月,刚从大学毕业的史蒂维·克里弗顿,发现人们有把照片变成Flash短片的需求,于是架了几台服务器,创办了一家名为Animoto的小公司。当时,Animoto网站每天只有5000位访客。然而,2008年4月,Facebook向其社区热情推荐了Animoto,使得在短短的3天里,就有75万人到Animoto网站注册。Animoto网站顿时不堪重负,变得慢如蜗牛,恶评铺天盖地而来。要扭转乾坤,必需增容100倍以上。这对既没有资本又没有增容技术能力的年轻人来说简直是灾难。在这个紧要关头,史蒂维的大学同学建议使用亚马逊提供的计算资源租用服务。从此之后,Animoto不再需要购买任何新的设备,有多少流量,就租用多少亚马逊的计算能力。用多少,付多少钱,既节省了成本,又获得了可以无限扩展的计算能力。如今这群年轻人已经赚了大钱。
亚马逊提供的这种计算资源租用服务就称为云计算。亚马逊研发了弹性计算云EC2和简单存储服务S3为企业提供计算和存储服务。在诞生不到两年的时间内,就有44万程序员在亚马逊上注册,开发各种各样的应用。
除了亚马逊外,Google、IBM、微软和Yahoo等大公司都建有云计算平台。云计算领域的众多成功公司还包括VMware、Salesforce、Facebook、YouTube等。Google搜索引擎就建立于分布在200多个站点、超过100万台的服务器的云计算平台之上。Google的一系列成功应用,包括Google地球、地图、Gmail、Docs、Wave等也同样使用了这些基础设施。Google还提供了Google App Engine编程环境,供程序员们开发各种应用。微软于2008年10月推出了Windows Azure操作系统。Azure是继Windows取代DOS之后,微软的又一次颠覆性转型。Azure的底层是微软全球基础服务系统,由遍布全球的第四代数据中心构成。目前,微软已经配置了200多个集装箱式数据中心,服务器数量超过50万台。微软最新推出的Visual Studio 2010支持非常方便地开发云计算应用。
以前我们画网络图时,用“一朵云”来代替网络。现在,云计算之所以称作“云”,就是因为其计算设施不在本地而在网络中。云计算是网络宽带化发展的必然结果,它是一种商业计算模型,将计算任务分布在大量计算机构成的资源池上,使用户能够按需获取计算力、存储空间和信息服务。云计算的核心是可以自我维护和管理的虚拟计算资源池,通常由一些大型服务器集群构成。
有了云计算平台,程序员就可以动态申请所需资源,来支撑各种应用程序的运转,而无需为烦琐的细节烦恼。云计算使程序员能够更加专注于自己的业务,有利于提高效率、降低成本和实现技术创新。这一点,我们可以从一组间接的数据推断出来。iTunes、Facebook和Myspace都是面向特定应用领域、支持二次开发的公共平台。在2009年前18周,因金融风暴的影响,开发应用的程序员数量明显下降,而应用程序数量反而大增(如图2所示)。之所以如此,就是因为有了Facebook这样的支撑平台,程序员需要考虑的问题大大简化,工作效率大为提高。
图2 iTunes、Facebook和Myspace的应用程序数量增长
依托亚马逊的云计算平台,有许许多多不拥有计算资源的公司取得了成功。例如,99designs是一个大规模的设计交易平台,目前已经收到超过53,000位设计师提供的多达300万件设计作品;Livemocha是一家在线的语言学习网站,提供超过25种语言的学习,并已经拥有了超过300万用户;Monografias是拉丁美洲的一个资料分享网站,每天有200万位访客;著名的互联网排名网站Alexa在亚马逊云计算平台上存储了超过1200万个数据对象,每天要提供超过500万次查询。
在我国,云计算已经掀起了IT企业转型热潮。中国电信与EMC合作,在上海构建了一个拥有2PB存储空间的云存储平台,称为e云。e云是安全的在线备份服务,可保护数据不受文件损坏、意外删除、硬件问题等灾难的影响。然而,已建的云计算数据中心基本上是以私有云的形式存在的,外界无法访问其服务。目前,对国内程序员而言,要么可以用外币信用卡购买国外的云计算服务,要么还需要等待一小段时间才能用上云计算服务。使用国外的云计算服务,除了支付上的困难外,还有网络访问速度的障碍——除非你的网站主要面向国外。可以预见,国内的云计算平台提供商将主要是中国移动、中国电信和中国联通三家运营商。当前,中国移动已经建成1000台服务器、5000个CPU核心、3000TB存储规模的“大云”试验平台。2010年5月21日,中国移动在第二届中国云计算大会上发布了“大云”1.0版本,已实现分布式文件系统、分布式海量数据仓库、分布式计算框架、集群管理、云存储系统、弹性计算系统、并行数据挖掘工具等关键功能。中国移动已经发放了一些试用帐号,相信很快将开放出来给公众使用。
由于众多新技术的运用和规模效应,在性能价格比上云计算相对传统计算模式能够惊人地提升5-40倍。目前众多的企业开始布局云计算,百度、阿里巴巴、瑞星、微软、天云科技、广达电脑、讯鸟等公司都在大规模招聘云计算研发人才。广达电脑居然一次性招聘700位云计算人才。而目前真正接触过云计算研发的人实在是太少了,所以许多招聘岗位都在虚位以待。对于程序员而言,如果能够实现向云计算转型,是一个提升自身含金量的绝佳机会。