不忘初心 牢记使命
网络强国 科技创新
图片来源@视觉中国
文 | 郭华
云计算领域里最不缺的就是远见。
早在大部分人还没听过计算机的1961年,已经有人预料到将来计算会成为公共服务,然而直到2006年AWS发布S3和EC2,才算真正拉开云计算的大幕,其间四十多年风风雨雨,为什么最后做成的是网上卖货的Amazon?
而且你很难说Amazon做的是不是四十年前大家想的那个云计算。
01 云计算极简史
云计算极简时间轴
1946年,世界上第一台现代电子计算机ENIAC在宾夕法尼亚大学诞生。早期的计算机昂贵、巨大、稀有且同时只能让一个人使用。
1955年,MIT的John McCarthy(人工智能之父、1971年图灵奖获得者)想到了通过time-sharing(分时)技术来满足多人同时使用一台计算机的诉求[1]。
1961年,John McCarthy在MIT的百周年纪念上第一次提出了公共计算服务的概念[2]:
如果我设想的那种计算机能够成真,那么计算或许某天会像电话一样被组织成公共服务…… 公共计算服务(Utility Computing)将是一种全新的重要工业的基础。
注:这里说的计算机便是分时计算机,即同时支持多人同时使用的计算机。
1963年,受McCarthy的影响,MIT跟Licklider负责的IPTO共同启动了Project MAC(Multiple Access Computing)[3],致力于推动分时系统的发展,具体目标包括:1)分时系统 ;2)一个使用分时系统的群体;3)对用户的教育。
1964年,大西洋月刊发表了一篇题为《The Computers of Tomorrow》的文章[4],细致的分析了公共计算服务与公共电网的异同点,指出了计算想像电网那样成为公共服务需要关注的三个问题:
接口——插上插座就能接入电力,而计算离大众还太远;
服务设备——专用设备将电力转化成人们所需的服务,如电灯、电机等,随开随用,而计算还需要复杂的编程才能使用;
产品同质性——电力是同质产品,不管水电火电还是风电,接上用起来没区别,同时电力是单向的,而计算的应用效果却取决于用户编程能力,这是一种与电力不同的双向交互方式;
1965年,在《The Computers of Tomorrow》的影响下,MAC项目组开始开发Multics操作系统[5]。在这个过程中,通用电器被选为硬件供应商,IBM出局,贝尔实验室加入到MAC的软件开发中。
1965年,从MAC中出局的IBM开始研发CP-40/CMS[6]分时操作系统,该系统于1967年发布,是历史上第一个虚拟机系统。
1969年,受不了Multics缓慢进展的贝尔实验室从MAC项目退出,开始开发Unix操作系统[7]。
1969年,在Licklider的推动下,ARPA(国防部高级研究计划局)研究的计算机网络ARPANET[8]诞生,其后来发展为Internet。
自此,云计算所依赖的底层技术全部出现了:
管理物理计算资源——操作系统;
把资源分给多人同时使用——虚拟化技术;
远程接入——互联网;
醉里挑灯看剑,梦回吹角连营——技术的成熟需要时间,商业却不能等待,从计算机被发明以来,人们对计算的需求便没停止过。面对公共服务的远梦,企业家们退而求其次,大型机、小型机、x86服务器,计算只能暂时被装到盒子里分发。
计算机商业一片繁荣,但Utility Computing却进入了休眠期。
计算资源的分布[9]
1990年代,Utility Computing概念又一次复苏,这次直接照搬了电网(Electric Power Grid)起名叫网格计算(Grid Computing),其目标是把大量机器整合成一个虚拟的超级机器,给分布在世界各地的人们使用,总之还是公共计算服务的[10]。
1996年,康柏公司的一群技术主管在讨论计算业务的发展时首次使用了Cloud Computing这个词[11],他们认为商业计算会向Cloud Computing转移。
1996年康柏公司关于cloud computing的商业计划
1997年,美国教授Ramnath Chellappa对“Cloud Computing”这个词做出了定义:“计算边界由经济而并非完全由技术决定的计算模式”[12]。
接下来是一波小浪潮[13]。
1997年,InsynQ基于HP的设备上线了按需使用的应用和桌面服务。
1998年,HP成立公共计算部门。
2000年,Sun 发布 Sun cloud。
2001年,HP发布公共数据中心产品。
2002年,Amazon上线AWS(Amazon.com Web Service),本意是把自己的商品目录以SOAP接口的方式开放给开发者[14]。
2002年,IBM在自己的E-business基础上,综合网络服务(Web Service)、开放标准(Open Standard)、Grid Computing,进一步提出 E-business on-demand 的概念[15]。
到这里为止,云计算还看不到什么曙光。
2006年,AWS发布S3(Simple Storage Service)和EC2(Elastic Compute Cloud),从此便拉开了云计算真正的大幕,AWS也一骑绝尘,成为了云计算市场的领导者和绝对统治者。
AWS营收曲线[16]与市场份额
然而有意思的是到2006年AWS还没提过Cloud Computing。
不过Cloud Computing这个词却随着EC2的发布迅速崛起,很快大家不再提Grid Computing和Utility Computing。
Google Trends:cloud概念
所以为什么是AWS?
02 AWS的崛起
历史未必能重演,但回看历史总能得到一些经验教训,抛开那些繁杂的概念,我们不妨看看AWS到底是如何作出S3和EC2的[17]。
时间回到2000年,当时Amazon正在开发电商服务平台Merchant.com,旨在帮助第三方公司在Amazon上构建自己的在线购物网站。
不过这个项目进展没想象的顺利。
Amazon1994年成立,随后快速发展,但其技术架构在设计之初显然对未来一无所知,整个系统不过是随业务快速发展而不断修修补补搞起来的一团糟糕。
这意味着想把它解耦并抽离出一个公共服务平台是一个非常困难的问题。
难归难,这不过是工作量的事情,但关键是Amazon的管理层敏锐的意识到了技术问题在制约公司的发展。
于是整个公司的系统开始做服务化重构,把原来交织在一起的代码解耦成独立、设计良好并清晰描述的API服务,不过内部还是外部应用,大家都按照API的方式进行开发——也就是说大概从2000年开始,Amazon已经悄悄的变成了服务化公司。
API化提高了系统复用性和灵活性,对多变的互联网业务来讲,这种特性显然尤其珍贵。
这还没完。
随着公司业务发展,工程师的数量越来越多,Amazon却发现虽然人数增加了,自己开发应用的速度似乎并没有加快。
或许我们很容易用《人月神话》来回答这个问题,但Amazon并没有满足于追求一个解释,他们想要的是解决方案。
当时的Bezos秘书长,现在AWS的CEO,Andy Jassy发现了一个活生生的例子:这是一个本来大家都以为三个月就会上线的项目,结果三个月过去了,项目组却仅仅完成了服务器、数据库和存储部分的开发——进一步调查,公司里大多数项目都是如此。
显然公司有太多的时间被浪费在了重复造轮子上。
2003年,Jassy在Bezos的家里召开了一次管理层会议,会上大家决定要把应用开发的通用部分抽离出来,做一个公共基础设施服务平台,不仅Amazon,甚至其他开发者也可以基于这个平台开发自己的应用。
到这里他们才第一次意识到这可能是改变历史的东西。
随后他们整理了一系列可以成为公共服务的候选模块,并从中挑了服务器、存储和数据库三个部分开始。不仅仅是因为这三个需求最多,还因为Amazon最擅长这部分,毕竟低利润率商业模式让他在如何降低数据中心的运营成本上颇有积累。
再后来的故事,大家就都清楚了。
03 概念消失,产品的胜利
我前面的文章
《从人类文明的两条法则看云计算
》从工具的角度解释过为什么大的云厂商目前都是成功的应用开发公司:
公司业务覆盖越广,碰到的问题越多,曾经解决的问题越多,在云计算转型的过程中就越贴近客户需求,成本越低,总体就越有优势。
AWS就是个活生生的例子,他能做成的第一个原因就是Amazon有这么多业务,这种快速的业务尝试让其内部环境像极了互联网创业的过程,所以他从自己需求出发找到的解决方案正是所有互联网业务都需要的银弹。
其次,AWS仅仅抽离出了公共部分做成了服务,而不是创造了新的东西,开发者还在使用自己熟悉的东西,只不过是在云上。作为对比,我们看一下谷歌2008年推出的第一个云产品Google App Engine,引用一段wiki对它的描述:
有些应用程序托管服务让用户安装、配置几乎所有*NIX兼容的软件,而App Engine则要求开发者使用Python或Java语言来编程,而且只能使用一套限定的API。当前的API允许程序于一个BigTable非关系数据库上存储和检索数据、提出HTTP请求、发送E-mail、处理图像、还有缓存。大多数现存的Web应用程序,若未经修改,均不能直接在App Engine上运行,因为它们需要使用关系数据库。
我不怀疑Google的技术实力,相信App Engine这么设计一定让他在弹性方面具有巨大优势,但不知道他们有没有想过,这种对用户的“过度关爱”是否真是当时用户想要的。
最后从外部环境来看,AWS正好赶上了互联网一波创业浪潮,举几个他的典型客户,Yelp成立于2004年,Zynga成立于2007年,Airbnb 成立于2008年,Slack成立于2009年,Lyft成立于2012年……或许从下面两张图片看这点更有统计意义,startups的流行曲线与AWS早期具有非常高的相关度。
Google Trend :startups
Google Trend:AWS
内外几个因素叠加到一起,最终的结果就是AWS收割了互联网创业潮的红利,快速崛起。
抛开运气的成分,从这段历史来看,AWS没有炒作概念——否则不至于2006年推出S3和EC2的时候都没提Cloud Computing;AWS也没有钻研技术——EC2底层的虚拟化技术直接应用了开源的Xen;但AWS却在做产品——剖析问题,抽象解决方案并最终收敛成了三个不起眼的产品。
再看一组有意思的曲线。
Google Trends:cloud computing
Google Trends:AWS
Google Trends:Azure
云计算在发展,AWS和Azure等云厂商的热度在崛起,Cloud Computing的概念却在衰落,抽象的概念被具体的产品所取代,或许这便是成熟的标志。
所以AWS们确实杀死了云计算,云计算从一个漂亮的蝴蝶概念蜕化成了一个茧——云主机与云存储,只不过这个茧太丑陋了,以至于很多人都说这不过是传统主机托管的概念封装。
但AWS在2003年是有远见和野心的,他们想的是如果大家都基于AWS做开发,或许AWS未来会成为网络操作系统[17],16年后的今天再看AWS“for builders”的口号,诚如所思。
计算需要交互,为何非要像水和电?(本文首发钛媒体)
咨询热线
地址:深圳市龙岗区坂田街道坂田国际中心E栋二层209房