現象一:沒有API的公有IaaS服務
近一兩年來,國內公有IaaS“服務”如雨后春筍一般大量出現。其中有幾家廠商對外開放了其對象存儲的API。而除了阿里云提供了ECS API外,在其他廠商云服務主頁上卻看不到類似AWS EC2 API的開放API?!咀ⅲ何覜]有使用過阿里云ECS API,其官網上只提供了一遍介紹性文章和功能簡單的SDK,網絡上也沒有查詢到相關的成功案例。API是否成熟的標志是用戶可以通過Rightscale等云管理軟件、jclouds等庫進行管理和操作。】
如果在沒有開放API的情況下,就發(fā)布IaaS“服務”,那么說明API在產品優(yōu)先級中處于很低的位置。這表明國內的公有IaaS服務商沒有真正理解AWS成功的根本原因,其對AWS的模仿僅限于“產品名稱”上。如果不能通過API進行自動化控制,僅通過Console進行管理是非常煩瑣的, 而且無法支持自動化的部署和運維,也無法實現自動伸縮、HA、Failover等高級特性。
反觀國外的公有云服務,除了AWS外,無論是Rackspace,還是后推出的Azure、GCE、HP Cloud等都是有API的。四大開源IaaS平臺軟件OpenStack、CloudStack、Eucalyptus和OpenNebula也都是有API的,有些甚至與AWS完全兼容。為什么API如此重要?
Amazon CTO Werner Vogels的觀點“Everything is a Programmable Unit”便是答案。IaaS的真正價值不在于自動化編排和管理數據中心物理資源,而是徹底改變上層平臺和應用使用IT資源的方式。AWS基于核心EC2 API,構建出了很多上層服務,逐步形成一個完整的云服務體系。而開放的API也為開發(fā)者和第三方廠商提供了在IaaS平臺上廣闊的創(chuàng)新空間,如PaaS、應用生命周期管理軟件、DevOps工具、混合云管理工具等。
沒有API的公有云導致國內用戶不能開發(fā)真正的Cloud-Native應用,這就是要分析的第二個現象。
現象二:鮮有成功的Cloud-Native應用
在AWS出現之前,“Cloud-Native應用”這個概念并不存在。AWS快速發(fā)展的背后,是大量構建、運行于AWS之上的成功Cloud-Native應用,如Netflix、Zynga、Pinterest、Heroku、Reddit等。讓我們看看Pinterest在2013年1月時的一些數據。
Cloud-Native應用的核心改變是:Fit App to Infra,而不是Fit Infra to App。Amazon CTO說,21世紀應用架構的四個屬性是Controllable、Resilient、Adaptive和Data-Driven。既要充分利用云基礎設施的可編程性、可擴展性等特性,又要解決云基礎設施的不可靠問題,這是云時代軟件開發(fā)的新挑戰(zhàn)(如圖1所示)。
圖1 云時代軟件開發(fā)的新挑戰(zhàn)
看到這個圖,大家自然會想到解決這個Gap的就是PaaS,但這里PaaS要解決的問題和國內大部分人所理解的PaaS要解決的問題有差異。究其原因,是國內用戶缺乏切實的Cloud-Native App開發(fā)經驗,導致國內對PaaS的理解單一,出現了單一的Cloud Foundry PaaS熱。
現象三:對PaaS的理解較單一
相比于IaaS,人們對PaaS的理解不盡相同。Netflix為我們展現了一種不同于通常人們所理解的PaaS。Netflix是構建在AWS上的最大Service,其使用的EC2實例數在10k數量級。Netflix認為其將服務遷移到AWS上后,其技術的核心工作是在AWS之上構建一個PaaS層。目前,這個PaaS中的大部分組件已經被Netflix開源了。當大家看完Netflix的開源項目后,會發(fā)現這個PaaS和我們通常概念中的PaaS(如Cloud Foundry)有差異。我們一般認為:SaaS的目標用戶是最終用戶;PaaS的目標用戶是開發(fā)者;IaaS的目標用戶是IT Ops。
但問題是對于很多應用,特別是復雜應用,傳統意義上的PaaS根本無法滿足需求。例如,可以在Cloud Foundry平臺上運行一個Cloud Foundry嗎?顯然是不行的。對于復雜的、大規(guī)模的應用,開發(fā)人員需要擁有對整個Full-Stack的控制。因此,開發(fā)者也是IaaS的目標用戶,特別在PaaS發(fā)展的早期。開發(fā)者可以基于IaaS構建支撐其Cloud-Native應用的PaaS能力層。但對于開發(fā)者而言,構建介于Cloud-Native App和Infra之間的PaaS能力層有多種選擇。除了傳統的PaaS外,可以選擇IaaS提供的附加上層Service,還可以選擇第三方云管理工具,也可以完全自己搭建,如圖2所示。
圖2 PaaS層的構成
架構師和開發(fā)人員選擇哪些種方式構建PaaS能力層,取決于自身情況,切勿將PaaS的理解局限在Cloud Foundry等傳統意義的PaaS上。
總結
沒有API的公有云服務使國內開發(fā)人員無法在IaaS上構建Cloud-Native應用。無Cloud-Native應用的開發(fā)經驗,使開發(fā)人員對PaaS的理解有限,從而極大限制了國內在PaaS領域的創(chuàng)新。
因此,我給出以下建議。
聯系客服