閒話雲計算(一) 雲計算髮展史

說到雲計算曆史,很多人腦海裏第一個彈出的詞就是AWS(Amazon Web Service,亞馬遜推出的雲計算服務)。的確,AWS是目前爲止商業上最成功的雲計算公司,也是業界的一個標杆,以至於很多IT業內人士提起亞馬遜,首先冒出的概念就是這是一家雲計算公司,但卻忘了亞馬遜的老本行是電子商務。在亞馬遜的身後,另外一家巨頭公司雖然在雲計算商業上沒有亞馬遜成功,但卻通過獨特的技術和理念深刻的改變了雲計算產業和技術的格局,這家公司就是谷歌(Google)。

從一開始,亞馬遜和谷歌在雲計算方面就走了兩條不同的路。亞馬遜雲服務於2006年推出,最初提供的服務主要是EC2(雲主機)、S3(對象存儲)、EIP(彈性IP)、RDS(關係數據庫)等純IaaS層面的產品服務。即使後來的產品線愈加豐富,但是主流產品的基石仍然是圍繞EC2,也就是虛擬機,至今EC2仍然是亞馬遜雲計算最賺錢的產品。相比亞馬遜,谷歌的雲計算技術並不落後,某種程度上甚至可以說更加先進,但是他的雲計算商業化之路要落後亞馬遜很多。這和谷歌的理念有很大關係,谷歌的雲計算更多的是作爲內部的基礎設施,爲谷歌的業務部門服務,即使對公衆開放,推廣力度也並不大。這從最早兩年的主要目標客戶是大學和研究機構就可以看出。2018年有一個很著名的事件是谷歌退出了美國國防部的雲計算採購招標項目,理由居然是谷歌秉持的“不做惡”理念,谷歌認爲參與國防項目和公司的價值觀不符,當然可能還有一點是谷歌不差錢,看不上雲計算這點收入。

隨着亞馬遜在雲計算商業上的成功,一大票IT巨頭公司殺入了雲計算市場。微軟於2010年發佈雲服務,並於2013年開始在Azure上支持IaaS服務。IBM於2013年通過收購當時雲計算收入排名第2的Softlayer進入雲計算領域。Oracle稍晚一些,於2015年纔開始推進雲計算戰略。這些巨頭公司的雲計算業務很難說非常成功,因爲雲計算的利潤被亞馬遜壓的很低,並且和他們的傳統業務產生了衝突,並沒有在商業上帶來突破性的進展。亞馬遜的商業成功也帶動了中國的互聯網公司對雲計算的投入,阿里雲、騰訊雲、華爲雲等在中國市場逐漸成長起來,並開始向海外探索。

除了傳統的IT巨頭,中小型的IT公司也把目光投向雲計算這片熱土。這些公司沒有巨頭公司那樣的投入能力,所以希望通過開源社區的方式來集合更多力量,和亞馬遜等巨頭抗衡,CloudStack、OpenStack等項目應運而生。這些項目一開始的目標就是對標亞馬遜,後來又因爲需要去滿足各個參與廠商的需求,偏離了最初始的目標,最後折衷的結果是公有云能力上距離亞馬遜越來越遠,私有云能力上也沒有突出的特色能力。

和亞馬遜相比,谷歌在雲計算方面始終保持一個清高的姿態,並沒有去刻意追求商業上的成功。谷歌在雲計算基礎技術上另闢蹊徑,走上了一條與衆不同的道路。谷歌認爲虛擬機還是太沉重、不利於資源使用效率提升和快速調度,於是自研了一套基於容器的調度管理系統Borg,調度的目標是進程(沒錯就是進程,一個容器本質上還是一個操作系統的進程)。使用進程作爲調度對象,最大的問題是進程可以使用的計算資源無法限制,比如一個進程佔用了太多CPU資源,其它進程就會受到影響。爲了解決這個問題,谷歌開發了Linux Cgroup技術,並推動該技術進入Linux Kernel,這也成爲了後來容器技術的基礎之一。Borg在容器的基礎上,引入了Alloc(Pod)、Service、Label的概念和技術實現,成爲了谷歌內部的雲計算基礎設施。感謝谷歌,於2014開源了Borg,並將其命名爲Kubernetes,從此掀起了波瀾壯闊的容器雲和PaaS時代。Kubernetes在出現初期,雖然背靠谷歌,但是並沒有贏得絕對的優勢,只是後來和Docker結合起來,才逐漸建立起不可動搖的地位。

在Kubernetes出現以前,容器的優勢已經被很多人發現。那個時候雲計算設計人員希望找到一種技術,可以很快地提供應用開發和部署所需的基礎軟件資源,並能提供應用打包能力和服務間調用管理能力。這個技術被命名爲PaaS。基於虛擬機的資源供給方式仍然被認爲效率太低,因爲在部署虛擬機之外還需要額外安裝應用所需的軟件,即使把軟件打到虛擬機鏡像裏,所需要的時間也是分鐘級別,更別提在不通環境間遷移虛擬機鏡像的難度。而容器的輕量級能夠很好的滿足需求,易於打包、遷移和部署。這個時代的PaaS代表技術有CloudFoundry和Mesos。IBM曾經重金投入CloudFoundry打造了Bluemix,EMC也收購了CloudFoundry的創始公司Pivotal。這些投入最後證明都沒有那麼成功,最大的問題是這些系統沒有像Kubernetes那樣,在開源之前,已經在谷歌的數據中心運行並持續優化了超過10年的時間,使得Kubernetes在誕生之初就已經有了很高的起點。

提到PaaS,就不能不提到另外一個開源產品Docker。Docker自2013年發佈開始,就帶動了容器技術的熱度。其實在Docker之前,已經有LXC(Linux Container),但是LXC更多地是側重在容器運行環境的資源隔離和限制(類似於一個進程沙箱),而沒有涉及容器鏡像打包技術,這使得LXC並沒有得到普及。Docker在LXC的基礎上更進一步,規範並建設了一套鏡像打包和運行機制,將應用程序和其所依賴的文件打包到同一個鏡像文件中,從而使其在轉移到任何運行Docker的機器中時都可以運行,並能保證在任何機器中該應用程序執行的環境都是一樣的。Docker所提出的“Build, Ship and Run”的概念迅速得到了認可,Docker也逐漸成爲容器技術的領導者,甚至讓很多人誤認爲容器就是Docker。隨着Kubernetes的成熟,以及和Docker的融合,PaaS技術的主流路線逐漸過渡到Kubernetes+Docker,並於2018年左右開始佔據統治地位。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章