CNCF TOC 委員張磊:不斷演進(jìn)的云原生給我們帶來(lái)了什么?
云原生是什么?
即使“云原生”的提出已經(jīng)有一段時(shí)間,但不少人還是會(huì)有這樣一個(gè)問(wèn)題:究竟什么是云原生?或者說(shuō)云原生的確切定義是什么?
實(shí)際上,當(dāng)我們接觸到很多云原生的開(kāi)源技術(shù)和產(chǎn)品之后,會(huì)逐漸發(fā)現(xiàn)一個(gè)現(xiàn)象——云原生本質(zhì)上其實(shí)并不是一個(gè)非常確切的物體。也就是說(shuō),云原生其實(shí)不存在什么具體定義,它指的是一個(gè)不斷演進(jìn)的過(guò)程。與其談云原生的本質(zhì),不如我們將它理解為一套愿景。
那么這套愿景的內(nèi)容又是什么呢?
在未來(lái)云的時(shí)代,我們的軟件或者應(yīng)用是天然的生于云上,長(zhǎng)于云上。之所以會(huì)出現(xiàn)這樣一種現(xiàn)象或這樣一個(gè)事實(shí),正是因?yàn)樵朴?jì)算能夠最大程度地去幫助這些軟件降本提效,釋放軟件本身最大的業(yè)務(wù)價(jià)值。這才是云原生真正想要去做的一件事情,所以它并不是某一項(xiàng)具體的技術(shù),也不是某一個(gè)方法,更不是某一個(gè)具體的科研項(xiàng)目。
不斷演進(jìn)的云原生
下圖能夠直觀地闡明云原生整體的形態(tài)到底是怎么去演進(jìn)和發(fā)展的。
云原生非常強(qiáng)調(diào)利用云的特性,所以它的核心方法論和核心概念都是圍繞如何讓我們的軟件和應(yīng)用去利用云的特性。那么云的特性是什么呢?比如說(shuō)云是能夠無(wú)限彈性的、云的資源是可以快速交付的、云的使用方法是可以按量付費(fèi)的,這些都是云非常本質(zhì)的特性。
圍繞這些云的特性,云原生才有了一套最基礎(chǔ)的方法論和概念。比如大家可能聽(tīng)說(shuō)過(guò)不可變基礎(chǔ)設(shè)施,當(dāng)我的應(yīng)用部署在云上,假設(shè)這個(gè)應(yīng)用載體是不可變的,我就可以隨時(shí)把它刪掉或替換掉,那么要更新我的應(yīng)用會(huì)非常容易。如果要升級(jí)應(yīng)用,可以直接采用刪掉舊的、上線新的方式去做,而不是說(shuō)需要去動(dòng)態(tài)變更應(yīng)用里面的某項(xiàng)配置,甚至動(dòng)態(tài)更改代碼去實(shí)現(xiàn)。所以,不可變基礎(chǔ)設(shè)施就是一套非常典型的、基于利用云的快速資源交付能力而形成的方法論。
再比如說(shuō),云原生強(qiáng)調(diào)要高度的自動(dòng)化,實(shí)現(xiàn)自運(yùn)維甚至自愈,其實(shí)也是希望軟件本身能夠去更好地利用云的特性。因?yàn)樵频哪芰κ欠浅?qiáng)大的,云能夠提供各種各樣的運(yùn)維能力,所以應(yīng)用或者軟件可能從開(kāi)發(fā)的時(shí)候,就要考慮到云其實(shí)能夠提供很多能力到應(yīng)用層,而不是說(shuō)先開(kāi)發(fā)完應(yīng)用,再去思考怎么借助云的能力去運(yùn)維,這樣是構(gòu)建不出來(lái)云原生應(yīng)用的。
再比如說(shuō),云原生應(yīng)用無(wú)所謂用什么語(yǔ)言寫(xiě),用什么框架寫(xiě),這也是很明顯的一個(gè)特點(diǎn)。因?yàn)樵票旧硎且粋€(gè)基礎(chǔ)設(shè)施能力,那么就不應(yīng)該也不會(huì)去用某種語(yǔ)言或者框架去鎖定。同樣也是希望這個(gè)世界上所有的軟件都能夠去利用云的能力,而不是說(shuō)云只能服務(wù)于某種語(yǔ)言。
以上這些都是在云的背景下,云原生提出的一些非常重要的概念。而這些概念本身在我們的技術(shù)研究當(dāng)中就會(huì)被映射成為一系列的系統(tǒng),或者說(shuō)架構(gòu)思想。比如說(shuō)前面提到不可變基礎(chǔ)設(shè)施,可以把一個(gè)應(yīng)用舊的實(shí)例刪掉換成新的實(shí)例,像這樣的一套方法怎么去實(shí)現(xiàn)?就要靠容器技術(shù)。容器技術(shù)本質(zhì)上提供容器鏡像,一個(gè)容器鏡像是自包含一個(gè)應(yīng)用的運(yùn)行環(huán)境,包括應(yīng)用本身,可以隨時(shí)把這個(gè)鏡像版本替掉,上線一個(gè)新的版本就可以了。這其實(shí)代表著容器是不可變基礎(chǔ)設(shè)施的一個(gè)非常良好的實(shí)現(xiàn)。
那么這是不是意味著未來(lái)會(huì)有某一種技術(shù),能夠更好地去實(shí)現(xiàn)不可變基礎(chǔ)設(shè)施呢?這是很有可能的,并且這項(xiàng)技術(shù)當(dāng)然也是云原生的。當(dāng)未來(lái)可能有一個(gè)新的技術(shù)去實(shí)現(xiàn)不可變基礎(chǔ)設(shè)施,或者更好地實(shí)現(xiàn)不可變基礎(chǔ)設(shè)施,那么這樣一個(gè)技術(shù)也一定是屬于云原生的核心范疇。與之類似的,像我們?cè)圃裉鞆?qiáng)調(diào)的 Sidecar 架構(gòu),就是把中間件能力通過(guò)一個(gè)叫 Sidecar 容器的方式去對(duì)接到業(yè)務(wù)容器里去,而不是說(shuō)在業(yè)務(wù)本身上去做定制,集成中間件去解決問(wèn)題。這其實(shí)是希望能夠去實(shí)踐我們強(qiáng)調(diào)的與語(yǔ)言無(wú)關(guān)、與框架無(wú)關(guān)的這樣一套方法論所提出的一個(gè)架構(gòu)。而這個(gè)架構(gòu)的特點(diǎn)就是,中間件能力不再需要以語(yǔ)言或者框架的方式嵌到業(yè)務(wù)代碼本身里去,所以說(shuō) Sidecar 加上容器都能夠去實(shí)現(xiàn)這樣的一套方法。
這就是云原生方法論背后不斷推演出來(lái)的一系列技術(shù)和架構(gòu),而這些技術(shù)架構(gòu)最終在云原生生態(tài)里面,往往是以開(kāi)源的技術(shù)項(xiàng)目來(lái)給大家去使用的。比如說(shuō)前面提到的容器就會(huì)有 Docker 上的項(xiàng)目,我們提到的 Sidecar 和自運(yùn)維的這套思想,最終會(huì)通過(guò) Kubernetes 去幫你去實(shí)現(xiàn)。
再比如說(shuō)最近比較火熱的 Service Mesh,它本質(zhì)上在幫你去做中間件的能力,只不過(guò)是通過(guò) Sidecar 這種與語(yǔ)言無(wú)關(guān)的方式去做;再比如說(shuō)我們未來(lái)或者說(shuō)現(xiàn)在就已經(jīng)比較火的 eBPF、WASM,他們其實(shí)都是在實(shí)踐云原生這套體系背后的某項(xiàng)思想和某種架構(gòu),以開(kāi)源的方式去滿足讓用戶使用的場(chǎng)景。而正是因?yàn)橛辛诉@一系列的開(kāi)源項(xiàng)目,我們才能做到說(shuō)當(dāng)我的用戶拿到這樣的開(kāi)源項(xiàng)目,拿到這樣的技術(shù),他能夠去真正實(shí)踐云原生理念,從而達(dá)到我們前面講到的這兩種云帶來(lái)的本質(zhì)效果:
第一個(gè)是提升效率,比如說(shuō)研發(fā)效率、交付效率、運(yùn)營(yíng)效率。例如我的應(yīng)用本身通過(guò)容器實(shí)現(xiàn)了不可變基礎(chǔ)設(shè)施的這樣一套理念,那么它的交付就可以非常簡(jiǎn)單,我只需要做鏡像,交付鏡像后它就可以運(yùn)行在每一個(gè)地方;再比如說(shuō)我們的運(yùn)維,當(dāng)你的軟件本身已經(jīng)實(shí)現(xiàn)了自運(yùn)維,那么它的運(yùn)維的難度和成本一定是降低的,所以我們一定能夠借助云的能力去提效。
第二個(gè)是降低成本,這里包括了資源成本,也包括了人力成本。比如說(shuō)通過(guò) Kubernetes 或者說(shuō)通過(guò)容器這樣的項(xiàng)目,我的應(yīng)用可以更好地、更多地去集成云服務(wù),通過(guò)云服務(wù)來(lái)減少運(yùn)維成本和人力投入,這些都是很明顯的成本降低。再比如說(shuō)我的應(yīng)用通過(guò)云原生實(shí)現(xiàn)了上云,又通過(guò)云原生架構(gòu),可以很快速地進(jìn)行資源交付和更新的模式,讓整個(gè)應(yīng)用的資源成本也變得很低,這同樣也是通過(guò)云原生技術(shù),讓?xiě)?yīng)用能夠更好地使用到云的本質(zhì)能力的一種非常好的體現(xiàn)和實(shí)踐。
總體而言,你會(huì)發(fā)現(xiàn)這一套云原生的方法其實(shí)是一個(gè)很完善的閉環(huán),先不斷去地看、不斷地去探索如何利用云的特性幫助用戶去提效降本,然后把這一系列的方法或者這一系列的思想,總結(jié)沉淀成為云原生的概念和方法論,再通過(guò)一系列相應(yīng)的架構(gòu)和對(duì)應(yīng)的開(kāi)源項(xiàng)目將其實(shí)現(xiàn),最后再讓用戶能夠去使用這些技術(shù),從而達(dá)到釋放云計(jì)算紅利的本質(zhì)目的。
所以說(shuō)云原生它沒(méi)有一個(gè)具體的定義,它實(shí)際上是一套不斷自我演進(jìn)的理論體系加上最佳實(shí)踐的組合。
今天的云原生
今天的云原生可能是圍繞著容器和 Kubernetes 來(lái)構(gòu)建的,而這樣的項(xiàng)目實(shí)際上在幫助我們?nèi)?shí)踐很多云原生背后的本質(zhì)思想,包括不可變基礎(chǔ)設(shè)施、自動(dòng)化等。今天 Kubernetes 被認(rèn)為是一個(gè)云時(shí)代的通用控制平面,也有人把它叫做操作系統(tǒng),就是說(shuō)你的所有操作都可以借助 Kubernetes 在云上統(tǒng)一去完成。
1、Kubernetes 項(xiàng)目的“安卓化”
Kubernetes 項(xiàng)目的角色可能會(huì)越來(lái)越像一個(gè)安卓。舉一個(gè)例子,比如說(shuō)今天的 Kubernetes 其實(shí)正在做到無(wú)處不在,每個(gè)地方每個(gè)云層都有 Kubernetes,甚至部署在端的用戶、或者部署在邊緣的環(huán)境下都是非常正常的,就跟安卓一樣,車上也有,我們電視里也有,甚至空調(diào)也會(huì)有可能有一個(gè)安卓。
Operator 是 Kubernetes 里面的一個(gè)核心思想,它代表著我的任何一個(gè)應(yīng)用和它所需要的能力都可以定義成為一個(gè) Kubernetes 的 API 對(duì)象,通過(guò)一個(gè)叫做 Controller 的機(jī)制讓你去使用云的能力,再讓你接入到各種各樣的基礎(chǔ)設(shè)施里面。這個(gè) Operator 化帶來(lái)的一個(gè)直接結(jié)果就是,我的應(yīng)用本身是高度自動(dòng)化的,包括自愈、健壯性、可靠性、運(yùn)行的確定性,這些在今天都可以交給 Kubernetes去解決。我的用戶或者說(shuō)我應(yīng)用的 owner,不需要再關(guān)心這些問(wèn)題。
那么這也是我們今天在 K8s 安卓化的背景下看到的另外一個(gè)趨勢(shì),就是我的應(yīng)用本身和業(yè)務(wù)所需要的能力會(huì)不斷地往自動(dòng)化方向去演進(jìn)。這也非常符合云原生的理念,因?yàn)槟愕膽?yīng)用自動(dòng)化和自愈能力越強(qiáng),你就越能夠去跟云去對(duì)接,人工需要去記錄的成本會(huì)更低,時(shí)間也會(huì)更少,更多的是把我的自動(dòng)化能力跟云去對(duì)接好,讓云幫助我去解決所有問(wèn)題。
3、應(yīng)用中間件能力進(jìn)一步“下沉”
還有一個(gè)趨勢(shì)是,我們應(yīng)用本身所需要的中間件能力下沉。即以前的中心化的中間件其實(shí)在過(guò)去幾年中,已經(jīng)演進(jìn)到了微服務(wù)架構(gòu)。
微服務(wù)架構(gòu)本質(zhì)上是把以前的中心化中間件的這一套東西拆開(kāi),放在了業(yè)務(wù)代碼里面,而你需要去把它引入進(jìn)來(lái)使用。一般來(lái)說(shuō),會(huì)提供一個(gè)比較重的客戶端或者一個(gè)庫(kù)讓你去使用,這是我們的微服務(wù)時(shí)代典型的中間件的一個(gè)使用方式。但是在今天,在我們?cè)圃脑絹?lái)越普及的這樣一個(gè)現(xiàn)狀下,有沒(méi)有像 Sidecar 這樣一個(gè)機(jī)制的存在?
今天的中間件實(shí)際上是大量的通過(guò) Sidecar 方式去被使用到的,所以我的應(yīng)用本身不需要再去引入一個(gè)庫(kù),或者引入一個(gè)特定的框架來(lái)去做很多事情,我甚至都不需要感知。比如說(shuō)我今天要去做流量的切分,我不需要說(shuō)在應(yīng)用里面去引入這么一個(gè)庫(kù)去做,而是完全交給我的基礎(chǔ)設(shè)施,交給云去做。
那么應(yīng)用跟云的交互,就通過(guò)一個(gè)叫 Sidecar 的一個(gè)旁路容器,讓這個(gè)容器去代理應(yīng)用本身所需要的進(jìn)出流量,所以云就可以非常容易地通過(guò)這樣一個(gè)代理,調(diào)節(jié)流量、做流量切分,這就是非常簡(jiǎn)單的 Service Mesh 的原理。
今天,中間件能力不斷通過(guò)這樣一個(gè)方式在下沉,它會(huì)帶來(lái)一個(gè)非常明顯的趨勢(shì),即中間件不再與業(yè)務(wù)相關(guān)了,不再與程序的編寫(xiě)語(yǔ)言相關(guān)了,也不需要對(duì)框架有什么依賴。它的實(shí)現(xiàn)跟 K8s 容器化這套體系會(huì)非常的緊密結(jié)合。另外,我對(duì) Sidecar 的依賴也會(huì)更多,所以說(shuō)相應(yīng)的對(duì) Sidecar 的管理能力也在逐步去提高要求。我們可以把它總結(jié)為應(yīng)用中間件能力的進(jìn)一步下沉。
層出不窮的云原生服務(wù)
除此之外,伴隨著云原生整套體系的不斷發(fā)展,我們會(huì)看到,云服務(wù)在大量的、頻繁地向云原生生態(tài)去靠攏,甚至說(shuō)帶來(lái)一些革命性的影響。
比如說(shuō),今天阿里云的云原生數(shù)據(jù)庫(kù),它實(shí)際上就是基于云原生提到的核心的思想理念,比如說(shuō)無(wú)限彈性、高度可擴(kuò)展,提出了一個(gè)全新的數(shù)據(jù)庫(kù)架構(gòu),使得數(shù)據(jù)庫(kù)的本身非常容易去擴(kuò)展,能夠去應(yīng)付極高的、極為苛刻的流量和海量的數(shù)據(jù)處理需求,滿足今天現(xiàn)代互聯(lián)網(wǎng)應(yīng)用的數(shù)據(jù)庫(kù)使用的訴求。
再比如說(shuō)阿里云基礎(chǔ)設(shè)施,它能夠給我們帶來(lái)極致的資源使用效率,減少了很多層的虛擬化的性能損耗,讓容器本身具有彈性,非常容易地去運(yùn)維部署和管理,并且通過(guò)安全容器,通過(guò)更強(qiáng)的安全邊界,保證容器之間的隔離,使隔離性是足夠的。它能夠?yàn)槿萜鲙?lái)極致的物理級(jí)別的網(wǎng)絡(luò)存儲(chǔ)和計(jì)算性能,這是非常重要的,也是我們的應(yīng)用通過(guò)云原生的理念去使用云計(jì)算服務(wù)的一個(gè)非常典型的例子。
再比如說(shuō)像亞馬遜云科技,它讓我們的芯片本身能夠去更容易或者說(shuō)更直接的去適配容器化應(yīng)用的使用方式。因?yàn)橐粋€(gè)容器可能只有一個(gè)非常獨(dú)立或者說(shuō)非常模塊化的一個(gè)進(jìn)程在跑,那我就可以用芯片的核心去適配這樣的一個(gè)業(yè)務(wù),把我的基礎(chǔ)設(shè)施的能力發(fā)揮得更強(qiáng),把能力發(fā)揮到極致,同時(shí)保證像這樣的核心之間的干擾是非常少的,更適應(yīng)容器化微服務(wù)的應(yīng)用的使用方式。
比如亞馬遜云科技最近推出一個(gè)云原生應(yīng)用部署引擎,它可以用我們這種完全一致的方式去部署任何的這種云服務(wù)或者是容器服務(wù),這都是能夠去幫助我們利用云的能力去提升應(yīng)用管理交付運(yùn)維效率的一個(gè)非常典型的產(chǎn)品。
所以我們看這些產(chǎn)品也好,去看所謂開(kāi)源項(xiàng)目也好,當(dāng)我們想要去思考這樣一個(gè)問(wèn)題,說(shuō)我這個(gè)云產(chǎn)品是不是所謂的云原生,是不是云原生的技術(shù),其實(shí)非常簡(jiǎn)單。只要判斷一下它能不能幫助我的應(yīng)用最大程度地去利用云計(jì)算降本提效,能不能通過(guò)這樣的方式釋放最大的業(yè)務(wù)價(jià)值,這個(gè)是判斷一項(xiàng)技術(shù),或者說(shuō)一個(gè)產(chǎn)品是不是去把它定位為云原生的一個(gè)非常核心的一個(gè)標(biāo)準(zhǔn),而不是說(shuō)去看這個(gè)產(chǎn)品是容器與否。
阿里巴巴云原生化
回到我們阿里巴巴本身的例子來(lái)講,我們可以看到這么一個(gè)事實(shí),今天阿里巴巴的基礎(chǔ)設(shè)施已經(jīng)基于像 Kubernetes 容器這樣整套技術(shù),完成了我們所謂的云原生化。而真正我們回過(guò)頭來(lái)看這樣一件事情,我們會(huì)發(fā)現(xiàn)其實(shí)云原生本身給阿里巴巴自己帶來(lái)了非常重要的一些變革。
第一個(gè)我們對(duì)業(yè)務(wù)研發(fā),通過(guò)前面講到的云原生的思想,很好地做到了關(guān)注點(diǎn)分離,研發(fā)更專注于業(yè)務(wù)。通過(guò)云原生的這種標(biāo)準(zhǔn)的交付方式,我們還提出了像云原生標(biāo)準(zhǔn)交付的規(guī)范,去標(biāo)準(zhǔn)化地、模塊化地進(jìn)行可持續(xù)交付,兼顧用戶體驗(yàn)和靈活度,從而大幅提升業(yè)務(wù)的研發(fā)效能,讓他們完全關(guān)注于自己的業(yè)務(wù),不需要再去接觸到復(fù)雜的基礎(chǔ)設(shè)施,這個(gè)是云原生給業(yè)務(wù)研發(fā)帶來(lái)一個(gè)最大的價(jià)值。
再比如說(shuō)對(duì)大量的業(yè)務(wù)運(yùn)維和 SRE 來(lái)說(shuō),云原生體系所提供的這種敏捷運(yùn)維高效運(yùn)營(yíng)的這套理念,以及它的技術(shù)實(shí)現(xiàn),包括前面講的輕量級(jí)的容器不可變、基礎(chǔ)設(shè)施、高度自動(dòng)化的應(yīng)用本身和運(yùn)維方式,都能夠讓我們今天的軟件運(yùn)維變得極其簡(jiǎn)單、極其高效,尤其相比于之前的傳統(tǒng)方式,基于容器的基于自動(dòng)化的一個(gè)方式,能夠極高地提高我們的運(yùn)維自動(dòng)化程度,大量減少人工介入,提升我們操作的并發(fā)度,真正意義上的實(shí)現(xiàn)所謂的把復(fù)雜留給系統(tǒng),把簡(jiǎn)單留給用戶,這就是我們今天云原生的體系。
那么更不用說(shuō)今天容器化之后,比如淘寶這類的應(yīng)用,去做水平擴(kuò)容和升級(jí)都是非??旖?、非常高效的,而不是說(shuō)升級(jí)一下淘寶,你的手機(jī)應(yīng)用就掛了,在云原生時(shí)代這事不再會(huì)發(fā)生了。
另外一個(gè)例子是對(duì)基礎(chǔ)設(shè)施來(lái)說(shuō),通過(guò)阿里今天使用的神龍裸金屬的實(shí)力,加上我們的安全容器,能夠去幫助我們極大地提升今天數(shù)據(jù)中心的使用資源效率,我們叫提升資源效能。尤其是它能夠去支持我們極高密度地去部署安全容器,利用規(guī)模效應(yīng),降低資源碎片??梢匀ジ鶕?jù)你的工作負(fù)載的不同形態(tài),去放心地填資源的碎片,因?yàn)橛猩颀埥饘偎晕覀兡軌虼_保這樣做,依然有極高的業(yè)務(wù)的運(yùn)行效率,同時(shí)不會(huì)互相之間有任何干擾。這些都是在今天云原生的環(huán)境下,這項(xiàng)基礎(chǔ)設(shè)施所能夠給我們帶來(lái)的一個(gè)非常重要的一套變革,甚至說(shuō)對(duì)于阿里巴巴的這樣一個(gè)組織,隨著云原生技術(shù)的引入和發(fā)展,也帶來(lái)了一個(gè)非常好的變化,讓阿里巴巴的技術(shù)棧標(biāo)準(zhǔn)化開(kāi)放,能夠跟生態(tài)無(wú)縫集成,也能夠降低研發(fā)成本,讓整個(gè)體系的可靠性和研發(fā)效率都有一個(gè)很好的提高。
而另一方面,隨著自身基礎(chǔ)設(shè)施的標(biāo)準(zhǔn)化,阿里巴巴的技術(shù)正在飛快地進(jìn)入到開(kāi)源社區(qū)當(dāng)中。今天阿里巴巴是 CNCF 里面開(kāi)源項(xiàng)目最多的一個(gè)公司,遠(yuǎn)遠(yuǎn)領(lǐng)先于任何一個(gè)廠商和其他一些組織。這里一個(gè)關(guān)鍵原因就在于,今天阿里巴巴的技術(shù)是跟生態(tài)無(wú)縫對(duì)接的,所以我們才能夠積極去參與這樣的一個(gè)更廣泛的開(kāi)源生態(tài),把阿里的開(kāi)源技術(shù)輸出出去,甚至說(shuō)這引領(lǐng)和影響了整個(gè)業(yè)界生態(tài)的發(fā)展過(guò)程,這個(gè)都是阿里巴巴的云原生化之后,我們看到的實(shí)實(shí)在在的一個(gè)變化。
總結(jié)
如果我們回顧一下今天講的云原生這套理念,可以發(fā)現(xiàn)它實(shí)際上是一套架構(gòu)到技術(shù)到產(chǎn)品的不斷演進(jìn)的過(guò)程。從架構(gòu)上來(lái)講,云原生認(rèn)為軟件天然生于云上、長(zhǎng)于云上,能夠最大化的利用云的能力;另外一方面區(qū)別于傳統(tǒng)的模式,云原生能夠讓開(kāi)發(fā)者享受到紅利,能夠去引領(lǐng)它的軟件和應(yīng)用本身去不斷的現(xiàn)代化。
而圍繞這種架構(gòu)和理念,我們有一系列的技術(shù),這里面有開(kāi)源的,有自研的,但是它背后的邏輯和思想是高度一致的。圍繞著基礎(chǔ)設(shè)施、應(yīng)用架構(gòu)、開(kāi)發(fā)運(yùn)維交付的場(chǎng)景,通過(guò)云原生技術(shù)讓系統(tǒng)更加可靠,具有彈性,有更好的容錯(cuò)性,并且組件之間松耦合易管理,可觀測(cè)性做得更好,從而充分地去把云的能力透出來(lái)。云原生能夠釋放云的最大潛力,其實(shí)它的背后往往離不開(kāi)云原生本質(zhì)的這套理念和技術(shù)的支持,以這些理念和架構(gòu)為代表的,像容器、不可變基礎(chǔ)設(shè)施等等,他們其實(shí)是我們?nèi)ヂ涞卦圃锩娴囊粋€(gè)高效的手段。
而圍繞這些手段本身,我們才有了這樣各種各樣的云原生理念加持下的產(chǎn)品,包括云原生數(shù)據(jù)庫(kù)、云原生服務(wù)產(chǎn)品、中間件、函數(shù)計(jì)算、容器等等一系列的開(kāi)放標(biāo)準(zhǔn),能夠去彈性,能夠去利用云的價(jià)值的,能夠去讓用通過(guò)云本身更好的服務(wù)的應(yīng)用研發(fā)運(yùn)維和應(yīng)用交付人員的這樣一系列的產(chǎn)品,那么他們都是能夠非常明顯地區(qū)別于傳統(tǒng)的云計(jì)算服務(wù)提供的形態(tài)。
所以我們會(huì)看到未來(lái)的云會(huì)更多地向 Service 化、SaaS 化、服務(wù)化的方式去演進(jìn),而較少地去專注在基礎(chǔ)設(shè)施這一層,因?yàn)槲覀冋嬲挠脩絷P(guān)注點(diǎn),其實(shí)在它的應(yīng)用能否發(fā)揮最大的業(yè)務(wù)價(jià)值這個(gè)問(wèn)題上面的。
未來(lái)的整個(gè)演進(jìn)趨勢(shì),它其實(shí)都伴隨著一個(gè)非常重要的點(diǎn),就是說(shuō)云的能力在不斷地越變?cè)截S富,這是非常重要的。之所以在過(guò)去,我們的整個(gè)軟件架構(gòu)本身它會(huì)需要大量的,比如說(shuō)傳統(tǒng)中間件,甚至一些微服務(wù)框架或者是 PaaS,去幫助我們更好地的管理軟件,它的背后非常重要的原因在于云或者說(shuō)基礎(chǔ)設(shè)施能力不夠強(qiáng)。比如說(shuō)我今天就想要一個(gè)藍(lán)綠發(fā)布的能力,而很多云在很長(zhǎng)一段時(shí)間內(nèi)是不具備這個(gè)能力的,所以必須通過(guò)某種中間件或者某種框架來(lái)幫你去解決,但今天不是這樣。今天我們的云幾乎能做到你想象到的任何一種應(yīng)用所需要的管理能力,甚至應(yīng)該說(shuō)云的能力其實(shí)已經(jīng)幾乎要超出了我們今天軟件架構(gòu)的大部分需求。所以在這種情況下,我必然不再需要一個(gè)額外的層,無(wú)論是傳統(tǒng)中間件,還是傳統(tǒng)的這種微服務(wù)框架或者 PaaS,去幫助彌補(bǔ)軟件的訴求跟基礎(chǔ)設(shè)施之間的鴻溝。
當(dāng)這個(gè)鴻溝越來(lái)越窄,各種各樣的云原生技術(shù)開(kāi)始出現(xiàn)。所以任何一種云原生技術(shù),它不再是某種能力的彌補(bǔ),而是更多地將云的能力以某種方式更簡(jiǎn)單、更高效地透出給我的應(yīng)用去使用。無(wú)論是容器、K8s 還是 Service Mesh,他們都是在不同的環(huán)節(jié)幫助應(yīng)用本身能夠更好地去使用云服務(wù)?;蛘哒f(shuō)使用到云背后的基礎(chǔ)設(shè)施能力,比如說(shuō) K8s 它可以讓?xiě)?yīng)用非常無(wú)感地極簡(jiǎn)地進(jìn)入到我的云的存儲(chǔ)和網(wǎng)絡(luò)當(dāng)中,使用云計(jì)算能力;Service Mesh 通過(guò) Sidecar 這樣完全無(wú)侵入的方式,讓你能夠使用云的流量控制的能力來(lái)去作為微服務(wù)治理。
未來(lái)我們的整個(gè)云計(jì)算發(fā)展,包括云原生背后的關(guān)注點(diǎn)一定也是這樣,不斷地、持續(xù)地、充分地去釋放云計(jì)算的基礎(chǔ)設(shè)施能力,到軟件的研發(fā)交付乃至整個(gè)生命周期當(dāng)中,這是非常重要的一點(diǎn)。因?yàn)槲磥?lái)云的能力一定是越來(lái)越強(qiáng),伴隨這樣一個(gè)趨勢(shì)我們才會(huì)看到,云原生一定是在逐步引領(lǐng)整個(gè)云計(jì)算生態(tài)。