“雲原生”,很多人會對這個新名詞感到困惑,到底什么是雲原生,雲原生又能給我們帶來什么呢?其實雲原生的概念最早是由來自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%。根據這個規模來看若是在大型應用雲化部署后(這里假設都是以容器實例在運行),那么這個應用數以百計或者千計的容器該如何做好全生命周期的管理,如:監控日志的采集告警、調度、以及應用模塊與模塊之間鏈路調用追蹤等將會是我們即將面臨的最大的挑戰之一。
本文聲明:
本文首發於:數棧研習社
數棧還在github有一個開源項目:FlinkX,歡迎大家一起交流~