云計算從 aws 初創(chuàng)時的牛刀小試到如今巨大的行業(yè)和生態(tài),從新鮮詞匯變?yōu)榱餍姓Z,它的十年發(fā)展經(jīng)歷了哪些階段?每個階段分別創(chuàng)造和發(fā)展了什么?未來云計算又將朝著哪些方向繼續(xù)前行?此文系 qcon 十周年特別策劃《技術(shù)十年》系列文章,旨在通過回顧技術(shù)發(fā)展總結(jié)最佳實(shí)踐、為開發(fā)者啟發(fā)技術(shù)新思路。本文篇幅較長,建議您可以先收藏,再細(xì)細(xì)品讀。
來源寫在前面
科學(xué)技術(shù)的革新始終在推動時代巨輪轟鳴向前。云計算,已經(jīng)走過十余年的風(fēng)雨歷程,從 aws 初創(chuàng)立時的牛刀小試,到如今成長為一個巨大的行業(yè)和生態(tài),堪稱是新世紀(jì)以來最偉大的技術(shù)進(jìn)步之一。“云計算”這個術(shù)語,也早已從一個新鮮詞匯,成為了婦孺皆知的流行語。十年荏苒,風(fēng)云變幻,值此 infoq 中國籌劃發(fā)表十周年系列回顧文章之際,我們正可憶昔撫今,回顧和感受云計算領(lǐng)域的發(fā)展與變革。
任何事物的誕生和發(fā)展一定有其前提條件和土壤,云計算亦是如此。記得在世紀(jì)初的大學(xué)課堂上,教授們頗為推崇網(wǎng)格計算理論,該理論事實(shí)上已經(jīng)充分體現(xiàn)了計算資源分布式協(xié)作和統(tǒng)一管理的先進(jìn)思想??上ЬW(wǎng)格計算過于學(xué)術(shù)化,最終是更接地氣也更宏大的云計算橫空出世,震動了整個 it 業(yè)界。
那么,云計算誕生及蓬勃發(fā)展的原因是什么呢?在筆者看來,主要有三大因素,分別是相關(guān)軟硬件技術(shù)的成熟、巨大的社會價值和偉大的商業(yè)模式。
所謂 軟硬件技術(shù)的成熟,指的是在技術(shù)和工程層面,構(gòu)建云計算平臺的條件開始陸續(xù)具備,主要包括超大規(guī)模數(shù)據(jù)中心建設(shè)、高速互聯(lián)網(wǎng)絡(luò),以及計算資源虛擬化 (hypervisor) 和軟件定義網(wǎng)絡(luò) (sdn) 技術(shù)的不斷發(fā)展和成熟——這些基礎(chǔ)能力構(gòu)成了云計算發(fā)展的技術(shù)前提;
所謂 巨大的社會價值,指的是從用戶角度出發(fā),云計算的采用使任意組織和個人得以站在巨人的肩膀上開展業(yè)務(wù),避免重復(fù)造輪,極大提高了軟件與服務(wù)構(gòu)建各環(huán)節(jié)效率,加速了各類應(yīng)用的架構(gòu)和落地,而云端按需啟用和隨意擴(kuò)展的資源彈性,也能夠?yàn)槠髽I(yè)節(jié)省巨大成本;
所謂 偉大的商業(yè)模式,指的是云計算的產(chǎn)品和服務(wù)形態(tài)非常適合新時代的 b 端需要,訂閱制和 pay-as-you-go 的計費(fèi)方式大幅降低了客戶的進(jìn)入門檻,而技術(shù)基礎(chǔ)設(shè)施架構(gòu)方面的穩(wěn)定性需要又帶來了較高的客戶粘性,再加上多租戶高密度數(shù)據(jù)中心所能帶來的規(guī)模效應(yīng),這些因素使得云計算能夠成為一門好的生意,對應(yīng)著一個極佳的 b 端商業(yè)模式。
這三者缺一不可,共同促成了云計算的興起與繁榮,也吸引了不計其數(shù)的業(yè)界精英投入其中,是為云計算取之不竭的源動力。
當(dāng)然,同任何新生事物一樣,云計算行業(yè)的發(fā)展也并非一帆風(fēng)順。從早期被指責(zé)為“新瓶裝舊酒” 的概念炒作,到對云上數(shù)據(jù)隱私問題的擔(dān)憂,再到對各類公有云線上偶發(fā)事故的譏諷和嘲笑,云計算的成長亦伴隨著各種挑戰(zhàn)和質(zhì)疑。其中部分負(fù)面反饋實(shí)質(zhì)上還是由于使用不當(dāng)或偏離最佳實(shí)踐造成,也讓云計算背負(fù)了不少 “冤屈” 和罵名。所幸瑕不掩瑜,云計算的先進(jìn)性終究讓發(fā)展的主旋律蓋過了干擾與雜音,配合其本身持續(xù)的改進(jìn),越來越多地得到客戶的認(rèn)可,市場規(guī)模也不斷擴(kuò)大。
本文會試圖從普通開發(fā)者及實(shí)踐者的視角來回顧云計算的偉大歷程。因篇幅所限,所討論的范疇將聚焦于公有云,以 iaas 和 paas 層面的技術(shù)演進(jìn)為主。
01
萌芽時代
2008 – 2011
事實(shí)上,云計算行業(yè)的開端較難精準(zhǔn)定義。一般認(rèn)為,亞馬遜 aws 在 2006 年公開發(fā)布 s3 存儲服務(wù)、sqs 消息隊(duì)列及 ec2 虛擬機(jī)服務(wù),正式宣告了現(xiàn)代云計算的到來。而如果從行業(yè)視角來看,我們也不妨視 2008 年為另一個意義上的云計算元年。
因?yàn)樵谶@一年,當(dāng) aws 證明了云是可行業(yè)務(wù)之后,越來越多的行業(yè)巨頭和玩家注意到這塊市場并開始入局:微軟在 pdc2008 上宣布 windows azure 的技術(shù)社區(qū)預(yù)覽版,正式開始微軟眾多技術(shù)與服務(wù)托管化和線上化的嘗試;google 恰好也在 2008 年推出了 google app engine 預(yù)覽版本,通過專有 web 框架允許開發(fā)者開發(fā) web 應(yīng)用并部署在 google 的基礎(chǔ)設(shè)施之上,這是一種更偏向 paas 層面的云計算進(jìn)入方式;而眾所周知,國內(nèi)的云計算標(biāo)桿阿里云也是從 2008 年開始籌辦和起步——可見是從 2008 年起,云計算的時代大幕逐步拉開,開始形成一個真正的多元化市場,并隨著眾多巨頭的加入開始良性競爭。
在云計算興起之前,對于大多數(shù)企業(yè)而言,硬件的自行采購和 idc 機(jī)房租用是主流的 it 基礎(chǔ)設(shè)施構(gòu)建方式。除了服務(wù)器本身,機(jī)柜、帶寬、交換機(jī)、網(wǎng)絡(luò)配置、軟件安裝、虛擬化等底層諸多事項(xiàng)總體上需要相當(dāng)專業(yè)的人士來負(fù)責(zé),作調(diào)整時的反應(yīng)周期也比較長——相信許多研發(fā)負(fù)責(zé)人都有過等待服務(wù)器到位的經(jīng)歷。云的到來,突然給出了另一種高效許多的方式:只需輕點(diǎn)指尖或通過腳本即可讓需求方自助搭建應(yīng)用所需的軟硬件環(huán)境,并且根據(jù)業(yè)務(wù)變化可隨時按需擴(kuò)展和按量計費(fèi),再加上云上許多開箱即用的組件級服務(wù),這對許多企業(yè)來說有著莫大的吸引力。netflix 就是早期云計算的擁抱者和受益者,該公司在 2010 年成功地全面遷移到 aws,堪稱是云計算史上最著名的案例之一。
技術(shù)產(chǎn)品上看,早期的云上產(chǎn)品組合雖然還比較單薄,也存在一些限制,但計算和存儲分離的核心理念已經(jīng)得到初步確立,并深刻影響了基于云上應(yīng)用程序的架構(gòu)模式。
具體來說,該理念一方面體現(xiàn)在云廠商紛紛將存儲服務(wù)開辟為獨(dú)立的產(chǎn)品類別,通過如 aws s3、azure storage、阿里云 oss 等服務(wù)清晰剝離了二進(jìn)制對象與文件的負(fù)載與管理,并且提供了豐富的接口和 api 以供應(yīng)用程序進(jìn)行集成;另一方面,在虛擬機(jī)層面基于網(wǎng)絡(luò)存儲的托管磁盤服務(wù)也得到了大力發(fā)展和推廣,如 aws 的 ebs、azure 的 page blob(后封裝為 managed disk)以及阿里云的塊存儲(云盤),此類托管磁盤既很好地保障了數(shù)據(jù)可靠性,又提供了豐富的容量和性能級別選擇,使得云上虛擬機(jī)的計算和存儲充分解耦,在這兩方面都能夠獨(dú)立擴(kuò)展和調(diào)節(jié)。
在云計算的萌芽時期,另一個有趣現(xiàn)象是當(dāng)時“云計算”和“大數(shù)據(jù)”糾纏不清的關(guān)系。可能是由于發(fā)展歷程上幾乎同期興起,以及在大規(guī)模數(shù)據(jù)存儲與計算上的確存在能力交集,兩者的概念和定義一度容易互相混淆。早年筆者曾購買過一本很不錯的 hadoop 技術(shù)書籍,其副標(biāo)題卻是“開啟通向云計算的捷徑”,可見早期云計算的定義曾有較為模糊的階段。當(dāng)然,隨著后續(xù)的時代發(fā)展,這樣的歧義越來越少見了,云計算已多特指提供各類云端服務(wù)與組件的軟硬一體化技術(shù)資源平臺,是一個帶有明確商業(yè)模式的綜合性載體,而大數(shù)據(jù)則是技術(shù)上處理大體量數(shù)據(jù)的方法論和實(shí)現(xiàn),主要是一種技術(shù)體系——所以兩者各自獨(dú)立又可互相依存,比如各云計算廠商都陸續(xù)推出了云上大數(shù)據(jù)分析服務(wù),如 aws 的 emr、azure 的 hdinsight、阿里云的 e-mapreduce,本質(zhì)上正是開源大數(shù)據(jù)技術(shù)在云上的實(shí)現(xiàn)和適配。
02
探索時代
2011 – 2014
當(dāng)云計算玩家們紛紛入場并確認(rèn)大舉投入的戰(zhàn)略后,行業(yè)進(jìn)入了精彩的探索時代。這一時期的各朵云在產(chǎn)品技術(shù)層面進(jìn)行了許多有益嘗試,雖然免不了在個別方向上走些彎路乃至經(jīng)受挫折,但總體而言云端服務(wù)的能力與質(zhì)量取得了相當(dāng)大的進(jìn)步和提升,也為云計算贏得了越來越多的關(guān)注和喝彩。
首先,iaas 層面繼續(xù)圍繞虛擬機(jī)為核心得到穩(wěn)扎穩(wěn)打的推進(jìn)和增強(qiáng)。更強(qiáng)更新的 cpu 帶來了云上虛擬機(jī)計算能力的提升和換代自不必說,早期機(jī)型內(nèi)存相對偏小的問題也隨著新機(jī)型的推出逐步得到解決,新上云端的 ssd 磁盤更是讓機(jī)器性能如虎添翼。廠商們不約而同地形成了通用型、計算型、內(nèi)存型等多個虛擬機(jī)系列,通過將不同 cpu與 iaas 的高歌猛進(jìn)相比,paas 的發(fā)展在這一時期則顯得多少有些落寞,尤其是從希望從頂層應(yīng)用框架入手來推廣云的方式一直不溫不火,沒有得到太多的關(guān)注。例如前面我們提到的 google app engine,經(jīng)過幾年發(fā)展后技術(shù)上其實(shí)頗為扎實(shí),除 python 外也添加了 javapaas 中的另一重要分支——泛數(shù)據(jù)庫類服務(wù)(亦稱 dbaas)則得到了快速的發(fā)展。由于數(shù)據(jù)庫服務(wù)較為標(biāo)準(zhǔn)化,又是應(yīng)用程序中不可或缺的重要組成,因此很快得到了廣泛支持和采用。這里的典型代表有 amazon rds、阿里云 rds、azure sql databases 和 azure database for mysql03
發(fā)展時代
2014 – 2018
當(dāng)整個云計算行業(yè)一定程度走過蹣跚探索時期之后,開創(chuàng)者們積累了越來越多的經(jīng)驗(yàn),對市場反饋和客戶需求有了更清晰的了解與洞察,業(yè)務(wù)模式與商業(yè)運(yùn)營也駕輕就熟起來——云計算行業(yè)終于進(jìn)入高速發(fā)展時代。在這一時期,不論是總體市場規(guī)模,還是云計算的產(chǎn)品與服務(wù),都得到了極大的增長和豐富。
首先,iaas 方面的繼續(xù)進(jìn)步體現(xiàn)在服務(wù)的特異性和多樣性上,不斷推出細(xì)分領(lǐng)域和特定場景下適用的虛擬機(jī)實(shí)例:如基于物理隔離的專屬實(shí)例、可運(yùn)行 sap hana 等大型負(fù)載的超高配實(shí)例、采用 cpu 積分制的性能突增實(shí)例、適用于機(jī)器學(xué)習(xí)與 ai 的