技術(shù)
導(dǎo)讀:云原生這一整套技術(shù)體系和方法論,在云化過程中可以起到從統(tǒng)一思想方法到云化戰(zhàn)略落地的作用,可以預(yù)見將在未來的數(shù)字化轉(zhuǎn)型中扮演重要的角色。
隨著云架構(gòu)的不斷普及,“未來的軟件一定生長(zhǎng)于云上”的理念被越來越多的人所接受。云提供了一種面向企業(yè)應(yīng)用實(shí)現(xiàn)按需進(jìn)行資源分配的模型,以一種全新的、高效的方式來部署應(yīng)用。企業(yè)紛紛開始云化轉(zhuǎn)型,希望將傳統(tǒng)應(yīng)用遷移到云端。
虛擬化為云計(jì)算奠定了基礎(chǔ),但如果運(yùn)行模式不做任何改動(dòng),僅僅是把虛擬機(jī)當(dāng)做物理機(jī)來使用,是不能真正將云平臺(tái)的優(yōu)勢(shì)利用起來的。只有對(duì)應(yīng)用程序架構(gòu)進(jìn)行升級(jí)改造,才能構(gòu)成“云應(yīng)用程序”。
基于云化架構(gòu)的特點(diǎn),定義一條能夠讓應(yīng)用最大程度利用云的能力、發(fā)揮云的價(jià)值的最佳路徑成為行業(yè)迫切的需求,“云原生”應(yīng)運(yùn)而生。
云原生應(yīng)運(yùn)而生,技術(shù)范疇漸成體系
不同的組織對(duì)于云原生有不同的理解和定義。從技術(shù)角度來看,我們可以認(rèn)為云原生是一類技術(shù)的統(tǒng)稱,基于它可以構(gòu)建出更易于彈性擴(kuò)展的應(yīng)用程序;從業(yè)務(wù)角度來看,云原生可以帶來更快的業(yè)務(wù)響應(yīng)速度和需求高效實(shí)現(xiàn),云原生可以有效地縮短應(yīng)用交付的周期,讓需求更快地變成代碼,代碼更快地變成線上的應(yīng)用,最終為用戶服務(wù),通過縮短“time to market”帶來切實(shí)的業(yè)務(wù)價(jià)值。
從更為抽象的指導(dǎo)思想角度來看,云原生表達(dá)了一種未來軟件開發(fā)生長(zhǎng)的管理和實(shí)踐思路:即軟件產(chǎn)生并部署在云上,且遵循一種新的軟件開發(fā)、發(fā)布和運(yùn)維模式,從而使軟件能夠最大化發(fā)揮云的能力。
2013年,Pivotal(美國(guó)云軟件開發(fā)工具與服務(wù)公司)的Matt Stine根據(jù)其多年的架構(gòu)和咨詢經(jīng)驗(yàn)總結(jié)出來了一個(gè)思想集合,并得到了不斷發(fā)展和完善。這其中包含了DevOps、持續(xù)交付、微服務(wù)、敏捷基礎(chǔ)設(shè)施和12要素等幾大主題,不但包括根據(jù)業(yè)務(wù)能力對(duì)公司進(jìn)行文化、組織架構(gòu)的重組與建設(shè),也包括方法論與原則,還有具體的操作工具。采用基于云原生的技術(shù)和管理方法,可以更好地把業(yè)務(wù)生于云或遷移到云平臺(tái),從而享受云的高效和持續(xù)的服務(wù)能力,這標(biāo)志著“云原生”比較完整的范疇的形成。
從商業(yè)應(yīng)用角度看,云原生有幾個(gè)重要的發(fā)展節(jié)點(diǎn):2013年,Docker項(xiàng)目正式發(fā)布;2014年,Google和Redhat聯(lián)合發(fā)布Kubernetes,用于更加方便、快速對(duì)容器進(jìn)行管理;2015年,由Google、Redhat以及微軟等大型云計(jì)算廠商以及一些開源公司共同牽頭成立了云原生基金會(huì)(CNCF)。CNCF這個(gè)非盈利組織的初衷為推廣孵化和標(biāo)準(zhǔn)化云原生相關(guān)的技術(shù),其中包括推動(dòng)云原生計(jì)算可持續(xù)發(fā)展和幫助云原生技術(shù)開發(fā)人員快速地構(gòu)建出色的產(chǎn)品。在此之后,CNCF得到了快速的發(fā)展,并逐漸構(gòu)建出一整套技術(shù)。
當(dāng)前,云原生技術(shù)范疇包含以下6個(gè)方面。
第一,云應(yīng)用定義與開發(fā)流程,包括應(yīng)用定義與鏡像制作、配置CI/CD、消息和Streaming以及數(shù)據(jù)庫(kù)等。
第二,云應(yīng)用的編排與管理流程,包括了應(yīng)用編排與調(diào)度、服務(wù)發(fā)現(xiàn)治理、遠(yuǎn)程調(diào)用、API網(wǎng)關(guān)以及Service Mesh。
第三,監(jiān)控與可觀測(cè)性,這部分所強(qiáng)調(diào)的是云上應(yīng)用如何進(jìn)行監(jiān)控、日志收集、Tracing以及在云上如何進(jìn)行破壞性測(cè)試。
第四,云原生的底層技術(shù),比如容器運(yùn)行時(shí),云原生存儲(chǔ)技術(shù)和云原生網(wǎng)絡(luò)技術(shù)等。
第五,云原生工具集,在前面這些核心技術(shù)點(diǎn)之上,還有很多配套的生態(tài)或者周邊的工具需要使用,比如流程自動(dòng)化與配置管理、容器鏡像倉(cāng)庫(kù)、云原生安全技術(shù)和云端密碼管理等。
第六,Serverless,這是一種PaaS的特殊形態(tài),它定義了一種更為“極端抽象”的應(yīng)用編寫方式。
容器云加速業(yè)務(wù)交付效率
云原生有兩個(gè)重要的思路:第一個(gè)是敏捷的不可變基礎(chǔ)設(shè)施,這一點(diǎn)目前是通過容器鏡像來實(shí)現(xiàn),其含義就是應(yīng)用的基礎(chǔ)設(shè)施應(yīng)該是不可變的,是一個(gè)自包含、自描述可完全在不同環(huán)境中遷移的東西;第二個(gè)是云應(yīng)用編排理論,當(dāng)前的實(shí)現(xiàn)方式就是Kubernetes的“容器設(shè)計(jì)模式”。
落實(shí)到云架構(gòu)的三層模型中,敏捷的不可變基礎(chǔ)設(shè)施類似于IaaS層,用來提供計(jì)算網(wǎng)絡(luò)存儲(chǔ)等基礎(chǔ)資源,這些資源是可編程且不可變的,直接通過API可以對(duì)外提供服務(wù)。云應(yīng)用的編排則通過PaaS服務(wù)組合成不同的業(yè)務(wù)能力,實(shí)現(xiàn)服務(wù)能力的復(fù)用;而SaaS能力意味著直接在云資源上部署和應(yīng)用,客戶可以直接面對(duì)云原生應(yīng)用。
在實(shí)踐中,容器云PaaS平臺(tái)在應(yīng)用中得到了落地,逐漸進(jìn)入商業(yè)成熟期的階段。PaaS本質(zhì)上是云計(jì)算模型中的能力層,它幫助企業(yè)提高業(yè)務(wù)交付的效率、降低企業(yè)成本,以云原生技術(shù)為基礎(chǔ)的容器云PaaS已經(jīng)成為企業(yè)IT基礎(chǔ)設(shè)施的重要組成部分。
容器云PaaS基礎(chǔ)設(shè)施層可以部署在虛擬機(jī)、物理機(jī)以及公有云環(huán)境上;平臺(tái)架構(gòu)層包含了容器編排調(diào)度、容器網(wǎng)絡(luò)以及容器存儲(chǔ)等。容器云PaaS支持的能力包括容器應(yīng)用管理、微服務(wù)、DevOps以及中間件PaaS組件,例如消息隊(duì)列、大數(shù)據(jù)、機(jī)器學(xué)習(xí)訓(xùn)練平臺(tái)等。
在容器云之前,PaaS側(cè)重提供支撐應(yīng)用運(yùn)行的應(yīng)用引擎;而容器云PaaS則是融入DevOps、微服務(wù),解決了應(yīng)用的完整生命周期管理問題,從而達(dá)到我們之前所說的加速企業(yè)業(yè)務(wù)的交付效率,實(shí)現(xiàn)更高的彈性和可擴(kuò)展性等目標(biāo)。
云原生逐漸成熟,生態(tài)拓展至邊緣
從云原生的發(fā)展?fàn)顩r看,這一領(lǐng)域的發(fā)展呈現(xiàn)出值得關(guān)注的幾個(gè)特點(diǎn)。
首先,云原生逐漸在商業(yè)環(huán)境中得到應(yīng)用和完善。在網(wǎng)絡(luò)安全公司Stackrox的一次民意調(diào)查當(dāng)中,2019年是Kubernetes在容器編排中占據(jù)主導(dǎo)地位的一年:86%的受訪者用它來進(jìn)行編排工作,遠(yuǎn)高于2018年的57%。企業(yè)Kubernetes平臺(tái)Diamanti的說法是:“與2018年相比,我們清晰地看到容器管理正在進(jìn)入企業(yè)IT主流?!?/p>
其次,Kubernetes在安全性方面承受著巨大壓力。面向安全級(jí)別要求更高的客戶,在初期安全程度較低的項(xiàng)目中表現(xiàn)良好的網(wǎng)絡(luò)安全面臨挑戰(zhàn)。與此同時(shí),敏捷開發(fā)和DevOps帶來的高頻代碼發(fā)布、部署也帶來了更高的安全性要求。
最后,伴隨著應(yīng)用從云端向邊緣的拓展,云原生也在邊緣計(jì)算領(lǐng)域得到了發(fā)展和落地,進(jìn)一步拓展了云原生的應(yīng)用領(lǐng)域:2018年,KubeCon正式公布了新的基于Kubernetes的生態(tài)系統(tǒng)KubeEdge,將Kubernetes生態(tài)系統(tǒng)從云端擴(kuò)展到邊緣。KubeEdge基于Kubernetes的架構(gòu)體系并針對(duì)邊緣場(chǎng)景提供了諸如離線運(yùn)行能力、邊云協(xié)同能力等多種特殊能力的支持,將云原生的生態(tài)和開發(fā)體驗(yàn)延伸到邊緣,面向開發(fā)者提供統(tǒng)一的開發(fā)、部署、管理視圖,屏蔽邊緣和云端的差異。
云原生這一整套技術(shù)體系和方法論,在云化過程中可以起到從統(tǒng)一思想方法到云化戰(zhàn)略落地的作用,可以預(yù)見將在未來的數(shù)字化轉(zhuǎn)型中扮演重要的角色。在這一路徑上,云的能力和企業(yè)管理能力、業(yè)務(wù)拓展能力能夠在系列最佳實(shí)踐和配套工具的支持下融匯結(jié)合,為實(shí)現(xiàn)組織的云戰(zhàn)略發(fā)揮更為重要的作用。