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































