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