Docker進(jìn)入主流,PaaS大有可為
原創(chuàng)【2014年6月10日 51CTO專稿】今天云計(jì)算界有兩件大事,都跟輕量級(jí)虛擬機(jī)Docker相關(guān),一個(gè)是Docker經(jīng)過(guò)漫長(zhǎng)的更新和改進(jìn)之后,終于發(fā)布了1.0版,雖然在這之前已經(jīng)有很多云計(jì)算廠商將它用到生產(chǎn)環(huán)境;另一個(gè)是谷歌宣布擁抱Docker,GAE與GCE早已就Docker秘密研發(fā)多時(shí),很快就將有重大發(fā)布,連線將其稱為“云計(jì)算的下一件大事”。
筆者認(rèn)為,這意味著Docker技術(shù)將取代傳統(tǒng)的PaaS容器技術(shù),正式進(jìn)入主流,Docker也將大幅拓寬PaaS的應(yīng)用范圍,隱隱有取代IaaS之勢(shì)。
事實(shí)上,在Docker的支持上, 國(guó)內(nèi)的云計(jì)算廠商并不落于人后,早在Docker發(fā)展處于早期的時(shí)候,百度BAE團(tuán)隊(duì)就研究了Docker技術(shù),并在BAE3.0正式采用并推出了商用版,UCloud等也對(duì)Docker進(jìn)行了支持。
為什么Docker如此受歡迎?
這要從PaaS說(shuō)起。自從云計(jì)算被劃分為IaaS、PaaS、SaaS開(kāi)始,PaaS就陷入一個(gè)尷尬的境地,它既不如IaaS那樣靈活而自由,又不如SaaS那樣可以直接推向消費(fèi)者。有人說(shuō)PaaS是未來(lái)的云計(jì)算,但是近幾年IaaS和SaaS各自發(fā)展,反而是PaaS幾乎裹足不前,雖然各種應(yīng)用引擎層出不窮,但是沒(méi)有什么人專門為PaaS開(kāi)發(fā)應(yīng)用。這又是為什么呢?
這要?dú)w罪于傳統(tǒng)的PaaS容器,傳統(tǒng)的Container技術(shù)存在安全性問(wèn)題,并不能對(duì)應(yīng)用程序和系統(tǒng)、以及應(yīng)用程序之間進(jìn)行很好的隔離。一些應(yīng)用引擎為了解決這個(gè)問(wèn)題,于是禁用了語(yǔ)言環(huán)境的很多功能,比如SAE就禁用了PHP中的exec等函數(shù),而用SAE獨(dú)自的函數(shù)來(lái)代替。
這樣就帶來(lái)了問(wèn)題,即在其他環(huán)境中開(kāi)發(fā)的應(yīng)用無(wú)法無(wú)痛的移植到這些PaaS平臺(tái)中,即使是為了PaaS重新開(kāi)發(fā)一個(gè)應(yīng)用,也無(wú)法利用別人開(kāi)發(fā)好的類庫(kù),這種自廢武功的行為使得PaaS成為雞肋。同時(shí),傳統(tǒng)PaaS容器還有性能問(wèn)題,創(chuàng)建和銷毀一個(gè)容器都需要很多的時(shí)間和資源。
為了解決這些問(wèn)題,2013年3月PaaS廠商dotCloud發(fā)布了Docker.io,一個(gè)開(kāi)源的全新linux輕量級(jí)虛擬機(jī)技術(shù)。它采用虛擬機(jī)技術(shù)來(lái)對(duì)資源進(jìn)行隔離,顯著提升了性能,并且大大改進(jìn)了部署應(yīng)用的便捷性。其中最重要的就是,它不再限制語(yǔ)言的功能了。
從BAE3.0的體驗(yàn)來(lái)看,Docker技術(shù)的確名不虛傳,它采用了一種新的計(jì)價(jià)方式——執(zhí)行單元,而非CPU時(shí)間、發(fā)起連接數(shù)等,這也是因?yàn)樘摂M機(jī)技術(shù)帶來(lái)的資源隔離,保證了自己的資源不被其他人所占用。
PaaS的未來(lái)
在傳統(tǒng)的容器條件下,雖然PaaS受到種種掣肘,但也是有應(yīng)用場(chǎng)景的。著名技術(shù)博主,曾主持淘寶聚石塔項(xiàng)目改版的陳皓對(duì)PaaS有自己的看法。他認(rèn)為,PaaS需與具體業(yè)務(wù)相結(jié)合,為打造行業(yè)應(yīng)用服務(wù)。如聚石塔就是專為淘寶商家ERP服務(wù)的PaaS平臺(tái),商家可以在這個(gè)平臺(tái)上開(kāi)發(fā)和部署私有的ERP系統(tǒng)。其他的一些開(kāi)發(fā)工具和框架也紛紛研發(fā)PaaS平臺(tái)服務(wù),為使用該工具的應(yīng)用提供托管,如國(guó)內(nèi)的Hybrid App開(kāi)發(fā)平臺(tái)AppCan,以及跨平臺(tái)開(kāi)發(fā)框架Qt。
而現(xiàn)在有了Docker的加持,PaaS將有更大的發(fā)揮空間,其中一個(gè)就是在云計(jì)算的基礎(chǔ)領(lǐng)域取代IaaS。目前的IaaS只是取代了傳統(tǒng)的服務(wù)器,其環(huán)境和應(yīng)用的部署與傳統(tǒng)相比差異很小,只是在運(yùn)維上有很大的改變。PaaS這種開(kāi)關(guān)式的環(huán)境搭建顯然比IaaS要方便很多,符合技術(shù)發(fā)展的趨勢(shì)。如果只是為部署一般應(yīng)用,PaaS足矣,但是IaaS大行其道的原因就是,每個(gè)公司都有不同的需求,而有些獨(dú)特的需求在模板化的運(yùn)行環(huán)境中無(wú)法支撐。比如目前的BAE3.0的單個(gè)執(zhí)行單元無(wú)法支撐混合語(yǔ)言環(huán)境,單個(gè)執(zhí)行單元的資源有上限等等。
不過(guò)這些問(wèn)題并不是不能解決的,用PaaS+Web API/IaaS的架構(gòu),將超出模板外的需求用Web API來(lái)實(shí)現(xiàn),如果對(duì)資源有需求則用單獨(dú)的IaaS來(lái)實(shí)現(xiàn),可以覆蓋多數(shù)需求。
因此,IaaS并不會(huì)消失,只是它的一部分使用場(chǎng)景被PaaS所占據(jù)而已。
曾有人將云計(jì)算比作水和電,我們不需要知道它們是從哪兒來(lái)的,只要一擰開(kāi)關(guān),水和電就有了。顯然,PaaS符合這樣的設(shè)想。雖然在以前可能不能實(shí)現(xiàn),但是我們相信,在有了Docker之后,PaaS將在云計(jì)算家族里占據(jù)更重要的地位。