AWS殺死了云計算:云計算四十年歷史化蝶成繭
圖片來源@視覺中國
摘要: 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 上構建自己的在線購物網站。
不過這個項目進展沒想象的順利。
Amazon 1994 年成立,隨后快速發展,但其技術架構在設計之初顯然對未來一無所知,整個系統不過是隨業務快速發展而不斷修修補補搞起來的一團糟糕。
這意味著想把它解耦并抽離出一個公共服務平臺是一個非常困難的問題。
難歸難,這不過是工作量的事情,但關鍵是 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” 的口號,誠如所思。
計算需要交互,為何非要像水和電?(本文首發鈦媒體)
參考資料:
-
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