請允許我做個大膽的預(yù)測:容器技術(shù)將統(tǒng)治世界
請允許我先做一個大膽的預(yù)測:容器將統(tǒng)治世界。本文不討論容器技術(shù)細(xì)節(jié),而是從更高的格局:容器對互聯(lián)網(wǎng)的變革,它的經(jīng)濟成本和效益上娓娓道來。
讓我們先從集裝箱說起,最近剛讀了一本書,《集裝箱改變世界》,里面洋洋灑灑20萬字講了一個20世紀(jì)全球運輸業(yè)和世界經(jīng)濟被集裝箱徹底顛覆的故事。
在香港、上海、深圳或者荷蘭的鹿特丹貨運港口,??吭诖a頭的巨大的集裝箱船和岸邊堆場里疊起來的數(shù)萬個金屬集裝箱;旁邊數(shù)十米高的大型起重機臂不停地吊起這些幾十噸的集裝箱,在幾分鐘內(nèi)安放到集裝箱船上;幾小時后巨輪拔錨啟航,上面承載了數(shù)千個集裝箱。如果你曾見識過此情此景,一定會贊嘆現(xiàn)代航運的高效率和大容量,以及依托它而建立的廣泛的全球貿(mào)易。
上世紀(jì)60年代以前,集裝箱運輸還未被認(rèn)可,幾乎所有的貨物都是以散件方式運輸。
以“勇士號”為例,在一次從布魯克林到不來梅的運輸中,貨物裝卸都是由普通的碼頭工人來完成的,它裝載了5015英噸的貨物,主要是食品、日用品、郵件、機器和車輛的零部件以及53輛車。這批貨物的數(shù)量達到了驚人的194582件,而且大小和種類各不相同。
所有的貨物都是碼頭工人一件一件放到貨盤上,再把貨盤降到船艙中一件一件搬下來堆好。他們裝完這艘船總共用了6天時間,其中還有一天是因為罷工而浪費掉了。橫跨大西洋的航行用了10天半的時間;在不來梅港,碼頭工人是晝夜不停地干活兒,他們卸船用了4天時間。總而言之,這次航行有一半時間都花在碼頭上。這船貨物中的***一批到達其最終目的地的時間,是”勇士號“??坎粊砻犯壑蟮牡?3天,是它從紐約港起航后的第44天,是其中最早起運歐洲的貨物從美國的來源地上路后的第95天。95天?。?!重要的事說3遍。
運送這批貨物的總成本達到了237577美元,還沒有算上”勇士號“返回紐約的成本以及運輸過程中暫時存放貨物的支出。在這個總額當(dāng)中,海上航行本身的支出僅占11.5%,而在航行起點和終點的兩個碼頭上,貨物處理的費用占到了總支出的36.8%。這比輪船公司的主管常常說的50%要低,但是,這僅僅是因為德國的“經(jīng)濟奇跡”還沒有把碼頭工人的工資推上去。研究者注意到,如果不是因為德國碼頭工人的工資比美國的碼頭工人低1/5,港口成本肯定還會高出很多。研究者***得出的結(jié)論是,要降低總的運輸成本,***的辦法是降低在美國各港口接收、儲運、裝載離崗貨物的成本。他們還進一步提出忠告說,政府和企業(yè)應(yīng)該提高碼頭工人的勞動生產(chǎn)率,消除低效率的工作慣例,盡早徹底地反思整個流程。他們在研究報告中寫道:“或許,補救的方法就在于找到可以避免散件處理的包裝、搬運和裝載貨物的方法。”
為什么非要裝載、卸載、轉(zhuǎn)移和再裝載那么多的散件貨物?為什么不把貨物裝進大箱子里,然后就只裝卸和搬運這些箱子?
運輸業(yè)大量采用集裝箱后,由咖啡制造商發(fā)出的一只35噸的集裝箱,可以在馬來西亞離開工廠,裝上一艘貨輪,經(jīng)過16天的航行到達9000營里之外的洛杉磯。一天之后,這個集裝箱被一列火車運到芝加哥,并被隨機轉(zhuǎn)移到了一輛開往辛辛那提的卡車上。從離開馬來西亞的工廠到抵達俄亥俄州的倉庫,這次11000營里的行程可能只需要花費22天的時間,其速度是每天500英里,而費用比一張單程的頭等艙機票還低。另外,在這一路上,很可能沒有人碰過集裝箱里的東西,甚至根本沒有人打開過它。同傳統(tǒng)的貨輪相比,集裝箱船的裝卸只需要大約1/6的時間和1/3的勞動力。
集裝箱***的成功在于其產(chǎn)品的標(biāo)準(zhǔn)化以及由此建立的一整套運輸體系。無論貨物的體積、形狀差異有多大,最終都被裝載進集裝箱里。由于要實現(xiàn)標(biāo)準(zhǔn)尺寸集裝箱的運輸,堆場、碼頭、起吊、船舶、汽車乃至公路橋梁、隧道等,都必須適應(yīng)它在全球范圍內(nèi)的應(yīng)用而逐漸加以標(biāo)準(zhǔn)化,形成影響國際貿(mào)易的全球物流系統(tǒng)。由此帶來的是系統(tǒng)效率大幅度提升,運輸費大幅度下降,地球上任何一個地方生產(chǎn)的產(chǎn)品都可以快速而低廉地運送到有需求的地方。
兩種貨運方式的對比:
這本書的英文名稱是"The Box:How the shipping container made the world smaller and the world economy bigger"
閱讀此書的過程中,我已經(jīng)聯(lián)想到了現(xiàn)今逐漸流行也備受質(zhì)疑的以Docker為首的容器技術(shù);當(dāng)留意到container一詞出現(xiàn)在書名中時,我已經(jīng)迫不及待地把我的觀點分享給你,幫助你從一個技術(shù)圈從未提及的角度來理解容器技術(shù)。
Docker近兩年成了容器技術(shù)的代言,我們做一個集裝箱與容器的類比:
我開始懷疑,Docker公司的創(chuàng)始人讀過此書或研究過貨運業(yè)的發(fā)展歷史,并從其中汲取了靈感,其公司的Logo即是大鯨魚上拖著集裝箱。Docker的創(chuàng)始人堪稱當(dāng)代互聯(lián)網(wǎng)界的麥克萊恩[見注釋1]。
#p#
容器技術(shù)正在快速改變著公司和用戶創(chuàng)建,發(fā)布,運行分布式應(yīng)用的方式,在未來5年將給云計算行業(yè)帶來它應(yīng)有的價值,其誘人之處包括:
資源獨立、隔離
資源隔離是云計算平臺的最基本需求。Docker通過linux namespace, cgroup限制了硬件資源與軟件運行環(huán)境,與宿主機上的其他應(yīng)用實現(xiàn)了隔離,做到了互不影響。不同應(yīng)用或服務(wù)以“集裝箱”(Container)為單位裝“船”或卸“船”,“集裝箱船”(運行container的宿主機或集群 )上,數(shù)千數(shù)萬個“集裝箱”排列整齊,不同公司、不同種類的“貨物”(運行應(yīng)用所需的程序、組件、運行環(huán)境、依賴)保持獨立。
環(huán)境的一致性
開發(fā)工程師完成應(yīng)用開發(fā)后build一個docker image,基于這個image創(chuàng)建的container像是一個集裝箱,里面打包了各種“散件貨物”(運行應(yīng)用所需的程序,組件,運行環(huán)境,依賴)。無論這個集裝箱在哪里:開發(fā)環(huán)境、測試環(huán)境、生產(chǎn)環(huán)境,都可以確保集裝箱里面的“貨物”種類與個數(shù)完全相同,軟件包不會在測試環(huán)境缺失,環(huán)境變量不會在生產(chǎn)環(huán)境忘記配置,開發(fā)環(huán)境與生產(chǎn)環(huán)境不會因為安裝了不同版本的依賴導(dǎo)致應(yīng)用運行異常。這樣的一致性得益于“發(fā)貨”(build docker image)時已經(jīng)密封到”集裝箱“中,而每一個環(huán)節(jié)都是在運輸這個完整的、不需要拆分合并的”集裝箱“。
輕量化
相比傳統(tǒng)的虛擬化技術(shù)(VM),使用Docker在cpu、memory、disk IO、network IO上的性能損耗都有同樣水平甚至更優(yōu)的表現(xiàn)。Container的快速創(chuàng)建、啟動、銷毀受到很多贊譽。
Build Once,Run Everywhere
這個特性著實吸引了我,“貨物”(應(yīng)用)在“汽車”、“火車”、“輪船”(私有云、公有云等服務(wù))之間遷移交換時,只需要遷移符合標(biāo)準(zhǔn)規(guī)格和裝卸方式的“集裝箱”(docker container),削減了耗時費力的人工“裝卸”(上線、下線應(yīng)用),帶來的是巨大的時間人力成本節(jié)約。這使未來僅有少數(shù)幾個運維人員運維超大規(guī)模裝載線上應(yīng)用的容器集群成本可能,如同60年代后少數(shù)幾個機器操作員即可在幾小時內(nèi)連裝帶卸完一艘萬級集裝箱船。
我相信以上4點是容器能夠定義未來應(yīng)用發(fā)布的幾個原力,現(xiàn)在正值原力的覺醒。
我在日常工作中遇到的一個有趣的例子是:我所在的部門有人希望使用或為其他人提供大數(shù)據(jù)技術(shù)棧中的某些軟件服務(wù),如:Elasticsearch(ES), Kibana, Spark, Kafka, Redis, MongoDB。一些人甚至只是想做些簡單的功能驗證,而他們卻要先花一上午甚至一天去依次完成下載軟件本身、修改ulimit、設(shè)置環(huán)境變量、下載JAVA運行環(huán)境、編譯某些組件、安裝其他依賴包、創(chuàng)建目錄、進行若干次容易出錯的配置、經(jīng)歷3次以上程序啟動失敗。可悲的是,下次如果想在其他服務(wù)器上提供類似的服務(wù)仍要重復(fù)前面的經(jīng)歷,更別提把這個任務(wù)交給一個新人負(fù)責(zé)完成需要多長時間。他們就像50年前可憐的碼頭工人一樣,四肢發(fā)達,頭腦簡單,重復(fù)著舊式散貨裝卸模式,抱怨著活多錢少。我們現(xiàn)在正著手用Docker做一個類似Google Cloud Engine一鍵創(chuàng)建服務(wù)(one click)的Setup ELK (ES Logstash Kibana) in One Click。
正如集裝箱對全球運輸業(yè)及經(jīng)濟的變革不應(yīng)僅僅歸因于集裝箱本身而是全社會系統(tǒng)協(xié)同創(chuàng)新一樣,Docker也將是全系統(tǒng)的變革,除了擁有運行容器的基礎(chǔ)技術(shù)工具,還需要構(gòu)建整個生態(tài)系統(tǒng)。如 "Build, Ship, and Run Any App, Anywhere"需要依賴應(yīng)用所有的宿主在基礎(chǔ)架構(gòu)上搭建好docker container的運行環(huán)境才可以;而要實現(xiàn)現(xiàn)在容器行業(yè)大力宣揚的”大規(guī)模應(yīng)用彈性伸縮“,如果沒有大規(guī)模的容器和資源管理方案(如Mesos, Kubernetes)是絕不可能實現(xiàn)的。Docker公司在這方面還是比較有遠(yuǎn)見的,自己開發(fā)或收購了不少產(chǎn)品布局整個生態(tài),如Docker hub、Docker swarm、Docker compose、Tutum。
實際的貨運中,發(fā)貨商只關(guān)注貨物從出發(fā)到到達客戶手中的總運價和時間,他們希望減少總成本和時間,運輸公司負(fù)責(zé)并且能夠處理好公路鐵路航海運輸中的一切細(xì)節(jié)。沒有發(fā)貨人會去關(guān)注運輸?shù)穆肪€、順序以及集裝箱輪船??吭谀膫€港口。目前提供容器服務(wù)的產(chǎn)品還遠(yuǎn)未達到真正幫助應(yīng)用發(fā)布者節(jié)省時間和成本的目的,享受容器優(yōu)勢的同時,應(yīng)用發(fā)布者總是不得不親自處理各種細(xì)節(jié)甚至親自實現(xiàn)其中缺失的功能,開發(fā)者在Docker及周邊產(chǎn)品的源碼中發(fā)現(xiàn)了很多坑,由此導(dǎo)致的額外成本埋沒了容器服務(wù)潛在的巨大價值。隨著容器技術(shù)及其生態(tài)系統(tǒng)的發(fā)展,相信以上問題會逐漸得到改善,Docker版本的迭代速度一直很快。
我們在這里預(yù)測一下容器技術(shù)接下來的發(fā)展(容器技術(shù)本身及生態(tài)系統(tǒng)的發(fā)展):
容器是一項偉大的變革,但它還不能在短時間內(nèi)產(chǎn)生巨大效益
我們中國人何不盡早加入容器行列,與美國佬一起完善的容器生態(tài)系統(tǒng)呢,還那么鐘愛Copy to China?
- 自動化
隨著云計算和容器的普及,互聯(lián)網(wǎng)行業(yè)自動化程度將進一步提高,運維人員由勞動密集型逐漸轉(zhuǎn)向技術(shù)知識密集型。
- 容器技術(shù)標(biāo)準(zhǔn)
容器相關(guān)的技術(shù)標(biāo)準(zhǔn)的誕生將促進整個大系統(tǒng)的各方更好的協(xié)調(diào)和兼容。
- 云計算平臺的支持
現(xiàn)有云計算平臺要么盡快支持容器技術(shù),要么被新的支持容器的云計算平臺超越。中國香港、上海、深圳、青島、天津在上世紀(jì)60~80年代抓住了集裝箱發(fā)展的機遇,成為全球供應(yīng)鏈上的主要樞紐港,2014年仍處在全球10個***吞吐量集裝箱港之列。
- 使用容器的習(xí)慣逐漸形成
培養(yǎng)應(yīng)用發(fā)布者使用容器發(fā)布應(yīng)用的習(xí)慣是非技術(shù)問題,也需要時間去沉淀。全球運輸業(yè)花了近15年培養(yǎng)出了發(fā)貨商使用集裝箱的習(xí)慣,在互聯(lián)網(wǎng)行業(yè)不需要這么慢。
- 行業(yè)規(guī)模
Mesos, Kubernetes等容器管理方案將助力 “巴拿馬級”,“馬六***”[見注釋2]的容器“輪船”。Mesos, Kubernetes等成熟通用的集群管理方案將為你做好大規(guī)模分布式容器的啟停、調(diào)度、編排、高可用。與現(xiàn)有的大部分互聯(lián)網(wǎng)服務(wù)類似,容器依賴于規(guī)模,云計算平臺服務(wù)的客戶越多,運行的容器規(guī)模越大,構(gòu)建整套容器運行體系的固定成本就被分?jǐn)偟迷奖。蛻羰褂迷朴嬎惴?wù)的資費就能降下來。
- 應(yīng)用在云計算平臺間的無縫遷移
未來的應(yīng)用在不同的云計算平臺(支持容器)間遷移成本更低。如同集裝箱在汽車、火車、集裝箱船之間的無縫遷移。
在未來世界,云計算不止是互聯(lián)網(wǎng)的公共基礎(chǔ)服務(wù),也是被互聯(lián)網(wǎng)滲透的所有行業(yè)的公共基礎(chǔ)服務(wù),公有云也好,私有云也罷,幾乎所有的信息服務(wù)都將在云上。從集裝箱誕生到運輸業(yè)廣泛采用集裝箱,大宗貨物運輸成本普遍減少50%以上,耗費了約60年。我相信在互聯(lián)網(wǎng)領(lǐng)域,容器的普及都用不了6年,希望在這個互聯(lián)網(wǎng)基礎(chǔ)服務(wù)里掘金的企業(yè),請跑步入場!
注釋
麥克萊恩是歷史上***個用純集裝箱船運輸裝在集裝箱里的大宗貨物的企業(yè)家,他極大推動了集裝箱運輸方式在運輸業(yè)(公路、鐵路、航海)的發(fā)展和普及。
巴拿馬級,馬六***的輪船指的是巴拿馬運河、馬六甲海峽允許通過的***尺寸的輪船,意指集裝箱船體量大,運載能力強。如《集裝箱改變世界》一書中提到“馬六***集裝箱船的長度將達到1320英尺,寬地達到190英尺,它的運載能力將是18000只標(biāo)準(zhǔn)箱。”
本文作者Gary的影響力就職于新浪研發(fā)中心,博客地址:http://garyelephant.me
- 《集裝箱改變世界》 ISBN: 9787111449966 機械工業(yè)出版社 出版年: 2014-1
- 百度百科“集裝箱”詞條 http://baike.baidu.com/view/50438.htm
- Ranking of Container Ports of the World http://www.mardep.gov.hk/en/pu ... 5.pdf
- The largest container ports worldwide in 2014, based on throughput http://www.statista.com/statis ... wide/
- Competitiveness of the port of Hong Kong http://www.legco.gov.hk/resear ... e.pdf
- Docker官方網(wǎng)站 https://www.docker.com/
- Docker VP Marianna Tessel:下一步容器技術(shù)的熱點 http://dockone.io/article/750
- IBM Research Report:An Updated Performance Comparison of Virtual Machines and Linux Containers http://domino.research.ibm.com ... 1E7B/$File/rc25482.pdf
- 酷殼的Docker基礎(chǔ)技術(shù)系列 http://coolshell.cn/articles/17010.html
- Kubernetes Official Website http://kubernetes.io/
Learn DCOS https://mesosphere.com/