“雲原生”,很多人會對這個新名詞感到困惑,到底什麼是雲原生,雲原生又能給我們帶來什麼呢?其實雲原生的概念最早是由來自Pivotal的MattStine於2013年首次提出,這是他根據自身多年的架構和諮詢經驗總結出來的一個思想集合,得到了開源社群的不斷完善,並被一直延續使用至今。
一、什麼是雲原生
那麼到底什麼是“雲原生”呢?我們試圖先從字面意思理解“雲(Cloud)”和“原生(Native)”。
“雲(Cloud)”這個字面意識不難理解簡單的看就是天空中漂浮的一朵雲,那麼這個“雲”放在科技環境下由從指代網路、網際網路的標識到現在的雲端計算,所以可以說“雲”在現在我們預設指代雲端計算。
“原生(Native)”字面的意識理解為本地人,那麼同樣的放到現今的科技大環境下就是指"應用所處的環境"。
所以"雲原生"可以簡單的理解為:“一個應用系統藉助雲端計算相關的周邊技術進行設計研發,從而使該應用能完美的適配雲上環境”。
雲原生計算基金會總經理Priyanka Sharma對雲原生的解釋為:“雲原生技術是指工程師和軟體人員利用雲端計算構建更快、更有彈性的技術,這樣做是為了快速滿足客戶的需求”。
而官網(CNCF)上則將雲原生的定義概況為:服務網格、宣告式API、不可變基礎設施、微服務、容器這五大特徵,這也成了很多人對雲原生的基礎印象。
總結來說,雲原生就是一個快速構建應用的理念,一種快速交付應用的技術集合。
雲原生還有一個非常重要的知識點,那就是雲原生基金會,畢竟雲原生這個理念需要落地推行的話還是需要靠眾人來拾材,CNCF(雲原生計算基金會)致力於培育和維護一個廠商中立的開源生態系統,來推廣雲原生技術,可以說CNCF的主要目的是培育雲原生工具市場。
目前CNCF基金會開放的相關專案圖如下:
CNCF基金會的會員大致如下:
二、雲原生的代表技術
上文提到過雲原生是一種理念,一個技術棧的集合。那麼相對應的技術棧主要有:容器、服務網格、微服務、不可變基礎設施和宣告式API。
容器 :容器是與系統其他部分隔開的一系列程式。執行這些程式所需的所有檔案都由一個映象提供,這意味著從開發到測試再到生產的整個過程中,容器都具有可移植性和一致性。簡單的說容器就是存放應用和應用相關依賴的“獨立集裝箱”,根據運送的貨物的不同特性可以制定多種集裝箱型別(即容器映象)
服務網格 :服務網格簡單的說可以看做是我們平時用的代理軟體,但這個代理軟體又更加的智慧。Service Mesh可以看做是傳統代理的升級版,用來解決現在微服務框架中出現的問題,可以把 Service Mesh看做是分散式的微服務代理。
微服務 :將應用程式構造為一組鬆散耦合的服務。在微服務體系結構中,服務是細粒度的,協議是輕量級的。簡單的說就是其中單個應用程式由許多鬆散耦合且可獨立部署的較小元件或服務組成。
不可變基礎設施:這裡基礎設施可以理解為一個應用執行所需要的基本需求,不可變性最基本的就是指執行服務的伺服器在完成部署後,就不在進行更改。這裡指代容器映象。
宣告式API:描述最終執行環境的狀態,而由系統來決定如何來建立這個環境。例如,你的描述就變成“建立一個有三個Nginx的叢集”,而不是把建立Nginx的命令執行三次組成一個叢集。這樣的好處是當執行環境與描述不符合時,系統能檢測到差異,並自動修復,這樣系統就有了自動容錯的功能。
這些技術能夠構建容錯性好、易於管理和便於觀察的松耦合系統。結合可靠的自動化手段,雲原生技術使工程師能夠輕鬆地對系統作出頻繁和可預測的重大變更。
三、雲原生能帶來什麼
在去年IDC(網際網路資料中心)對企業的調研中,有將近70%已經將雲策略落地,卻只有3%能帶來明顯的獲利突破,差異就在技術面的“雲實踐成熟度”也就是雲原生化。
MSP團隊(基礎設施平臺服務商)在面對一個雲化專案時大致的流程,首先需要做相關的業務系統的調研,然後選擇相對應的雲平臺,然後給出相關的雲化方案,最後根據方案對業務系統進行遷移或者雲化的改造。但是面對混合雲或多雲環境的下雲特色存在差異性,導致了在雲實踐上的差異性。
而云原生化的雲服務平臺,不僅能夠顯著的降低基礎建設與管理成本、提高佈署靈活性與可擴充性,而且還有較高的安全性。
在微服務化方面:雲原生將應用程式程式碼解耦成獨立模組化單元,降低微服務的部屬時間與互依性,提高應用的擴充套件性等。
在容器化包裝方面:過去程式開發者可能需要建立多個虛擬機器好讓不同的應用程式運作,但程式容器化讓多個應用程式得以存在同一操作環境中,開發人員將程式碼、微服務放置在可複製、搬移的容器中,輕鬆地複製、釋出到任意雲平臺,多個容器間不會互相干擾(沙盒機制),不僅減少管理工作還能更有效地利用硬體資源,實現更快的持續整合、交付與釋出。
在動態管理方面 :透過集中的編排排程系統進行動態管理和排程,達到高速、低風險、迅速擴充套件和部署的方式,進行應用或服務的構建、測試、部署。
藉助以上優勢以及相對一致的實踐方式,雲原生能快速的打通各家雲環境的壁壘,企業可以對市場變化做出最快的反應,使得新創雲原生企業擁有能不斷顛覆傳統企業的威力。
四、雲原生的挑戰
根據CNCF的統計自2016年以來,生產中使用容器的數量增加了300%。根據這個規模來看若是在大型應用雲化部署後(這裡假設都是以容器例項在執行),那麼這個應用數以百計或者千計的容器該如何做好全生命週期的管理,如:監控日誌的採集告警、排程、以及應用模組與模組之間鏈路呼叫追蹤等將會是我們即將面臨的最大的挑戰之一。