- 人工智能導論
- 周蘇 張泳主編
- 3631字
- 2020-09-18 17:50:21
第一部分 引言
第1章 緒論
【導讀案例】云計算四十年歷史化蝶成繭
從計算機時代、網絡時代、因特網時代、云計算時代到物聯網時代、大數據時代,如今,人類社會已經大踏步地進入了人工智能時代。在開始學習人工智能知識之初,先來了解一下云計算的發展。
云計算(見圖1-1)領域里最不缺的就是遠見。

圖1-1 云計算
早在大部分人還沒聽說過計算機的1961年,已經有人預料到將來計算會成為公共服務,然而直到2006年AWS(亞馬遜公司旗下的云計算服務平臺)發布S3和EC2,才算真正拉開云計算的大幕,其間四十多年風風雨雨,為什么最后做成的是亞馬遜呢?
AWS面向用戶提供包括彈性計算、存儲、數據庫、物聯網在內的一整套云計算服務,幫助企業降低IT投入和維護成本,輕松上云。確實,你甚至很難說亞馬遜做的是不是四十年前所想的那個公共計算。
1.云計算極簡史
1946年,世界上第一臺現代電子計算機ENIAC在賓夕法尼亞大學誕生。早期的計算機昂貴、巨大、稀有且同時只能讓一個人使用(即單用戶)。
1955年,MIT(麻省理工學院)的約翰·麥卡錫(1971年圖靈獎獲得者)提出了通過Time-sharing(分時)技術來滿足多人同時使用一臺計算機的訴求。
1961年,約翰·麥卡錫在MIT的百周年紀念上第一次提出了公共計算服務的概念:如果我設想的那種計算機能夠成真,那么計算或許某天會像電話一樣被組織成公共服務。公共計算服務(Utility Computing)將是一種全新的重要工業的基礎。這里說的計算機便是分時計算機,即同時支持多人同時使用的計算機。
1963年,受麥卡錫的影響,MIT的約瑟夫·利克萊德負責的IP TO(信息處理技術辦公室)啟動了MAC(多址計算)項目,致力于推動分時系統的發展,具體目標包括:
(1)分時系統。
(2)一個使用分時系統的群體。
(3)對用戶的教育。
1964年,大西洋月刊發表了一篇題為《明天的計算機》的文章,細致地分析了公共計算服務與公共電網的異同點,指出了計算像電網那樣成為公共服務需要關注的三個問題:
(1)接口——插上插座就能接入電力,而計算離大眾還太遠。
(2)服務設備——專用設備將電力轉化成人們所需的服務,如電燈、電機等,隨開隨用,而計算還需要復雜的編程才能使用。
(3)產品同質性——電力是同質產品,不管水電、火電還是風電,接上用起來沒有區別,同時電力是單向的,而計算的應用效果卻取決于用戶編程能力,這是一種與電力不同的雙向交互方式。
1965年,在《明天的計算機》的影響下,MAC項目組開始開發Multics操作系統。在這個過程中,通用電器被選為硬件供應商,IBM出局,貝爾實驗室加入到MAC的軟件開發中。
1965年,從MAC中出局的IBM開始研發CP-40/CMS分時操作系統,該系統于1967年發布,是歷史上第一個虛擬機系統。
1969年,貝爾實驗室從MAC項目退出,開始開發UNIX操作系統。
1969年,在利克萊德的推動下,ARP A(國防部高級研究計劃局)研究的計算機網絡ARPANET誕生,其后來發展為因特網。
自此,云計算所依賴的底層技術全部出現了:
● 管理物理計算資源——操作系統。
● 把資源分給多人同時使用——虛擬化技術。
● 遠程接入——因特網。
技術的成熟需要時間,商業卻不能等待,從計算機被發明以來,人們對計算的需求便沒有停止過。面對公共服務的遠夢,企業家們退而求其次,大型機、小型機、x86服務器,計算只能暫時被裝到盒子里分發。
計算機商業一片繁榮,但效用計算(Utility Computing)卻進入了休眠期。效用計算是指一種提供服務的模型,在這個模型里,服務提供商提供客戶需要的計算資源和基礎設施管理,并根據應用所占用的資源情況進行計費,而不是僅僅按照速率進行收費。
20世紀90年代,“效用計算”概念又一次復蘇,這次直接仿照電網起名叫網格計算(Grid Computing),其目標是把大量機器整合成一個虛擬的超級機器,給分布在世界各地的人們使用,總之還是關乎公共計算服務。
1996年,康柏公司的一群技術主管在討論計算業務的發展時首次使用了云計算(Cloud Computing)這個詞,他們認為商業計算會向云計算轉移。
1997年,美國教授拉姆納特·切拉帕對“云計算”這個詞做出了定義:“計算邊界由經濟而并非完全由技術決定的計算模式”。
接下來是一波小浪潮。
1997年,InsynQ基于HP的設備上線了按需使用的應用和桌面服務。
1998年,HP成立公共計算部門。
2000年,Sun發布Sun cloud。
2001年,HP發布公共數據中心產品。
2002年,亞馬遜上線AWS(Amazon.com Web Service),本意是把自己的商品目錄以SOAP接口的方式開放給開發者。
2002年,IBM在自己的E-business(電子商務)基礎上,綜合網絡服務、開放標準、網格計算,進一步提出E-business on-demand(按需電子商務)的概念。
2006年,AWS發布S3(Simple Storage Service,簡單的存儲服務)和EC2(Elastic Compute Cloud,彈性計算云),從此便拉開了云計算真正的大幕,AWS也一騎絕塵,成為云計算市場的領導者。然而有意思的是,這個時候的AWS還沒有提過云計算,不過云計算這個詞卻隨著EC2的發布迅速崛起,很快大家不再提網格計算和效用計算了。
2.AWS的崛起
歷史未必能重演,但回看歷史總能得到一些有益的啟發,拋開那些繁雜的概念,我們不妨看看AWS到底是如何做出S3和EC2的。
時間回到2000年,當時亞馬遜正在開發電商服務平臺Merchant.com,旨在幫助第三方公司在亞馬遜上構建自己的在線購物網站。
不過這個項目進展并沒有想象的順利。
亞馬遜1994年成立,隨后快速發展,但其技術架構在設計之初顯然對未來一無所知,整個系統不過是隨業務快速發展而不斷修修補補起來的。這意味著想把它解耦并抽離出一個公共服務平臺是一個非常困難的問題。
難歸難,這不過是工作量的事情,但關鍵是亞馬遜的管理層敏銳地意識到了技術問題在制約公司的發展。于是整個公司的系統開始做服務化重構,把原來交織在一起的代碼解耦成獨立、設計良好并清晰描述的API服務,不論內部還是外部應用,大家都按照API的方式進行開發——也就是說大概從2000年開始,亞馬遜已經悄然變成了服務化公司。
API化提高了系統復用性和靈活性,對多變的因特網業務來講,這種特性顯然尤其珍貴。
隨著公司業務發展,工程師的數量越來越多,亞馬遜卻發現雖然人數增加了,自己開發應用的速度似乎并沒有加快?;蛟S很容易用《人月神話》一書來回答這個問題,但亞馬遜并沒有滿足于追求一個解釋,他們想要的是解決方案。
AWS的Andy Jassy發現了一個活生生的例子:這是一個本來大家都以為三個月就會上線的項目,結果三個月過去了,項目組卻僅僅完成了服務器、數據庫和存儲部分的開發——進一步調查,公司里大多數項目都是如此。顯然,公司有太多的時間被浪費在了重復造輪子上。
2003年,Jassy在貝佐斯的家里召開了一次管理層會議,會上大家決定要把應用開發的通用部分抽離出來,做一個公共基礎設施服務平臺,不僅亞馬遜,甚至其他開發者也可以基于這個平臺開發自己的應用。
到這里他們才第一次意識到這可能是改變歷史的東西。
隨后他們整理了一系列可以成為公共服務的候選模塊,并從中挑了服務器、存儲和數據庫三個部分開始。不僅僅是因為這三個需求最多,還因為亞馬遜最擅長這部分,畢竟低利潤率商業模式讓它在如何降低數據中心的運營成本上頗有積累。
再后來的故事,大家就都清楚了。
3.概念消失,產品的勝利
人們曾經從工具的角度解釋過為什么大的云廠商目前都是成功的應用開發公司:
公司業務覆蓋越廣,碰到的問題越多,曾經解決的問題越多,在云計算轉型的過程中就越貼近客戶需求,成本越低,總體就越有優勢。
AWS就是個活生生的例子,它能做成的第一個原因就是亞馬遜有這么多業務,這種快速的業務嘗試讓其內部環境像極了因特網創業的過程,所以它從自己需求出發找到的解決方案正是所有因特網業務都需要的銀彈。
其次,AWS僅僅抽離出了公共部分做成了服務,而不是創造了新的東西,開發者還在使用自己熟悉的東西,只不過是在云上。作為對比,看一下谷歌2008年推出的第一個云產品Google App Engine,引用一段維基對它的描述:
有些應用程序托管服務讓用戶安裝、配置幾乎所有?NIX兼容的軟件,而App Engine則要求開發者使用Python或Java語言來編程,而且只能使用一套限定的API。當前的API允許程序在一個BigTable非關系數據庫上存儲和檢索數據、提出HTTP請求、發送E-mail、處理圖像、進行緩存。大多數現存的Web應用程序,若未經修改,均不能直接在App Engine上運行,因為它們需要使用關系數據庫。
Google的技術實力不容置疑,相信App Engine這么設計一定讓它在彈性方面具有巨大優勢,但不知道他們有沒有想過,這種對用戶的“過度關愛”是否真是當時用戶想要的。
最后從外部環境來看,AWS正好趕上了因特網一波創業浪潮。內外幾個因素疊加到一起,最終的結果就是AWS收割了因特網創業潮的紅利,快速崛起。拋開運氣的成分,從這段歷史來看,AWS沒有炒作概念——否則不至于2006年推出S3和EC2的時候都沒提云計算;AWS也沒有鉆研技術——EC2底層的虛擬化技術直接應用了開源的Xen;但AWS卻在做產品——剖析問題,抽象解決方案并最終收斂成了三個產品。
云計算在發展,AWS和Azure等云廠商的熱度在崛起,云計算的概念卻在衰落,抽象的概念被具體的產品所取代,或許這便是成熟的標志。
所以AWS們確實殺死了云計算,云計算從一個漂亮的蝴蝶概念蛻化成了一個繭——云主機與云存儲,只不過這個繭太丑陋了,以至于很多人都說這不過是傳統主機托管的概念封裝。
但AWS在2003年是有遠見和野心的,他們想的是如果大家都基于AWS做開發,或許AWS未來會成為網絡操作系統。
計算需要交互,為何非要像水和電?
文:郭華,2019/04/07,本文首發鈦媒體。