中國聯(lián)通河北分公司 河北 石家莊 050000
云原生(Cloud Native),是Pivotal 公司的Matt Stine于2013年提出的一個比較抽象的概念,如果把兩個單詞拆開來看,Cloud 指的就是應(yīng)用軟件部署在云端,而Native指的是應(yīng)用軟件從一開始就是專門為云端特性設(shè)計的,從而可以充分發(fā)揮云平臺的彈性優(yōu)勢。
2015年谷歌牽頭成立了云原生計算基金會(CNCF),以推動云原生技術(shù)的發(fā)展。目前,該基金會成員已有超過一百家企業(yè)與機構(gòu),包括亞馬孫、百度、思科、微軟等巨頭。CNCF認(rèn)為云原生系統(tǒng)應(yīng)該具備以下三個特征:
(1)容器化封裝:以容器為基礎(chǔ),簡化云原生應(yīng)用程序的維護(hù)。(2)自動化管理:統(tǒng)一進(jìn)行調(diào)度和管理,以實現(xiàn)降本增效。(3)面向微服務(wù):根據(jù)高內(nèi)聚低耦合的,提升應(yīng)用程序的敏捷性及可維護(hù)性。
當(dāng)前,業(yè)界對云原生的看法一致,即云原生包含了四個基本要素:容器、微服務(wù)、DevOps、持續(xù)交付。要充分理解云原生技術(shù),需要對這四個要素進(jìn)行分析[1]。
容器不是一個新概念,早在1979年就出現(xiàn)了。
也許很多人會將Docker與容器畫等號,其實Docker只是容器理念中最普及的一種應(yīng)用技術(shù)。容器的英文單詞是Container,含有集裝箱的意思,而借用集裝箱技術(shù)會更好理解的容器技術(shù)。
集裝箱的特點在于標(biāo)準(zhǔn)化,這樣它就可以大量堆疊,裝卸也很方便。容器是把程序代碼運行所需的相關(guān)環(huán)境進(jìn)行打包,封裝進(jìn)了一個系統(tǒng),就像集裝箱一樣,直接運走就行,不用關(guān)心貨船是什么樣。
通過使用容器,用戶就可以將微服務(wù)及其所需的各種配置、環(huán)境變量和依賴關(guān)系很方便地移動到全新的服務(wù)器節(jié)點上,而不需要重新做環(huán)境配置。
在容器領(lǐng)域,Docker目前是最受歡迎的一種技術(shù),Kubernetes則成為容器編排和管理中最常用的技術(shù)。
微服務(wù)是什么?原來一個產(chǎn)品的開發(fā)可能會被拆成幾個大模塊,然后分給幾個團隊來做,最后再整合。微服務(wù)的思想是把一個產(chǎn)品拆得更細(xì),然后由一個或幾個人負(fù)責(zé)一個服務(wù)的開發(fā),每個服務(wù)之間都是相互獨立的。
微服務(wù)的優(yōu)點很明顯,高內(nèi)聚、松耦合、靈活、易集成,但同時也存在挑戰(zhàn),比如怎樣對服務(wù)進(jìn)行切分。其實,早在1968年康威就提出了--康威定律,系統(tǒng)服務(wù)的劃分應(yīng)該根據(jù)組織架構(gòu)的功能進(jìn)行劃分,這一點用在微服務(wù)領(lǐng)域非常合適:
(1)內(nèi)聚更強,所有遵循相同業(yè)務(wù)準(zhǔn)則的人聚合在一起,容易解決問題。
(2)服務(wù)解耦,使得程序變更更加容易,更加敏捷。
DevOps,如果從字面上來理解,是Dev(開發(fā))+Ops(運維)。
眾所周知,傳統(tǒng)的軟件組織把開發(fā)、IT運營及質(zhì)量保障設(shè)為各自獨立的部門。開發(fā)與運營之間存在著“鴻溝”--例如運營人員要求更好的可靠性和安全性,開發(fā)人員則希望基礎(chǔ)設(shè)施響應(yīng)更快,而業(yè)務(wù)用戶的需求則是更快地將更多的特性發(fā)布給最終用戶使用。
每個部門都有不同的需求,怎么調(diào)和?DevOps的價值這時就體現(xiàn)出來了。DevOps思想的引入對產(chǎn)品的功能開發(fā)、測試、交付和維護(hù)起到意義深遠(yuǎn)的影響。其最大的價值在于透過“軟件交付”和“架構(gòu)變更”的自動化流程,更加快捷、頻繁和可靠地進(jìn)行軟件的構(gòu)建、測試和發(fā)布。
因此,更深層次的理解,DevOps是一種把“軟件開發(fā)人員(Dev)”和“IT運維技術(shù)人員(Ops)”組織在一起,進(jìn)行溝通合作的文化、運動。
怎樣理解持續(xù)交付?這個概念聽著比容器、微服務(wù)、DevOps更抽象。其實簡單來說,它就是一種能力,就像生產(chǎn)線能持續(xù)生產(chǎn)產(chǎn)品一樣。
為什么要進(jìn)行持續(xù)交付呢?傳統(tǒng)的軟件開發(fā),周期通常是以月、季度、年來計算,現(xiàn)在呢?一個應(yīng)用程序,如果晚上線一個小時造成的損失都可能是非常巨大的,所以要小步快跑、快速進(jìn)行迭代,這就是持續(xù)交付的意義所在,不斷地交付軟件,不斷地修正問題。
如果把云原生的四個基本要素關(guān)聯(lián)起來,會發(fā)現(xiàn)持續(xù)交付才是最終目標(biāo)。但要實現(xiàn)持續(xù)交付這個目標(biāo),容器、微服務(wù)、DevOps三個要素缺一不可。
云原生指的不是一個具體的產(chǎn)品,也不是把傳統(tǒng)IT架構(gòu)中的東西搬到云上,而是基于云的一種全新的IT理念,必須要對與之相關(guān)的包括應(yīng)用的架構(gòu)、應(yīng)用的開發(fā)方式、應(yīng)用的部署和維護(hù)方式等都做出變更,包括彈性、自動伸縮、動態(tài)調(diào)度等。
云時代我們要以全新的理念來看待軟件的架構(gòu)和基礎(chǔ)設(shè)施,我們也只有從這個角度理解云原生才能得到正確的答案。未來必然是屬于云原生的,企業(yè)更新的不應(yīng)只是工具,更是理念的變革,只有這樣,才能真正發(fā)揮出云的價值,才能享受新IT技術(shù)帶來的紅利,才能更好迎接云時代的到來!