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