技術專題·云原生(Cloud Native)
原創一、李明宇
李明宇,獨立技術咨詢師,前中科院軟件所課題組負責人
點評內容:
最近,我們聽到越來越多的人談論“云原生”(Cloud Native),這是一個非常喜人的現象。我在從事云計算領域技術工作的幾年里,致力于幫助傳統行業的企業實現IT系統的云化。我們經常面對的一個問題是要向傳統行業的客戶說清楚:云不是把原先在物理服務器上跑的東西放到虛擬機里跑,也不是在Dashboard上點點鼠標創建虛擬的網絡和路由器,真正的云化不僅僅是基礎設施和平臺的事情,應用也要做出改變,改變傳統的做法,實現云化的應用——應用的架構、應用的開發方式、應用部署和維護技術都要做出改變,真正的發揮云的彈性、動態調度、自動伸縮……一些傳統IT所不具備的能力。這里說的“云化的應用”也就是我們今天所說的“云原生應用”(Cloud Native Application)。云原生架構和云原生應用所涉及的技術很多,如微服務、容器技術等等,我這里列舉幾個比較容易被忽視但在我的工程實踐中曾發揮過重要作用的:
1. 云平臺的API
如今成熟的云平臺都有完備的API。不論是公有云還是私有云,不論是閉源商用產品還是開源的OpenStack,API都扮演了極其重要角色,它徹底改變了我們對基礎設施的使用模式,我們可以在應用的代碼中通過調用API來創建、管理和刪除基礎設施,包括計算、存儲、網絡資源以及云平臺上提供的數據庫、大數據框架、負載均衡集群等服務的實例。成熟的云平臺中Web界面和命令行工具本身的所有功能都是通過調用API來實現的。
一般來說,云平臺的API是基于HTTP的RESTful Web API,許多云平臺能夠兼容亞馬遜AWS的API。比較成熟的云平臺中還提供Orchestration服務,方便大家用基于Yaml的模板來實現對API的調用。使用Orchestration服務還可以實現對復雜云應用的快速部署。
2. 自動伸縮服務
通過自動伸縮服務來充分發揮云的彈性,在應用壓力過大時,自動創建實例分擔負載;在應用壓力降低時,自動刪除實例釋放空閑資源。自動伸縮服務和負載均衡服務往往需要配合使用。
結合容器技術,并以微服務架構設計和開發應用時,每個微服務都可以配置為自動伸縮組,這樣可以做到非常細粒度的彈性,準確有效地化解應用的瓶頸,提高資源的利用效率。
3. 大數據即服務(Hadoop等大數據系統的云化)
與傳統IT架構中的應用類似,云上的應用同樣需要用到大數據處理技術,而Hadoop、Spark等大數據系統在設計時考慮的是在物理機器上運行的,加上這些系統本身的復雜性,如果直接將其放到虛擬機或者容器中運行,可能會遇到很多問題。這時候應當通過一些專門為大數據系統云化準備的技術,例如OpenStack的Sahara、SequenceIQ的CloudBreak、AWS的EMR等,或者一些商用方案,實現“大數據即服務”(Big Data as a Service)。應用在使用大數據技術時,通過調用服務創建云上的大數據系統,再通過調用服務使用這些大數據系統。而不是創建一堆虛機或者容器,并在里面安裝一套大數據系統出來。也就是說,一方面,大數據系統本身也要實現云化;另一方面,云原生應用對大數據系統的使用是通過調用云服務來實現的。
4. 服務化的存儲
存儲的服務化往往是容易被忽視的地方,因為我們太習慣使用文件系統了,不論是本地文件系統還是NAS,即便是使用了云硬盤、Virtual SAN和類似OpenStack Manila的“文件系統即服務”,在應用這個層面上,使用存儲的接口還是傳統的、本地的文件系統接口,而不是使用服務。這種方式不論是對于應用還是存儲本身,其可擴展性和可用性都是挑戰。云原生架構中應當使用服務化的存儲,服務化的存儲分為兩類——數據庫和對象存儲。數據庫以記錄的形式存儲和訪問數據,可以是結構化的或者非結構化的。數據庫本身即能夠以服務的形式提供訪問,對于與云原生架構來說,還應當采用“數據庫即服務”(Database as a Service),其原因和做法與上述采用“大數據即服務”類似。而對于類似于BLOB的非結構化數據存儲,傳統的做法是存在文件系統中,在云原生應用中應當使用對象存儲,對象存儲通過HTTP提供服務化的數據讀寫接口。
二、楊海明
楊海明,京東云***架構師
點評內容:
新的業務生態催生了新的技術架構,傳統的煙囪型應用經歷了SOA的***次變革,現在進入了Cloud Native的新形態。
傳統的煙囪型架構,由服務器、操作系統、中間件、及專屬業務流程軟件構成。回顧近些年IT界流行的趨勢,軟件定義環境、數據狀態功能分離、彈性擴展、自動高可用、Devops等***的業界趨勢構成了Cloud Native的業務形態。
從業務角度,云把傳統復雜的定制的小眾的業務以標準化的形式給更多的用戶提供出來,從技術角度,需要有能支撐標準化擴展業務的基礎技術提供出來。在云的業務需求下,下層的IT技術需要可以跨平臺的彈性擴展,在整個開發測試流程中更agile,在業務出現災難時更容易的恢復。Cloud native的誕生,不是一個技術推動的產物,而是云業務發展到一定階段對技術架構的需求。傳統IT時代,是個Scale-up的時代,為了支持更多業務,需要基礎IT架構的縱向升級,比如更強大的機器;但是在云的時代,個體的需求往往不是很復雜,但是Scale-out的需求更強烈。
基礎IT如何支撐新的業務形態?在看起來,Cloud Native的技術是一個明顯的答案。在新的技術下,硬件技術,操作系統技術,中間件技術,以及應用邏輯均進行了有效的重新定位。在京東云平臺Cloud Native的實踐中,充分體驗到了彈性擴容,自動災備的好處,并經歷了雙十一和618的大考;可以預見在未來的技術發展中,Cloud Native會催生出更多的業務向云轉型,并帶動新的IT技術發展。
三、喻勇
喻勇,DaoCloud聯合創始人
點評內容:
在未來幾年,Cloud Native將從一個技術術語,轉變為一個管理***。
計算機技術發展至今,每一代的硬件平臺,都會催生對應的軟件架構,從大型機到PC時代的C/S桌面應用到互聯網時代的B/S架構。如果把云計算看作是一個全新的硬件或者資源平臺,在此基礎上的軟件開發,就是Cloud Native。過去很多年,由于虛擬化的便利,云計算經歷了新瓶裝舊酒的過程,如今,隨著互聯網業務的深入發展,開發者并不滿足于把舊有應用簡單的向單一的云主機遷移,而是希望把云平臺作為一個整體,在此基礎上完成分布式的、動態彈性的 Cloud Native Application。在技術領域,最近廣受關注的容器技術、微服務架構、十二要素法則、不可變基礎設施等等,都是為了Cloud Native Application 訂立標準。
從另外一個角度來看,大量的傳統企業擁抱互聯網,除了在軟件架構層面實現Cloud Native,越來越多企業會從組織架構、決策流程、銷售策略等方向進行管理轉型。以 Cloud 為載體的互聯網經濟學,講究唯快不破,企業為了在快速變化的互聯網市場取得成功,需要擁抱 Cloud Native 式的管理哲學:輕量級、高速響應、按需彈性,對應于管理,就是更加扁平的組織架構、更具彈性的的決策流程,傳統和常見的市場、分銷、甚至人力資源管理,都將逐步進化到 Cloud Native 的層面。僅僅在技術層面做架構變革,背后的管理和組織架構不發生變化,是很快會遇到瓶頸的。
#p#
四、編輯
云計算頻道編輯 于雪
最近,“Cloud Native”快速走進越來越多技術人的視野。2015年7月,谷歌、IBM、英特爾、Joyent Docker 等19家知名公司共同創建起一個名為“云原生計算基金會”的年輕的開源基金會組織,其目標在于解答一個困擾業界的難題——云體系應該采用怎樣的架構來服務現代應用程序。
持續交付、DevOps以及微服務成為云原生應用的根本原因。它們分別描述了Cloud Native應用的為什么、怎么做和是什么。它們相互交織,不可分割。眾所周知,我們的應用程序在運行過程中需要基礎設施、開發者中間件以及支持服務的多方配合。云原生機制的出現,讓我們看到了實現這些目標的可能。當軟件交付生命周期引入云原生機制之后,大家將能夠提高運營及規?;?,進而實現所謂“敏捷性”:也就是快速為軟件添加新功能,同時又不影響其在生產環境下的穩定性與安全性水平的能力。
可以預見在未來的幾年中,Cloud Native應用等技術注定將對現代化應用的創建、交付與運維產生實質性的影響,它們將對改進每個商業機構的基礎成本、效率以及靈活性起到關鍵的作用。