什么是云原生?

云原生(Cloud Native)是最近技術圈一個比較火的名詞,相信大家或多或少都聽說過。不過對于大多數(shù)普通研發(fā)朋友來說,"云原生"這個詞多少可能還是有些陌生,以至于剛開始聽到這個詞時可能還會一臉懵逼的問"這到底是一個什么技術,我用過嗎?"這樣的問題。
其實這并不奇怪,因為對于絕大多數(shù)普通開發(fā)者來說,我們大部分時間都是在別人構建的基礎設施里專注于業(yè)務代碼的開發(fā),而很少關心業(yè)務應用運行所依賴的基礎設施環(huán)境,但這恰恰也是構建云原生應用的核心意義所在。在今天的文章中,就和大家聊一聊關于云原生的話題!
云原生的概念

什么是云原生?對于這個問題我們需要理解,云原生并不是指某一項具體的技術,而是一組技術體系、概念及系統(tǒng)設計原則的集合。例如我們常討論的微服務架構、Kubernetes容器編排、Devops等內(nèi)容都是云原生體系的組成部分。
從這個角度看,對于目前已經(jīng)實現(xiàn)了云服務部署、Spring Cloud微服務架構體系、Kubernetes容器化部署、且構建起了一套自動化發(fā)布系統(tǒng)的公司來說,事實上就已經(jīng)是在踐行云原生架構理念了。所以,你看是不是很多公司其實都已經(jīng)在實施云原生架構了呢?
根據(jù)CNCF(云原生計算基金會)的官方描述,云原生技術是指有利于在公有云、私有云或混合云等新型動態(tài)環(huán)境下,實現(xiàn)應用可彈性伸縮部署的技術體系。云原生的代表技術主要包括容器、服務網(wǎng)格、微服務、不可變基礎設施及聲明式API。利用這些技術可以構建出容錯性更好、更易于管理和觀察的松耦合系統(tǒng),再加上一些可靠的自動化技術及完備的監(jiān)控預警體系,云原生技術將使開發(fā)人員能更快速、輕松地迭代和交付軟件系統(tǒng)。
所以從上述描述看,云原生技術實際上并不是突然才流行起來的概念,而是隨著云計算、微服務架構、服務網(wǎng)格等分布式應用架構技術普及流行,以及在以Docker、Kubernetes為代表的容器化技術的推動下,逐步被業(yè)界所認可的一種系統(tǒng)架構理念及設計原則的抽象總結。
云原生技術圖譜

這里我總結了一份關于云原生架構的技術圖譜供大家參考,如下圖所示:

如上圖所示,你會發(fā)現(xiàn)所謂的云原生簡直就是一個技術大雜燴,它幾乎囊括目前大部分流行的后端技術,甚至還延伸到了AI、機器學習、邊緣計算等領域。但從實際應用場景來說云原生架構主要特征還是體現(xiàn)在云端環(huán)境、微服務架構、服務網(wǎng)格、Devops自動化交付、容器化部署這幾個方面。
云端環(huán)境就是要使用云服務器,對于大部分公司來說就是使用阿里云、騰訊云之類的公有云服務來部署應用,而不是自己在額外維護一套復雜服務器機房。這樣做的好處就在于利用云服務的彈性及分布式優(yōu)勢,可以大大降低運維成本,并且提升服務的穩(wěn)定性。
而面向微服務的架構,能將原先耦合度高的單體系統(tǒng),在遵循軟件“高內(nèi)聚、低耦合”設計原則的前提下,以獨立業(yè)務能力為邊界拆分為一個個原子系統(tǒng)。這樣做的好處是,每個子系統(tǒng)都可以獨立交付部署,從而能實現(xiàn)更敏捷的軟件迭代效果。目前以Spring Cloud為代表的微服務技術,幾乎已成為事實上的軟件構建標準;而以Istio、Linkerd為代表的下一代服務網(wǎng)格技術也在快速發(fā)展,這一切都為云原生架構理念的普及作了有效地鋪墊。
關于Devops,它強調(diào)的是以開發(fā)運維的視角,去構建一套高效完備的CI/CD流程,并通過自動化構建工具及發(fā)布系統(tǒng),來實現(xiàn)軟件生命周期的管理。從而使得普通開發(fā)人員,能夠更快、更頻繁地交付更加穩(wěn)定的軟件代碼。例如我在本專欄發(fā)表的<<Kubernetes微服務自動化發(fā)布系統(tǒng)>>實際上就是一種Devops思想的具體實踐案例,感興趣的朋友可以參考下。
此外基于Kubernetes的容器化編排技術,已經(jīng)事實上成為微服務運行的標準基礎架構環(huán)境,也正是Kubernetes的流行,才真正推動了云原生架構理念的普及,Kubernetes可以說就是云原生架構的核心承載平臺。關于Kubernetes的基本原理及具體實踐本專欄也有一些文章可供參考,感興趣的朋友可以閱讀下。
總結

以上內(nèi)容給大家大致介紹了下云原生的概念,并總結了目前云原生所涉及的主流技術棧圖譜。從宏觀上看云原生架構是一個非常龐大的體系,它幾乎能包含目前軟件后端技術領域的方方面面,但從細節(jié)上看它卻又是我們現(xiàn)階段工作中都多少能接觸到的技術,例如Spring Cloud微服務、服務熔斷限流、Kubernetes容器編排等等。
所以從某種程度上講,云原生是一個抽象又具體的存在。它不是一個具體的產(chǎn)品,而是一套技術體系和一套方法論,隨著圍繞著云原生架構的各類開源技術的進一步發(fā)展,云原生技術體系必將成為主流,進而影響到每一個技術人員、每一個企業(yè)和行業(yè)。
以上就是想和大家分享的全部內(nèi)容,希望對大家有所幫助!
—————END—————
參考資料:
https://jimmysong.io/awesome-cloud-native
https://landscape.cncf.io/
https://jimmysong.io/awesome-cloud-native/#tracing
