本文作者將分析云PaaS的演變之路(著眼于構(gòu)建并運(yùn)行云端Web應(yīng)用程序這一背景),并分析容器生態(tài)系統(tǒng)問(wèn)世,尤其Docker和Kubernetes問(wèn)世之后,在不遠(yuǎn)的將來(lái)會(huì)出現(xiàn)的影響。在眾多不同的云計(jì)算服務(wù)模式當(dāng)中,平臺(tái)即服務(wù)(PaaS)模式是最引人入勝的模式。云計(jì)算的實(shí)際好處在于,云平臺(tái)提供了運(yùn)營(yíng)靈活性,我們沒(méi)必要為IT基礎(chǔ)設(shè)施而操心,只要專(zhuān)注于構(gòu)建應(yīng)用程序。如果你確實(shí)想要充分發(fā)揮云計(jì)算的真正魅力,又想發(fā)揮云計(jì)算提供的運(yùn)營(yíng)靈活性,就應(yīng)該充分利用PaaS解決方案,而不是建立IaaS實(shí)例:與相應(yīng)的PaaS解決方案相比,基礎(chǔ)設(shè)施即服務(wù)(IaaS)實(shí)例需要大量的人工干預(yù)。
當(dāng)前的PaaS生態(tài)系統(tǒng):Azure、AWS和谷歌云三足鼎立
亞馬遜網(wǎng)絡(luò)服務(wù)(AWS)是第一個(gè)公有云平臺(tái),它最初是從IaaS平臺(tái)起家的。另一方面,Azure起初就是一個(gè)PaaS平臺(tái),微軟簡(jiǎn)化了構(gòu)建應(yīng)用程序并部署到云端的方式。后來(lái),AWS開(kāi)始支持PaaS解決方案,Azure開(kāi)始支持IaaS解決方案。與此同時(shí),谷歌云(Google Cloud)推出了自己的PasS解決方案,旨在簡(jiǎn)化構(gòu)建應(yīng)用程序并部署到云端的方式。
在微軟Azure中,主要的PaaS解決方案是“云服務(wù)” (Cloud Services),云服務(wù)提供了支持Java、Node.js、PHP、Python、.NET和Ruby的功能。云服務(wù)模式提供了兩種模式:Web角色(Web Role)和工作者角色(Worker Role)。Web角色讓你可以運(yùn)行Web應(yīng)用程序,而工作者角色讓你可以運(yùn)行后臺(tái)處理服務(wù)。Azure還提供了Azure網(wǎng)站,該網(wǎng)站也是在云端構(gòu)建 Web應(yīng)用程序的一個(gè)很好的選擇。但云服務(wù)更適合用來(lái)構(gòu)建多層次云應(yīng)用程序。Azure的解決方案其主要缺點(diǎn)在于,它基于Windows操作環(huán)境,這對(duì)非 Windows社區(qū)來(lái)說(shuō)沒(méi)有吸引力。如果想部署非Windows系統(tǒng),你就得使用Azure的IaaS服務(wù)。但是對(duì)在.Net架構(gòu)和Windows上從事開(kāi)發(fā)的開(kāi)發(fā)人員來(lái)說(shuō),Azure是比其他任何云平臺(tái)更勝一籌的選擇。對(duì)于.Net開(kāi)發(fā)人員而言,相比AWS的類(lèi)似解決方案,Azure是個(gè)很好的選擇。我強(qiáng)烈推薦.Net開(kāi)發(fā)者社區(qū)使用Azure。
AWS的PaaS服務(wù)可用于部署和管理Web應(yīng)用程序,名為“彈性Beanstalk” (Elastic Beanstalk)。彈性Beanstalk提供了支持Java、.NET、PHP、Node.js、Python和Ruby的功能。彈性 Beanstalk的一大優(yōu)勢(shì)在于,它與熟悉的服務(wù)器系統(tǒng)如影相隨,比如Apache、Nginx、Passenger和IIS。不像Azure,它隨帶多種操作系統(tǒng)平臺(tái)和服務(wù)器,這會(huì)吸引多個(gè)開(kāi)發(fā)者社區(qū)。在這種背景下,相比Azure,彈性Beanstalk是一種更好的平臺(tái)。但是坦率地說(shuō),從PaaS 的角度來(lái)看,Azure云服務(wù)和Azure網(wǎng)站比彈性Beanstalk更好。如果你在A(yíng)WS彈性Beanstalk和Azure云服務(wù)上都從事過(guò)開(kāi)發(fā),就會(huì)青睞Azure云服務(wù),至少對(duì).Net開(kāi)發(fā)人員來(lái)說(shuō)是這樣。
我發(fā)現(xiàn),許多AWS客戶(hù)使用IaaS服務(wù)主要是為了部署Web應(yīng)用程序,而不是使用AWS彈性Beanstalk。作為一名云解決方案架構(gòu)師,本人構(gòu)建云解決方案的方法是,只要有可能可以充分利用PaaS解決方案,就用它,而不是充分利用IaaS實(shí)例。原因在于,我們可以把更多的注意力放在應(yīng)用程序開(kāi)發(fā)上,而且我們也沒(méi)有必要花時(shí)間在IaaS虛擬機(jī)上進(jìn)行許多設(shè)置。
谷歌云的 PaaS解決方案是“谷歌應(yīng)用引擎”(Google App Engine)。谷歌應(yīng)用引擎(GAE)提供了支持Python、 Java、PHP和Go的功能。它并不支持.Net,這是僅次于Java架構(gòu)的一大企業(yè)技術(shù)架構(gòu)。但我欣賞這個(gè)決定,因?yàn)锳zure是最適合.Net開(kāi)發(fā)人員的解決方案。谷歌應(yīng)用引擎的一個(gè)優(yōu)點(diǎn)就是,它支持Go(Golang),這項(xiàng)新興技術(shù)可用于構(gòu)建下一代應(yīng)用程序。不過(guò)眼下,對(duì)Go的支持不是非常出色。
一般而言,當(dāng)前針對(duì)PaaS采取的做法是,為每一種編程語(yǔ)言和開(kāi)發(fā)平臺(tái)提供單獨(dú)的運(yùn)行時(shí)環(huán)境。如果PaaS平臺(tái)不提供支持你所用語(yǔ)言環(huán)境的功能,就只好使用其IaaS實(shí)例,還需要搭建基礎(chǔ)設(shè)施。
Docker和Kubernetes:革命性的容器生態(tài)系統(tǒng)
應(yīng)用程序容器正在改變廣大開(kāi)發(fā)人員構(gòu)建、交付和運(yùn)行應(yīng)用程序的方式。Docker憑借其功能強(qiáng)大的開(kāi)源平臺(tái),正在徹底改變應(yīng)用程序容器技術(shù)。Docker是一種應(yīng)用程序容器技術(shù)平臺(tái),可用于構(gòu)建、交付和運(yùn)行你的分布式應(yīng)用程序。Docker生態(tài)系統(tǒng)包括Docker引擎(Docker Engine)和Docker中心(Docker Hub);Docker引擎是一種可移植的、輕量級(jí)的運(yùn)行時(shí)和封裝工具,可用于構(gòu)建容器化的應(yīng)用程序;而Docker中心是一種云服務(wù),可用于共享應(yīng)用程序、實(shí)現(xiàn)工作流自動(dòng)化。Docker讓開(kāi)發(fā)人員可以將應(yīng)用程序容器化,而且可以在任何地方運(yùn)行這些應(yīng)用程序。Docker讓你可以連接不同的容器,從而組合容器化的應(yīng)用程序。Docker其實(shí)是一個(gè)強(qiáng)大的生態(tài)系統(tǒng),你可以充分利用Docker中心上可供使用的成千上萬(wàn)的應(yīng)用程序。Docker基于 Linux容器而建。
Docker還在改變我們?yōu)樵贫藰?gòu)建應(yīng)用程序的方式。Docker革命將運(yùn)行中的服務(wù)器應(yīng)用程序由虛擬機(jī)變成了容器。我認(rèn)為,這是分布式應(yīng)用程序開(kāi)發(fā)的演變歷程,當(dāng)前的生態(tài)系統(tǒng)依賴(lài)虛擬機(jī),主要利用IaaS服務(wù)的虛擬機(jī)。Docker給云平臺(tái)帶來(lái)重大影響后,Kubernetes大大有助于管理云端容器。Kubernetes是一項(xiàng)實(shí)施了容器集群管理的開(kāi)源技術(shù),由谷歌開(kāi)發(fā)。它最初是為谷歌計(jì)算引擎(GCE)開(kāi)發(fā)的,用來(lái)管理應(yīng)用程序容器。在谷歌,一切都在Linux容器中封裝及運(yùn)行;而Kubernetes負(fù)責(zé)容器集群管理。即便你在用谷歌應(yīng)用引擎運(yùn)行應(yīng)用程序,它在內(nèi)部還是使用谷歌計(jì)算引擎,一切都在基于Kubernetes的Linux容器上運(yùn)行。現(xiàn)在,谷歌開(kāi)放了Kubernetes的源代碼,那樣其他云平臺(tái)就能利用Kubernetes的強(qiáng)大功能,管理Linux容器(包括Docker容器)。
Docker和Kubernetes都在容器技術(shù)生態(tài)系統(tǒng)產(chǎn)生了重大影響。值得關(guān)注的是,這兩項(xiàng)技術(shù)都是用Go編程語(yǔ)言編寫(xiě)而成的。我在《2015年及以后的Web開(kāi)發(fā)趨勢(shì)》這篇文章中,預(yù)測(cè)Go會(huì)成為2015年的新興編程語(yǔ)言。
[page]面向Docker的AWS彈性Beanstalk
作為AWS的PaaS平臺(tái),彈性Beanstalk開(kāi)始通過(guò)PaaS解決方案支持Docker。這是AWS推出的一個(gè)優(yōu)秀項(xiàng)目,因?yàn)槟憧梢酝ㄟ^(guò)PaaS抽象,處理容器生態(tài)系統(tǒng),你沒(méi)必要為支持云平臺(tái)提供的語(yǔ)言運(yùn)行時(shí)環(huán)境而操心。我們可以在Docker容器里面封裝運(yùn)行時(shí)環(huán)境。這將為云平臺(tái)提供大好機(jī)會(huì),也會(huì)在云平臺(tái)上從事開(kāi)發(fā)的開(kāi)發(fā)人員提供大好機(jī)會(huì)。比如說(shuō),AWS彈性Beanstalk沒(méi)有面向Go語(yǔ)言的語(yǔ)言運(yùn)行時(shí)環(huán)境。但是由于Docker支持彈性 Beanstalk,我們可以在A(yíng)WS彈性Beanstalk中運(yùn)行Go應(yīng)用程序,我可以將Go映像添加到Docker本身提供的Docker容器里面。
谷歌容器引擎:云PaaS領(lǐng)域的下一大革命
在去年發(fā)布Docker 1.0之后,應(yīng)用程序容器這個(gè)技術(shù)術(shù)語(yǔ)備受關(guān)注。但自2007年以來(lái),谷歌就致力于容器方面的研究;谷歌計(jì)算引擎基于容器技術(shù)生態(tài)系統(tǒng)。谷歌表示,他們每個(gè)星期都在全球數(shù)據(jù)中心發(fā)布超過(guò)20億個(gè)的容器實(shí)例。從Gmail到搜索,谷歌里面的一切東西都在Linux容器里面封裝并運(yùn)行。透露一個(gè)秘密,谷歌在用容器技術(shù)擴(kuò)展其基礎(chǔ)設(shè)施,谷歌早已是容器生態(tài)系統(tǒng)的領(lǐng)跑者。
谷歌容器引擎(Google Container Engine)是谷歌云平臺(tái)提供的一項(xiàng)新服務(wù)。谷歌容器引擎是面向Docker容器的全面管理的集群管理器,基于Kubernetes。有了谷歌容器引擎,你就能輕松封裝Docker容器,并迅速在谷歌基礎(chǔ)設(shè)施上運(yùn)行應(yīng)用程序。為容器技術(shù)提供的這項(xiàng)新服務(wù)讓你可以從管理在單個(gè)虛擬機(jī)上運(yùn)行的云應(yīng)用程序,轉(zhuǎn)為啟動(dòng)可移植的Docker容器,這些容器為你調(diào)度到受屋管理的計(jì)算集群里面。谷歌容器引擎是云PaaS的下一大發(fā)展階段。這由單個(gè)虛擬機(jī)上的運(yùn)行中應(yīng)用程序變?yōu)榭梢浦驳娜萜鳎萜鞯募汗芾碓谄渲袑⒂蒏ubernetes等技術(shù)來(lái)執(zhí)行。更令人稱(chēng)道的是,谷歌容器引擎在現(xiàn)有的PaaS引擎:谷歌應(yīng)用引擎上提供了PaaS抽象,那樣開(kāi)發(fā)人員就能輕松處理容器技術(shù),擁有更高的運(yùn)營(yíng)靈活性。
Docker與微軟攜手將Docker引入到Windows和Azure上
應(yīng)用程序容器技術(shù)建立在Linux容器的基礎(chǔ)之上,那樣這一點(diǎn)確實(shí)很明顯:用Windows服務(wù)器構(gòu)建Docker容器不可能。許多人認(rèn)為,Docker是采用Linux而不是Windows的又一個(gè)理由。但是形勢(shì)在未來(lái)可能會(huì)發(fā)生變化。Docker與微軟達(dá)成了合作,將Docker引入到Windows服務(wù)器和微軟Azure上。如果Docker和微軟能為Windows提供一種更好的平臺(tái),這將是一場(chǎng)巨大的革命。我們可以用任何平臺(tái)來(lái)構(gòu)建容器,可以在任何操作系統(tǒng)平臺(tái)上運(yùn)行。目前,Docker客戶(hù)機(jī)可以在多種系統(tǒng)上運(yùn)行,但如果我們可以用多種平臺(tái)來(lái)封裝Docker容器,那確實(shí)會(huì)非常棒。
云平臺(tái)之戰(zhàn)并未結(jié)束,而是剛從容器生態(tài)系統(tǒng)開(kāi)始
許多人認(rèn)為,各大云平臺(tái)提供商之間的云平臺(tái)之戰(zhàn)已經(jīng)結(jié)束,AWS是這個(gè)領(lǐng)域的贏(yíng)家。這是完全錯(cuò)誤的想法。我認(rèn)為,平臺(tái)之戰(zhàn)剛剛從容器生態(tài)系統(tǒng)開(kāi)始打響。在容器生態(tài)系統(tǒng)方面,谷歌無(wú)疑是領(lǐng)頭羊,因?yàn)槠洮F(xiàn)有的IaaS服務(wù)已經(jīng)在Linux容器上運(yùn)行,而且谷歌已經(jīng)開(kāi)發(fā)并管理Kubernetes之類(lèi)的卓越技術(shù)。在IaaS領(lǐng)域,谷歌已經(jīng)比AWS更勝一籌。如果你將AWS EC2和谷歌計(jì)算引擎作一番公正客觀(guān)的比較,就會(huì)認(rèn)識(shí)到,谷歌計(jì)算引擎要比AWS出色得多。由于云PaaS向容器技術(shù)演變――谷歌在這個(gè)領(lǐng)域的實(shí)力最強(qiáng)大,谷歌云在PaaS方面同樣獲得了領(lǐng)先優(yōu)勢(shì)。我們分析云平臺(tái)的卓越技術(shù)后,發(fā)覺(jué)谷歌在各大云平臺(tái)當(dāng)中有重大優(yōu)勢(shì)。將來(lái)對(duì)AWS平臺(tái)真正構(gòu)成重大威脅的將是谷歌云平臺(tái),而不是微軟Azure。就微軟Azure而言,它們能吸引典型的企業(yè)客戶(hù),這些客戶(hù)在Windows平臺(tái)上使用.NET技術(shù)架構(gòu)來(lái)構(gòu)建應(yīng)用程序。確實(shí)很顯然,容器技術(shù)正在改變?cè)朴?jì)算平臺(tái),而且在改變?nèi)藗儾渴鸷凸芾響?yīng)用程序的方式。
英文原文:The evolution of cloud paas to container ecosystem