AWS殺死了云計算:云計算四十年歷史化蝶成繭
云計算領(lǐng)域里最不缺的就是遠(yuǎn)見。
早在大部分人還沒聽過計算機的 1961 年,已經(jīng)有人預(yù)料到將來計算會成為公共服務(wù),然而直到 2006 年 AWS 發(fā)布 S3 和 EC2,才算真正拉開云計算的大幕,其間四十多年風(fēng)風(fēng)雨雨,為什么最后做成的是網(wǎng)上賣貨的 Amazon?
而且你很難說 Amazon 做的是不是四十年前大家想的那個云計算。
01 云計算極簡史
云計算極簡時間軸
1946 年,世界上第一臺現(xiàn)代電子計算機 ENIAC 在賓夕法尼亞大學(xué)誕生。早期的計算機昂貴、巨大、稀有且同時只能讓一個人使用。
1955 年,MIT 的 John McCarthy(人工智能之父、1971 年圖靈獎獲得者)想到了通過 time-sharing(分時)技術(shù)來滿足多人同時使用一臺計算機的訴求[1]。
1961 年,John McCarthy 在 MIT 的百周年紀(jì)念上第一次提出了公共計算服務(wù)的概念[2]:
如果我設(shè)想的那種計算機能夠成真,那么計算或許某天會像電話一樣被組織成公共服務(wù)…… 公共計算服務(wù)(Utility Computing)將是一種全新的重要工業(yè)的基礎(chǔ)。
注:這里說的計算機便是分時計算機,即同時支持多人同時使用的計算機。
1963 年,受 McCarthy 的影響,MIT 跟 Licklider 負(fù)責(zé)的 IPTO 共同啟動了 Project MAC(Multiple Access Computing)[3],致力于推動分時系統(tǒng)的發(fā)展,具體目標(biāo)包括:1)分時系統(tǒng) ;2)一個使用分時系統(tǒng)的群體;3)對用戶的教育。
1964 年,大西洋月刊發(fā)表了一篇題為《The Computers of Tomorrow》的文章[4],細(xì)致的分析了公共計算服務(wù)與公共電網(wǎng)的異同點,指出了計算想像電網(wǎng)那樣成為公共服務(wù)需要關(guān)注的三個問題:
-
接口——插上插座就能接入電力,而計算離大眾還太遠(yuǎn);
- 服務(wù)設(shè)備——專用設(shè)備將電力轉(zhuǎn)化成人們所需的服務(wù),如電燈、電機等,隨開隨用,而計算還需要復(fù)雜的編程才能使用;
-
產(chǎn)品同質(zhì)性——電力是同質(zhì)產(chǎn)品,不管水電火電還是風(fēng)電,接上用起來沒區(qū)別,同時電力是單向的,而計算的應(yīng)用效果卻取決于用戶編程能力,這是一種與電力不同的雙向交互方式。
1965 年,在《The Computers of Tomorrow》的影響下,MAC 項目組開始開發(fā) Multics 操作系統(tǒng)[5]。在這個過程中,通用電器被選為硬件供應(yīng)商,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)了:
- 管理物理計算資源——操作系統(tǒng);
- 把資源分給多人同時使用——虛擬化技術(shù);
- 遠(yuǎn)程接入——互聯(lián)網(wǎng);
醉里挑燈看劍,夢回吹角連營——技術(shù)的成熟需要時間,商業(yè)卻不能等待,從計算機被發(fā)明以來,人們對計算的需求便沒停止過。面對公共服務(wù)的遠(yuǎn)夢,企業(yè)家們退而求其次,大型機、小型機、x86 服務(wù)器,計算只能暫時被裝到盒子里分發(fā)。
計算機商業(yè)一片繁榮,但 Utility Computing 卻進入了休眠期。
計算資源的分布[9]
1990 年代,Utility Computing 概念又一次復(fù)蘇,這次直接照搬了電網(wǎng)(Electric Power Grid)起名叫網(wǎng)格計算(Grid Computing),其目標(biāo)是把大量機器整合成一個虛擬的超級機器,給分布在世界各地的人們使用,總之還是公共計算服務(wù)的[10]。
1996 年,康柏公司的一群技術(shù)主管在討論計算業(yè)務(wù)的發(fā)展時首次使用了 Cloud Computing 這個詞[11],他們認(rèn)為商業(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è)備上線了按需使用的應(yīng)用和桌面服務(wù)。
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ò)服務(wù)(Web Service)、開放標(biāo)準(zhǔn)(Open Standard)、Grid Computing,進一步提出 E-business on-demand 的概念[15]。
到這里為止,云計算還看不到什么曙光。
2006 年,AWS 發(fā)布 S3(Simple Storage Service)和 EC2(Elastic Compute Cloud),從此便拉開了云計算真正的大幕,AWS 也一騎絕塵,成為了云計算市場的領(lǐng)導(dǎo)者和絕對統(tǒng)治者。
AWS 營收曲線[16]與市場份額
然而有意思的是到 2006 年 AWS 還沒提過 Cloud Computing。
不過 Cloud Computing 這個詞卻隨著 EC2 的發(fā)布迅速崛起,很快大家不再提 Grid Computing 和 Utility Computing。
Google Trends:cloud 概念
所以為什么是 AWS?
02 AWS 的崛起
歷史未必能重演,但回看歷史總能得到一些經(jīng)驗教訓(xùn),拋開那些繁雜的概念,我們不妨看看 AWS 到底是如何作出 S3 和 EC2 的[17]。
時間回到 2000 年,當(dāng)時 Amazon 正在開發(fā)電商服務(wù)平臺 Merchant.com,旨在幫助第三方公司在 Amazon 上構(gòu)建自己的在線購物網(wǎng)站。
不過這個項目進展沒想象的順利。
Amazon 1994 年成立,隨后快速發(fā)展,但其技術(shù)架構(gòu)在設(shè)計之初顯然對未來一無所知,整個系統(tǒng)不過是隨業(yè)務(wù)快速發(fā)展而不斷修修補補搞起來的一團糟糕。
這意味著想把它解耦并抽離出一個公共服務(wù)平臺是一個非常困難的問題。
難歸難,這不過是工作量的事情,但關(guān)鍵是 Amazon 的管理層敏銳的意識到了技術(shù)問題在制約公司的發(fā)展。
于是整個公司的系統(tǒng)開始做服務(wù)化重構(gòu),把原來交織在一起的代碼解耦成獨立、設(shè)計良好并清晰描述的 API 服務(wù),不過內(nèi)部還是外部應(yīng)用,大家都按照 API 的方式進行開發(fā)——也就是說大概從 2000 年開始,Amazon 已經(jīng)悄悄的變成了服務(wù)化公司。
API 化提高了系統(tǒng)復(fù)用性和靈活性,對多變的互聯(lián)網(wǎng)業(yè)務(wù)來講,這種特性顯然尤其珍貴。
這還沒完。
隨著公司業(yè)務(wù)發(fā)展,工程師的數(shù)量越來越多,Amazon 卻發(fā)現(xiàn)雖然人數(shù)增加了,自己開發(fā)應(yīng)用的速度似乎并沒有加快。
或許我們很容易用《人月神話》來回答這個問題,但 Amazon 并沒有滿足于追求一個解釋,他們想要的是解決方案。
當(dāng)時的 Bezos 秘書長,現(xiàn)在 AWS 的 CEO,Andy Jassy 發(fā)現(xiàn)了一個活生生的例子:這是一個本來大家都以為三個月就會上線的項目,結(jié)果三個月過去了,項目組卻僅僅完成了服務(wù)器、數(shù)據(jù)庫和存儲部分的開發(fā)——進一步調(diào)查,公司里大多數(shù)項目都是如此。
顯然公司有太多的時間被浪費在了重復(fù)造輪子上。
2003 年,Jassy 在 Bezos 的家里召開了一次管理層會議,會上大家決定要把應(yīng)用開發(fā)的通用部分抽離出來,做一個公共基礎(chǔ)設(shè)施服務(wù)平臺,不僅 Amazon,甚至其他開發(fā)者也可以基于這個平臺開發(fā)自己的應(yīng)用。
到這里他們才第一次意識到這可能是改變歷史的東西。
隨后他們整理了一系列可以成為公共服務(wù)的候選模塊,并從中挑了服務(wù)器、存儲和數(shù)據(jù)庫三個部分開始。不僅僅是因為這三個需求最多,還因為 Amazon 最擅長這部分,畢竟低利潤率商業(yè)模式讓他在如何降低數(shù)據(jù)中心的運營成本上頗有積累。
再后來的故事,大家就都清楚了。
03 概念消失,產(chǎn)品的勝利
我前面的文章《從人類文明的兩條法則看云計算》從工具的角度解釋過為什么大的云廠商目前都是成功的應(yīng)用開發(fā)公司:
公司業(yè)務(wù)覆蓋越廣,碰到的問題越多,曾經(jīng)解決的問題越多,在云計算轉(zhuǎn)型的過程中就越貼近客戶需求,成本越低,總體就越有優(yōu)勢。
AWS 就是個活生生的例子,他能做成的第一個原因就是 Amazon 有這么多業(yè)務(wù),這種快速的業(yè)務(wù)嘗試讓其內(nèi)部環(huán)境像極了互聯(lián)網(wǎng)創(chuàng)業(yè)的過程,所以他從自己需求出發(fā)找到的解決方案正是所有互聯(lián)網(wǎng)業(yè)務(wù)都需要的銀彈。
其次,AWS 僅僅抽離出了公共部分做成了服務(wù),而不是創(chuàng)造了新的東西,開發(fā)者還在使用自己熟悉的東西,只不過是在云上。作為對比,我們看一下谷歌 2008 年推出的第一個云產(chǎn)品 Google App Engine,引用一段 wiki 對它的描述:
有些應(yīng)用程序托管服務(wù)讓用戶安裝、配置幾乎所有 *NIX 兼容的軟件,而 App Engine 則要求開發(fā)者使用 Python 或 Java 語言來編程,而且只能使用一套限定的 API。當(dāng)前的 API 允許程序于一個 BigTable 非關(guān)系數(shù)據(jù)庫上存儲和檢索數(shù)據(jù)、提出 HTTP 請求、發(fā)送E-mail、處理圖像、還有緩存。大多數(shù)現(xiàn)存的 Web 應(yīng)用程序,若未經(jīng)修改,均不能直接在 App Engine 上運行,因為它們需要使用關(guān)系數(shù)據(jù)庫。
我不懷疑 Google 的技術(shù)實力,相信 App Engine 這么設(shè)計一定讓他在彈性方面具有巨大優(yōu)勢,但不知道他們有沒有想過,這種對用戶的“過度關(guān)愛”是否真是當(dāng)時用戶想要的。
最后從外部環(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ù)直接應(yīng)用了開源的 Xen;但 AWS 卻在做產(chǎn)品——剖析問題,抽象解決方案并最終收斂成了三個不起眼的產(chǎn)品。
再看一組有意思的曲線。
Google Trends:cloud computing
Google Trends:AWS
Google Trends:Azure
云計算在發(fā)展,AWS 和 Azure 等云廠商的熱度在崛起,Cloud Computing 的概念卻在衰落,抽象的概念被具體的產(chǎn)品所取代,或許這便是成熟的標(biāo)志。
所以 AWS 們確實殺死了云計算,云計算從一個漂亮的蝴蝶概念蛻化成了一個繭——云主機與云存儲,只不過這個繭太丑陋了,以至于很多人都說這不過是傳統(tǒng)主機托管的概念封裝。
但 AWS 在 2003 年是有遠(yuǎn)見和野心的,他們想的是如果大家都基于 AWS 做開發(fā),或許 AWS 未來會成為網(wǎng)絡(luò)操作系統(tǒng)[17],16 年后的今天再看 AWS “for builders” 的口號,誠如所思。
計算需要交互,為何非要像水和電?(本文首發(fā)鈦媒體)
參考資料:
- REMINISCENCES ON THE HISTORY OF TIME SHARING http://www-formal.stanford.edu/jmc/history/timesharing/timesharing.html
- Remembering Professor John McCarthy – A Forefather Of Cloud Computinghttps://cloudjumper.com/remembering-professor-john-mccarthy-forefather-cloud-computing/
- Project MAC https://multicians.org/project-mac.html
- The Computers of Tomorrow https://www.theatlantic.com/past/docs/unbound/flashbks/computer/greenbf.htm
- Multics History https://multicians.org/history.html
- CP-40/CMS https://en.wikipedia.org/wiki/CP/CMS
- Unix history http://ibgwww.colorado.edu/~lessem/psyc5112/usail/concepts/hx-of-unix/unixhx.html
- ARPANET https://en.wikipedia.org/wiki/ARPANET
- http://www.moorinsightsstrategy.com/wp-content/uploads/2015/04/Datacenter-Memory-Storage-Report-Moor-Insights-Strategy.pdf
- grid computing history http://www.avarsys.com/grid_computing_history.html
- cloud computing in Compaq https://s3.amazonaws.com/files.technologyreview.com/p/pub/legacy/compaq_cst_1996_0.pdf
- https://cloudtweaks.com/2011/02/a-history-of-cloud-computing/
- Utility computing https://en.wikipedia.org/wiki/Utility_computing
- AWS history https://mediatemple.net/blog/news/brief-history-aws/ http://jeff-barr.com/2014/08/19/my-first-12-years-at-amazon-dot-com/
- IBM on demand computing https://www.zdnet.com/article/on-demand-computing-what-are-the-odds/ https://www.cnet.com/news/ibm-talks-up-computing-on-demand/
- AWS 營收 https://www.nextplatform.com/2018/02/05/navigating-revenue-streams-profit-pools-aws/
- How AWS came to be https://techcrunch.com/2016/07/02/andy-jassys-brief-history-of-the-genesis-of-aws/
- AWS 的幾個客戶列表 https://www.quora.com/Who-are-the-top-10-Amazon-AWS-customers