每日最新頭條.有趣資訊

AWS殺死了雲計算:雲計算四十年歷史化蝶成繭

圖片來源@視覺中國

文 | 郭華

雲計算領域裡最不缺的就是遠見。

早在大部分人還沒聽過計算機的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”的口號,誠如所思。

計算需要互動,為何非要像水和電?(本文首發鈦媒體)

獲得更多的PTT最新消息
按讚加入粉絲團