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