新聞中心
當前位置:網(wǎng)站首頁 > 新聞中心
為什么說2019年是云原生的關(guān)鍵節(jié)點?
“未來的軟件一定是生長于云上的”這是云原生理念的最核心假設(shè)。而所謂“云原生”,實際上就是在定義一條能夠讓應用最大程度利用云的能力、發(fā)揮云的價值的最佳路徑。在這條路徑上,脫離了“應用”這個載體,“云原生”就無從談起;容器技術(shù),則是將這個理念落地、將軟件交付的革命持續(xù)進行下去的重要手段之一。圖片:千庫網(wǎng)
云原生技術(shù)發(fā)展簡史2004 年— 2007 年,Google 已在內(nèi)部大規(guī)模地使用像 Cgroups 這樣的容器技術(shù);
2008 年,Google 將 Cgroups 合并進入了 Linux 內(nèi)核主干;
2013 年,Docker 項目正式發(fā)布;
2014 年,Kubernetes 項目也正式發(fā)布。這樣的原因也非常容易理解,因為有了容器和 Docker 之后,就需要有一種方式去幫助大家方便、快速、優(yōu)雅地管理這些容器,這就是 Kubernetes 項目的初衷。在 Google 和 Redhat 發(fā)布了 Kubernetes 之后,這個項目的發(fā)展速度非常之快。
2015 年,由Google、Redhat 以及微軟等大型云計算廠商以及一些開源公司共同牽頭成立了 CNCF 云原生基金會。CNCF 成立之初,就有 22 個創(chuàng)始會員,而且 Kubernetes 也成為了 CNCF 托管的第一個開源項目。在這之后,CNCF 的發(fā)展速度非常迅猛;
2017 年,CNCF 達到 170 個成員和 14 個基金項目;
2018 年,CNCF 成立三周年有了 195 個成員,19 個基金會項目和 11 個孵化項目,如此之快的發(fā)展速度在整個云計算領(lǐng)域都是非常罕見的。云原生技術(shù)生態(tài)現(xiàn)狀
因此,如今我們所討論的云原生技術(shù)生態(tài)是一個龐大的技術(shù)集合。CNCF 有一張云原生全景圖(http://github.com/cncf/landscape),在這個全景圖里已經(jīng)有 200 多個項目和產(chǎn)品了,這些項目和產(chǎn)品也都是和 CNCF 的觀點所契合的。所以如果以這張全景圖作為背景,加以思考就會發(fā)現(xiàn),我們今天所討論的云原生其實主要談?wù)摿艘韵聨c:
云原生基金會 —— CNCF;
云原生技術(shù)社區(qū),比如像 CNCF 目前正式托管的 20 多個項目共同構(gòu)成了現(xiàn)代云計算生態(tài)的基石,其中像 Kubernetes 這樣的項目已經(jīng)成為了世界第四活躍的開源項目;
除了前面兩點之外,現(xiàn)在全球各大公有云廠商都已經(jīng)支持了 Kubernetes。此外,還有 100 多家技術(shù)創(chuàng)業(yè)公司也在持續(xù)地進行投入?,F(xiàn)在阿里巴巴也在談全面上云,而且上云就要上云原生,這也是各大技術(shù)公司擁抱云原生的一個例子。
我們正處于時代的關(guān)鍵節(jié)點
2019 年正是云原生時代的關(guān)鍵節(jié)點,為什么這么說?我們這里就為大家簡單梳理一下。
從 2013 年 Docker 項目發(fā)布開始說起,Docker 項目的發(fā)布使得全操作系統(tǒng)語義的沙盒技術(shù)唾手可得,使得用戶能夠更好地、更完整地打包自己的應用,使得開發(fā)者可以輕而易舉的獲得了一個應用的最小可運行單位,而不需要依賴任何 PaaS 能力。這對經(jīng)典 PaaS 產(chǎn)業(yè)其實是一個“降維打擊”。
2014 年的時候,Kubernetes 項目發(fā)布,其意義在于 Google 將內(nèi)部的 Borg/Omega 系統(tǒng)思想借助開源社區(qū)實現(xiàn)了“重生”,并且提出了“容器設(shè)計模式”的思想。而 Google 之所以選擇間接開源 Kubernetes 而不是直接開源 Borg 項目,其實背后的原因也比較容易理解:Borg/Omega 這樣的系統(tǒng)太復雜了,是沒辦法提供給 Google 之外的人使用,但是 Borg/Omega 這樣的設(shè)計思想?yún)s可以借助 Kubernetes 讓大家接觸到,這也是開源 Kubernetes 的重要背景。
這樣到了 2015 年到 2016 年,就到了容器編排“三國爭霸”的時代,當時 Docker、Swarm、Mesos、Kubernetes 都在容器編排領(lǐng)域展開角逐,他們競爭的原因其實也比較容易理解, 那就是 Docker 或者容器本身的價值雖然大,但是如果想要讓其產(chǎn)生商業(yè)價值或者說對云的價值,那么就一定需要在編排上面占據(jù)一個有利的位置。
Swarm 和 Mesos 的特點,那就是各自只在生態(tài)和技術(shù)方面比較強,其中,Swarm 更偏向于生態(tài),而 Mesos 技術(shù)更強一些。相比之下, Kubernetes 則兼具了兩者優(yōu)勢,最終在 2017 年“三國爭霸”的局面中得以勝出,成為了當時直到現(xiàn)在的容器編排標準。這一過程的代表性事件就是 Docker 公司宣布在核心產(chǎn)品中內(nèi)置了 Kubernetes 服務(wù),并且 Swarm 項目逐漸停止維護。
到了 2018 年的時候,云原生技術(shù)理念開始逐漸萌芽,這是因為此時 Kubernetes 以及容器都成為了云廠商的既定標準,以“云”為核心的軟件研發(fā)思想逐步形成。
而到了 2019 年,情況似乎又將發(fā)生一些變化。
什么是“云原生”?云原生該怎么落地?
云原生的定義
很多人都會問“到底什么是云原生?”
實際上,云原生是一條最佳路徑或者最佳實踐。更詳細的說,云原生為用戶指定了一條低心智負擔的、敏捷的、能夠以可擴展、可復制的方式最大化地利用云的能力、發(fā)揮云的價值的最佳路徑。
因此,云原生其實是一套指導進行軟件架構(gòu)設(shè)計的思想。按照這樣的思想而設(shè)計出來的軟件:首先,天然就“生在云上,長在云上”;其次,能夠最大化地發(fā)揮云的能力,使得我們開發(fā)的軟件和“云”能夠天然地集成在一起,發(fā)揮出“云”的最大價值。
所以,云原生的最大價值和愿景,就是認為未來的軟件,會從誕生起就生長在云上,并且遵循一種新的軟件開發(fā)、發(fā)布和運維模式,從而使得軟件能夠最大化地發(fā)揮云的能力。說到了這里,大家可以思考一下為什么容器技術(shù)具有革命性?
其實,容器技術(shù)和集裝箱技術(shù)的革命性非常類似,即:容器技術(shù)使得應用具有了一種“自包含”的定義方式。所以,這樣的應用才能以敏捷的、以可擴展可復制的方式發(fā)布在云上,發(fā)揮出云的能力。這也就是容器技術(shù)對云發(fā)揮出的革命性影響所在,所以說,容器技術(shù)正是云原生技術(shù)的核心底盤。
云原生的技術(shù)范疇
云原生的技術(shù)范疇包括了以下幾個方面:
第一部分是云應用定義與開發(fā)流程。這包括應用定義與鏡像制作、配置 CI/CD、消息和 Streaming 以及數(shù)據(jù)庫等。
第二部分是云應用的編排與管理流程。這也是 Kubernetes 比較關(guān)注的一部分,包括了應用編排與調(diào)度、服務(wù)發(fā)現(xiàn)治理、遠程調(diào)用、API 網(wǎng)關(guān)以及 Service Mesh。
第三部分是監(jiān)控與可觀測性。這部分所強調(diào)的是云上應用如何進行監(jiān)控、日志收集、Tracing 以及在云上如何實現(xiàn)破壞性測試,也就是混沌工程的概念。
第四部分就是云原生的底層技術(shù),比如容器運行時、云原生存儲技術(shù)、云原生網(wǎng)絡(luò)技術(shù)等。
第五部分是云原生工具集,在前面的這些核心技術(shù)點之上,還有很多配套的生態(tài)或者周邊的工具需要使用,比如流程自動化與配置管理、容器鏡像倉庫、云原生安全技術(shù)以及云端密碼管理等。
最后則是 Serverless。Serverless 是一種 PaaS 的特殊形態(tài),它定義了一種更為“極端抽象”的應用編寫方式,包含了 FaaS 和 BaaS 這樣的概念。而無論是 FaaS 還是 BaaS,其最為典型的特點就是按實際使用計費(Pay as you go),因此 Serverless 計費也是重要的知識和概念。
云原生思想的兩個理論
在了解完云原生的技術(shù)范疇之后你就會發(fā)現(xiàn),其所包含的技術(shù)內(nèi)容還是很多的,但是這些內(nèi)容的技術(shù)本質(zhì)卻是類似的。云原生技術(shù)的本質(zhì)是兩個理論基礎(chǔ)。
第一個理論基礎(chǔ)是:不可變基礎(chǔ)設(shè)施。這一點目前是通過容器鏡像來實現(xiàn)的,其含義就是應用的基礎(chǔ)設(shè)施應該是不可變的,是一個自包含、自描述可以完全在不同環(huán)境中遷移的東西;
第二個理論基礎(chǔ)就是:云應用編排理論。當前的實現(xiàn)方式就是 Google 所提出來的“容器設(shè)計模式”,這也是本系列課程中的 Kubernetes 部分所需主要講解的內(nèi)容。
基礎(chǔ)設(shè)施向云演進的過程
首先為大家介紹一下“不可變基礎(chǔ)設(shè)施”的概念。其實,應用所依賴的基礎(chǔ)設(shè)施也在經(jīng)歷一個向云演進的過程,舉例而言,對于傳統(tǒng)的應用基礎(chǔ)設(shè)施而言,其實往往是可變的。
大家可能經(jīng)常會干這樣一件事情,比如需要發(fā)布或者更新一個軟件,那么流程大致是這樣的,先通過 SSH 連到服務(wù)器,然后手動升級或者降級軟件包,逐個調(diào)整服務(wù)器上的配置文件,并且將新代碼直接都部署到現(xiàn)有服務(wù)器上。因此,這套基礎(chǔ)設(shè)施會不斷地被調(diào)整和修改。
但是在云上,對“云”友好的應用基礎(chǔ)設(shè)施是不可變的。
這種場景下的上述更新過程會這么做:一旦應用部署完成之后,那么這套應用基礎(chǔ)設(shè)施就不會再修改了。如果需要更新,那么需要現(xiàn)更改公共鏡像來構(gòu)建新服務(wù)直接替換舊服務(wù)。而我們之所以能夠?qū)崿F(xiàn)直接替換,就是因為容器提供了自包含的環(huán)境(包含應用運行所需的所有依賴)。所以對于應用而言,完全不需要關(guān)心容器發(fā)生了什么變化,只需要把容器鏡像本身修改掉就可以了。因此,對于云友好的基礎(chǔ)設(shè)施是隨時可以替換和更換的,這就是因為容器具有敏捷和一致性的能力,也就是云時代的應用基礎(chǔ)設(shè)施。
所以,總結(jié)而言,云時代的基礎(chǔ)設(shè)施就像是可以替代的“牲口”,可以隨時替換;而傳統(tǒng)的基礎(chǔ)設(shè)施則是獨一無二的“寵物”,需要細心呵護,這就體現(xiàn)出了云時代不可變基礎(chǔ)設(shè)施的優(yōu)點。
基礎(chǔ)設(shè)施向云演進的意義
所以,像這樣的基礎(chǔ)設(shè)施向“不可變”演進的過程,為我們提供了兩個非常重要的優(yōu)點。
基礎(chǔ)設(shè)施的一致性和可靠性。同樣一個鏡像,無論是在美國打開,在中國打開,還是在印度打開都是一樣的。并且其中的 OS 環(huán)境對于應用而言都是一致的。而對于應用而言,它就不需要關(guān)心容器跑在哪里,這就是基礎(chǔ)設(shè)施一致性非常重要的一個特征。
這樣的鏡像本身就是自包含的,其包含了應用運行所需要的所有依賴,因此也可以漂移到云上的任何一個位置。
此外,云原生的基礎(chǔ)設(shè)施還提供了簡單、可預測的部署和運維能力。由于現(xiàn)在有了鏡像,應用還是自描述的,通過鏡像運行起來的整個容器其實可以像 Kubernetes 的 Operator 技術(shù)一樣將其做成自運維的,所以整個應用本身都是自包含的行為,使得其能夠遷移到云上任何一個位置。這也使得整個流程的自動化變得非常容易。
應用本身也可以更好地擴容,從 1 個實例變成 100 個實例,進而變成 1 萬個實例,這個過程對于容器化后的應用沒有任何特殊的。最后,我們這時也能夠通過不可變的基礎(chǔ)設(shè)施來地快速周圍的管控系統(tǒng)和支撐組件。因為,這些組件本身也是容器化的,是符合不可變基礎(chǔ)設(shè)施這樣一套理論的組件。
以上就是不可變基礎(chǔ)設(shè)施為用戶帶來的最大的優(yōu)點。
2019 年——云原生技術(shù)普及元年
為什么說 2019 年很可能是一個關(guān)鍵節(jié)點呢?我們認為 2019 年是云原生技術(shù)的普及元年。
首先大家可以看到,在 2019 年,阿里巴巴宣布要全面上云,而且“上云就要上云原生”。我們還可以看到,以“云”為核心的軟件研發(fā)思想,正逐步成為所有開發(fā)者的默認選項。像 Kubernetes 等云原生技術(shù)正在成為技術(shù)人員的必修課,大量的工作崗位正在涌現(xiàn)出來。
這種背景下,“會 Kubernetes”已經(jīng)遠遠不夠了,“懂 Kubernetes”、“會云原生架構(gòu)”的重要性正日益凸顯出來。 從 2019 年開始,云原生技術(shù)將會大規(guī)模普及,這也是為什么大家都要在這個時間點上學習和投資云原生技術(shù)的重要原因。
作者:老馬來源:Dockone.in
|