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