圖片來源@視覺中國
文 | 郭華
云計算領(lǐng)域里最不缺的就是遠見。
早在大部分人還沒聽過計算機的1961年,已經(jīng)有人預料到將來計算會成為公共服務,然而直到2006年AWS發(fā)布S3和EC2,才算真正拉開云計算的大幕,其間四十多年風風雨雨,為什么最后做成的是網(wǎng)上賣貨的Amazon?
而且你很難說Amazon做的是不是四十年前大家想的那個云計算。
![]()
云計算極簡時間軸
1946年,世界上第一臺現(xiàn)代電子計算機ENIAC在賓夕法尼亞大學誕生。早期的計算機昂貴、巨大、稀有且同時只能讓一個人使用。
1955年,MIT的John McCarthy(人工智能之父、1971年圖靈獎獲得者)想到了通過time-sharing(分時)技術(shù)來滿足多人同時使用一臺計算機的訴求[1]。
1961年,John McCarthy在MIT的百周年紀念上第一次提出了公共計算服務的概念[2]:
如果我設(shè)想的那種計算機能夠成真,那么計算或許某天會像電話一樣被組織成公共服務…… 公共計算服務(Utility Computing)將是一種全新的重要工業(yè)的基礎(chǔ)。
注:這里說的計算機便是分時計算機,即同時支持多人同時使用的計算機。
1963年,受McCarthy的影響,MIT跟Licklider負責的IPTO共同啟動了Project MAC(Multiple Access Computing)[3],致力于推動分時系統(tǒng)的發(fā)展,具體目標包括:1)分時系統(tǒng) ;2)一個使用分時系統(tǒng)的群體;3)對用戶的教育。
1964年,大西洋月刊發(fā)表了一篇題為《The Computers of Tomorrow》的文章[4],細致的分析了公共計算服務與公共電網(wǎng)的異同點,指出了計算想像電網(wǎng)那樣成為公共服務需要關(guān)注的三個問題:
1965年,在《The Computers of Tomorrow》的影響下,MAC項目組開始開發(fā)Multics操作系統(tǒng)[5]。在這個過程中,通用電器被選為硬件供應商,IBM出局,貝爾實驗室加入到MAC的軟件開發(fā)中。
1965年,從MAC中出局的IBM開始研發(fā)CP-40/CMS[6]分時操作系統(tǒng),該系統(tǒng)于1967年發(fā)布,是歷史上第一個虛擬機系統(tǒng)。
1969年,受不了Multics緩慢進展的貝爾實驗室從MAC項目退出,開始開發(fā)Unix操作系統(tǒng)[7]。
1969年,在Licklider的推動下,ARPA(國防部高級研究計劃局)研究的計算機網(wǎng)絡(luò)ARPANET[8]誕生,其后來發(fā)展為Internet。
自此,云計算所依賴的底層技術(shù)全部出現(xiàn)了:
醉里挑燈看劍,夢回吹角連營——技術(shù)的成熟需要時間,商業(yè)卻不能等待,從計算機被發(fā)明以來,人們對計算的需求便沒停止過。面對公共服務的遠夢,企業(yè)家們退而求其次,大型機、小型機、x86服務器,計算只能暫時被裝到盒子里分發(fā)。
計算機商業(yè)一片繁榮,但Utility Computing卻進入了休眠期。
![]()
計算資源的分布[9]
1990年代,Utility Computing概念又一次復蘇,這次直接照搬了電網(wǎng)(Electric Power Grid)起名叫網(wǎng)格計算(Grid Computing),其目標是把大量機器整合成一個虛擬的超級機器,給分布在世界各地的人們使用,總之還是公共計算服務的[10]。
1996年,康柏公司的一群技術(shù)主管在討論計算業(yè)務的發(fā)展時首次使用了Cloud Computing這個詞[11],他們認為商業(yè)計算會向Cloud Computing轉(zhuǎn)移。
![]()
1996年康柏公司關(guān)于cloud computing的商業(yè)計劃
1997年,美國教授Ramnath Chellappa對“Cloud Computing”這個詞做出了定義:“計算邊界由經(jīng)濟而并非完全由技術(shù)決定的計算模式”[12]。
接下來是一波小浪潮[13]。
1997年,InsynQ基于HP的設(shè)備上線了按需使用的應用和桌面服務。
1998年,HP成立公共計算部門。
2000年,Sun 發(fā)布 Sun cloud。
2001年,HP發(fā)布公共數(shù)據(jù)中心產(chǎn)品。
2002年,Amazon上線AWS(Amazon.com Web Service),本意是把自己的商品目錄以SOAP接口的方式開放給開發(fā)者[14]。
2002年,IBM在自己的E-business基礎(chǔ)上,綜合網(wǎng)絡(luò)服務(Web Service)、開放標準(Open Standard)、Grid Computing,進一步提出 E-business on-demand 的概念[15]。
到這里為止,云計算還看不到什么曙光。
2006年,AWS發(fā)布S3(Simple Storage Service)和EC2(Elastic Compute Cloud),從此便拉開了云計算真正的大幕,AWS也一騎絕塵,成為了云計算市場的領(lǐng)導者和絕對統(tǒng)治者。
AWS營收曲線[16]與市場份額
然而有意思的是到2006年AWS還沒提過Cloud Computing。
不過Cloud Computing這個詞卻隨著EC2的發(fā)布迅速崛起,很快大家不再提Grid Computing和Utility Computing。
![]()
Google Trends:cloud概念
所以為什么是AWS?
歷史未必能重演,但回看歷史總能得到一些經(jīng)驗教訓,拋開那些繁雜的概念,我們不妨看看AWS到底是如何作出S3和EC2的[17]。
時間回到2000年,當時Amazon正在開發(fā)電商服務平臺Merchant.com,旨在幫助第三方公司在Amazon上構(gòu)建自己的在線購物網(wǎng)站。
不過這個項目進展沒想象的順利。
Amazon1994年成立,隨后快速發(fā)展,但其技術(shù)架構(gòu)在設(shè)計之初顯然對未來一無所知,整個系統(tǒng)不過是隨業(yè)務快速發(fā)展而不斷修修補補搞起來的一團糟糕。
這意味著想把它解耦并抽離出一個公共服務平臺是一個非常困難的問題。
難歸難,這不過是工作量的事情,但關(guān)鍵是Amazon的管理層敏銳的意識到了技術(shù)問題在制約公司的發(fā)展。
于是整個公司的系統(tǒng)開始做服務化重構(gòu),把原來交織在一起的代碼解耦成獨立、設(shè)計良好并清晰描述的API服務,不過內(nèi)部還是外部應用,大家都按照API的方式進行開發(fā)——也就是說大概從2000年開始,Amazon已經(jīng)悄悄的變成了服務化公司。
API化提高了系統(tǒng)復用性和靈活性,對多變的互聯(lián)網(wǎng)業(yè)務來講,這種特性顯然尤其珍貴。
這還沒完。
隨著公司業(yè)務發(fā)展,工程師的數(shù)量越來越多,Amazon卻發(fā)現(xiàn)雖然人數(shù)增加了,自己開發(fā)應用的速度似乎并沒有加快。
或許我們很容易用《人月神話》來回答這個問題,但Amazon并沒有滿足于追求一個解釋,他們想要的是解決方案。
當時的Bezos秘書長,現(xiàn)在AWS的CEO,Andy Jassy發(fā)現(xiàn)了一個活生生的例子:這是一個本來大家都以為三個月就會上線的項目,結(jié)果三個月過去了,項目組卻僅僅完成了服務器、數(shù)據(jù)庫和存儲部分的開發(fā)——進一步調(diào)查,公司里大多數(shù)項目都是如此。
顯然公司有太多的時間被浪費在了重復造輪子上。
2003年,Jassy在Bezos的家里召開了一次管理層會議,會上大家決定要把應用開發(fā)的通用部分抽離出來,做一個公共基礎(chǔ)設(shè)施服務平臺,不僅Amazon,甚至其他開發(fā)者也可以基于這個平臺開發(fā)自己的應用。
到這里他們才第一次意識到這可能是改變歷史的東西。
隨后他們整理了一系列可以成為公共服務的候選模塊,并從中挑了服務器、存儲和數(shù)據(jù)庫三個部分開始。不僅僅是因為這三個需求最多,還因為Amazon最擅長這部分,畢竟低利潤率商業(yè)模式讓他在如何降低數(shù)據(jù)中心的運營成本上頗有積累。
再后來的故事,大家就都清楚了。
我前面的文章《從人類文明的兩條法則看云計算》從工具的角度解釋過為什么大的云廠商目前都是成功的應用開發(fā)公司:
公司業(yè)務覆蓋越廣,碰到的問題越多,曾經(jīng)解決的問題越多,在云計算轉(zhuǎn)型的過程中就越貼近客戶需求,成本越低,總體就越有優(yōu)勢。
AWS就是個活生生的例子,他能做成的第一個原因就是Amazon有這么多業(yè)務,這種快速的業(yè)務嘗試讓其內(nèi)部環(huán)境像極了互聯(lián)網(wǎng)創(chuàng)業(yè)的過程,所以他從自己需求出發(fā)找到的解決方案正是所有互聯(lián)網(wǎng)業(yè)務都需要的銀彈。
其次,AWS僅僅抽離出了公共部分做成了服務,而不是創(chuàng)造了新的東西,開發(fā)者還在使用自己熟悉的東西,只不過是在云上。作為對比,我們看一下谷歌2008年推出的第一個云產(chǎn)品Google App Engine,引用一段wiki對它的描述:
有些應用程序托管服務讓用戶安裝、配置幾乎所有*NIX兼容的軟件,而App Engine則要求開發(fā)者使用Python或Java語言來編程,而且只能使用一套限定的API。當前的API允許程序于一個BigTable非關(guān)系數(shù)據(jù)庫上存儲和檢索數(shù)據(jù)、提出HTTP請求、發(fā)送E-mail、處理圖像、還有緩存。大多數(shù)現(xiàn)存的Web應用程序,若未經(jīng)修改,均不能直接在App Engine上運行,因為它們需要使用關(guān)系數(shù)據(jù)庫。
我不懷疑Google的技術(shù)實力,相信App Engine這么設(shè)計一定讓他在彈性方面具有巨大優(yōu)勢,但不知道他們有沒有想過,這種對用戶的“過度關(guān)愛”是否真是當時用戶想要的。
最后從外部環(huán)境來看,AWS正好趕上了互聯(lián)網(wǎng)一波創(chuàng)業(yè)浪潮,舉幾個他的典型客戶,Yelp成立于2004年,Zynga成立于2007年,Airbnb 成立于2008年,Slack成立于2009年,Lyft成立于2012年……或許從下面兩張圖片看這點更有統(tǒng)計意義,startups的流行曲線與AWS早期具有非常高的相關(guān)度。
![]()
Google Trend :startups
![]()
Google Trend:AWS
內(nèi)外幾個因素疊加到一起,最終的結(jié)果就是AWS收割了互聯(lián)網(wǎng)創(chuàng)業(yè)潮的紅利,快速崛起。
拋開運氣的成分,從這段歷史來看,AWS沒有炒作概念——否則不至于2006年推出S3和EC2的時候都沒提Cloud Computing;AWS也沒有鉆研技術(shù)——EC2底層的虛擬化技術(shù)直接應用了開源的Xen;但AWS卻在做產(chǎn)品——剖析問題,抽象解決方案并最終收斂成了三個不起眼的產(chǎn)品。
再看一組有意思的曲線。
![]()
Google Trends:cloud computing
![]()
Google Trends:AWS
![]()
Google Trends:Azure
云計算在發(fā)展,AWS和Azure等云廠商的熱度在崛起,Cloud Computing的概念卻在衰落,抽象的概念被具體的產(chǎn)品所取代,或許這便是成熟的標志。
所以AWS們確實殺死了云計算,云計算從一個漂亮的蝴蝶概念蛻化成了一個繭——云主機與云存儲,只不過這個繭太丑陋了,以至于很多人都說這不過是傳統(tǒng)主機托管的概念封裝。
但AWS在2003年是有遠見和野心的,他們想的是如果大家都基于AWS做開發(fā),或許AWS未來會成為網(wǎng)絡(luò)操作系統(tǒng)[17],16年后的今天再看AWS“for builders”的口號,誠如所思。
計算需要交互,為何非要像水和電?(本文首發(fā)鈦媒體)
參考資料:
快報
根據(jù)《網(wǎng)絡(luò)安全法》實名制要求,請綁定手機號后發(fā)表評論
不好意思有個錯別字,02部分的“不過內(nèi)部還是外部應用”里的不過要改成不管,或者改成不論也行……