雲原生,不同的組織有不同的定義,但綜合起來大致意思是:使用開源技術棧開發微服務架構的應用,並容器化部署在動態變化的雲環境中,以充分利用雲環境提供的一系列優勢。所以,雲原生架構指的是一個架構體系,而不只是某種單一的應用架構,而雲原生應用呢,是指充分利用雲環境所提供優勢的應用,這些應用從一開始的設計就要考慮到雲環境的特點,生在雲上,長在雲上,是雲計算環境的原住民。
雲原生是雲計算發展到一定階段才提出的概念,和雲計算服務推出的時間相比,大概后推了十年。這是可以理解的,因為在雲計算發展的初期,雲計算的各種功能都不是很成熟,大家都是摸索着前進。而當雲計算趨於成熟的時候,越來越多的應用上雲、雲化,這時候就需要考慮怎樣的使用方式才能最大發揮出雲計算的價值,雲原生的概念也就應運而生了。
說到雲原生,首先繞不開的是Kubernetes項目,它是雲原生計算基金會(CNCF)孵化后最先畢業的項目,是容器編排領域事實上的標准,所有的其它雲原生項目,幾乎都是圍繞它而發展。Kubernetes不僅僅編排和調度容器,而且抽象出了部署系統里面需要涉及的各種資源對象,上層只需要操作這些資源對象來完成部署,從而達到將底層異構的硬件基礎設施標准化的目的。不同的基礎設施標准化后,各個廠商可以基於此構建自己的PaaS平台,這樣也能提高應用在不同PaaS平台中的移植性。從某種程度上來說,你可以認為Kubernetes是一個分布式操作系統或者是一個雲操作系統的內核,各家雲廠商都基於同樣的操作系統內核去進行擴展、定制,從而為用戶提供具有差異化的操作系統界面。
那么我們所說的雲原生架構,就包括了這個分布式操作系統本身的架構,以及基於此操作系統進行的其它各種應用、內核擴展組件的架構。這里的內核組件,並不是真正的Linux或Windows的系統內核,只是一種類比。因為我們說Kubernetes是操作系統內核,那么圍繞它提供服務的存儲、網絡組件,就可以看成是對這個內核的擴展組件。我們基於這個操作系統開發的微服務應用,使用了底層存儲、網絡組件提供的服務,充分利用了雲計算環境提供的優勢,那么這種微服務應用架構也就符合了雲原生架構所倡導的理念。
對於要學習和了解雲原生的技術同仁來說,首先要了解雲計算的基本概念和技術,然后根據實際需要,適當學習Kubernetes,以及圍繞着Kubernetes而發展的其它一些項目,這樣才會有一個全局的視角。對於一個架構師或一個企業的技術領導者來說,需要思考怎樣構建企業的基礎架構和應用架構,那么全局的視角是非常重要的,所謂不謀全局者不足以謀一域,說的就是這個意思,還沒體會到的朋友,隨着你逐漸地成長,慢慢就體會到了。
可能有人就質疑了,雲原生架構,真的有那么神嗎,真的值得去關注嗎?我一向喜歡化繁為簡,所以這么說吧,雲原生架構體系,應該是未來5年到10年的架構方向,而在這期間,Kubernetes會逐漸成為雲操作系統,當90%的人都采用這種新的操作系統來跑應用的時候,對於那10%的人來說,就好比如90%的同行都在使用Win7或Win10系統了,而你還在堅持使用XP甚至Dos系統!從這個角度來看,你是不是似乎明白了點什么。
歡迎微信掃碼關注【技術人成長】視頻號,與你分享更多技術人成長的心法,我們視頻上見!
