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