CNCF 官方大使張磊:什麼是雲原生?

做者|張磊 阿里雲容器平臺高級技術專家,CNCF 官方大使git

編者說:github

從 2015 年 Google 牽頭成立 CNCF 以來,雲原生技術開始進入公衆的視線並取得快速的發展,到 2018 年包括 Google、AWS、Azure、Alibaba Cloud 等大型雲計算供應商都加入了雲原生基金會 CNCF,雲原生技術也從原來的應用容器化發展出包括容器、Service Mesh、微服務、不可變基礎設施、Serverless、FaaS 等衆多技術方向,CFCF 旗下也囊括了越來多的開源項目。數據庫

Kubernetes 做爲 CNCF 的第一個項目從誕生之初就就使人矚目,Kubernetes 由 Google 工程師基於 Google 內部多年集羣管理系統 Borg 的設計經驗,結合雲計算時代的基礎設施特色從新設計而得,旨在幫助企業解決大規模 IT 基礎設施的應用容器編排難題。Google 在 2014 年 6 月開源 Kubernetes 之後,在 Redhat、Microsoft、Alibaba 等廠商和衆多開源愛好者共同的努力下,成長爲現在容器編排領域的事實標準,極大的推進了雲原生領域的發展。設計模式

在系統介紹什麼是雲原生,雲原生對開發者來講意味着什麼,咱們先從雲原生技術發展簡史開始講起。安全

雲原生技術發展簡史

1

  • 2004 年— 2007 年,Google 已在內部大規模地使用像 Cgroups 這樣的容器技術;
  • 2008 年,Google 將 Cgroups 合併進入了 Linux 內核主幹;
  • 2013 年,Docker 項目正式發佈。
  • 2014 年,Kubernetes 項目也正式發佈。這樣的緣由也很是容易理解,由於有了容器和 Docker 以後,就須要有一種方式去幫助你們方便、快速、優雅地管理這些容器,這就是 Kubernetes 項目的初衷。在 Google 和 Redhat 發佈了 Kubernetes 以後,這個項目的發展速度很是之快。
  • 2015 年,由Google、Redhat 以及微軟等大型雲計算廠商以及一些開源公司共同牽頭成立了 CNCF 雲原生基金會。CNCF 成立之初,就有 22 個創始會員,並且 Kubernetes 也成爲了 CNCF 託管的第一個開源項目。在這以後,CNCF 的發展速度很是迅猛;
  • 2017 年,CNCF 達到 170 個成員和 14 個基金項目;
  • 2018 年,CNCF 成立三週年有了 195 個成員,19 個基金會項目和 11 個孵化項目,如此之快的發展速度在整個雲計算領域都是很是罕見的。

雲原生技術生態現狀

所以,現在咱們所討論的雲原生技術生態是一個龐大的技術集合。CNCF 有一張雲原生全景圖(https://github.com/cncf/landscape),在這個全景圖裏已經有 200 多個項目和產品了,這些項目和產品也都是和 CNCF 的觀點所契合的。服務器

2

因此,若是以這張全景圖做爲背景,加以思考就會發現,咱們今天所討論的雲原生其實主要談論瞭如下幾點:微信

  1. 雲原生基金會 —— CNCF;

CNCF (雲原生基金會)是目前雲計算領域最成功的 開源基金會之一,是 Kubernetes,containerd,etcd ,Envoy 等知名開源項目的託管基金會網絡

  1. 雲原生技術社區

CNCF 目前託管的 20 + 正式項目共同構成了現代雲 計算生態的基石。其中 Kubernetes 項目是全世界第 四活躍的開源項目架構

  1. 雲原生技術產業

除了前面兩點以外,如今全球各大公有云廠商都已經支持了 Kubernetes。此外,還有 100 多家技術創業公司也在持續地進行投入,整體市場於2021年逼近 1000 億美圓。如今阿里巴巴也在全面上雲,並且上雲就要上雲原生,這也是各大技術公司擁抱雲原生的一個例子。less

咱們正處於時代的關鍵節點

3 2019 年正是雲原生時代的關鍵節點,爲何這麼說?咱們這裏就爲你們簡單梳理一下。

從 2013 年 Docker 項目發佈開始提及,Docker 項目的發佈使得全操做系統語義的沙盒技術唾手可得,使得用戶可以更好地、更完整地打包本身的應用,使得開發者能夠垂手可得的得到了一個應用的最小可運行單位,而不須要依賴任何 PaaS 能力。這對經典 PaaS 產業實際上是一個「降維打擊」。

2014 年的時候,Kubernetes 項目發佈,其意義在於 Google 將內部的 Borg/Omega 系統思想借助開源社區實現了「重生」,而且提出了「容器設計模式」的思想。而 Google 之因此選擇間接開源 Kubernetes 而不是直接開源 Borg 項目,其實背後的緣由也比較容易理解:Borg/Omega 這樣的系統太複雜了,是沒辦法提供給 Google 以外的人使用,可是 Borg/Omega 這樣的設計思想卻能夠藉助 Kubernetes 讓你們接觸到,這也是開源 Kubernetes 的重要背景。

這樣到了 2015 年到 2016 年,就到了容器編排「三國爭霸」的時代,當時 Docker、Swarm、Mesos、Kubernetes 都在容器編排領域展開角逐,他們競爭的緣由其實也比較容易理解, 那就是 Docker 或者容器自己的價值雖然大,可是若是想要讓其產生商業價值或者說對雲的價值,那麼就必定須要在編排上面佔據一個有利的位置。

Swarm 和 Mesos 的特色,那就是各自只在生態和技術方面比較強,其中,Swarm 更偏向於生態,而 Mesos 技術更強一些。相比之下, Kubernetes 則兼具了二者優點,最終在 2017 年「三國爭霸」的局面中得以勝出,成爲了當時直到如今的容器編排標準。這一過程的表明性事件就是 Docker 公司宣佈在覈心產品中內置了 Kubernetes 服務,而且 Swarm 項目逐漸中止維護。

到了 2018 年的時候,雲原生技術理念開始逐漸萌芽,這是由於此時 Kubernetes 以及容器都成爲了雲廠商的既定標準,以「雲」爲核心的軟件研發思想逐步造成。

而到了 2019 年,狀況彷佛又將發生一些變化。

4

什麼是「雲原生」?雲原生該怎麼落地?

雲原生的定義

5

不少人都會問「到底什麼是雲原生?」

實際上,雲原生是一條最佳路徑或者最佳實踐。更詳細的說,雲原生爲用戶指定了一條低心智負擔的、敏捷的、可以以可擴展、可複製的方式最大化地利用雲的能力、發揮雲的價值的最佳路徑。

所以,雲原生實際上是一套指導進行軟件架構設計的思想。按照這樣的思想而設計出來的軟件:首先,自然就「生在雲上,長在雲上」;其次,可以最大化地發揮雲的能力,使得咱們開發的軟件和「雲」可以自然地集成在一塊兒,發揮出「雲」的最大價值。

因此,雲原生的最大價值和願景,就是認爲將來的軟件,會從誕生起就生長在雲上,而且遵循一種新的軟件開發、發佈和運維模式,從而使得軟件可以最大化地發揮雲的能力。說到了這裏,你們能夠思考一下爲何容器技術具備革命性?

其實,容器技術和集裝箱技術的革命性很是相似,即:容器技術使得應用具備了一種「自包含」的定義方式。因此,這樣的應用才能以敏捷的、以可擴展可複製的方式發佈在雲上,發揮出雲的能力。這也就是容器技術對雲發揮出的革命性影響所在,因此說,容器技術正是雲原生技術的核心底盤。

雲原生的技術範疇

6

雲原生的技術範疇包括瞭如下幾個方面:

  • 第一部分是雲應用定義與開發流程。這包括應用定義與鏡像製做、配置 CI/CD、消息和 Streaming 以及數據庫等。
  • 第二部分是雲應用的編排與管理流程。這也是 Kubernetes 比較關注的一部分,包括了應用編排與調度、服務發現治理、遠程調用、API 網關以及 Service Mesh。
  • 第三部分是監控與可觀測性。這部分所強調的是雲上應用如何進行監控、日誌收集、Tracing 以及在雲上如何實現破壞性測試,也就是混沌工程的概念。
  • 第四部分就是雲原生的底層技術,好比容器運行時、雲原生存儲技術、雲原生網絡技術等。
  • 第五部分是雲原生工具集,在前面的這些核心技術點之上,還有不少配套的生態或者周邊的工具須要使用,好比流程自動化與配置管理、容器鏡像倉庫、雲原生安全技術以及雲端密碼管理等。
  • 最後則是 Serverless。Serverless 是一種 PaaS 的特殊形態,它定義了一種更爲「極端抽象」的應用編寫方式,包含了 FaaS 和 BaaS 這樣的概念。而不管是 FaaS 仍是 BaaS,其最爲典型的特色就是按實際使用計費(Pay as you go),所以 Serverless 計費也是重要的知識和概念。

雲原生思想的兩個理論

7

在瞭解完雲原生的技術範疇以後你就會發現,其所包含的技術內容仍是不少的,可是這些內容的技術本質倒是相似的。雲原生技術的本質是兩個理論基礎。

  • 第一個理論基礎是:不可變基礎設施。這一點目前是經過容器鏡像來實現的,其含義就是應用的基礎設施應該是不可變的,是一個自包含、自描述能夠徹底在不一樣環境中遷移的東西;
  • 第二個理論基礎就是:雲應用編排理論。當前的實現方式就是 Google 所提出來的「容器設計模式」,這也是 Kubernetes 部分文章中所需主要講述的內容。

基礎設施向雲演進的過程

8

首先爲你們介紹一下「不可變基礎設施」的概念。其實,應用所依賴的基礎設施也在經歷一個向雲演進的過程,舉例而言,對於傳統的應用基礎設施而言,其實每每是可變的。

你們可能常常會幹這樣一件事情,好比須要發佈或者更新一個軟件,那麼流程大體是這樣的,先經過 SSH 連到服務器,而後手動升級或者降級軟件包,逐個調整服務器上的配置文件,而且將新代碼直接都部署到現有服務器上。所以,這套基礎設施會不斷地被調整和修改。

可是在雲上,對「雲」友好的應用基礎設施是不可變的。

這種場景下的上述更新過程會這麼作:一旦應用部署完成以後,那麼這套應用基礎設施就不會再修改了。若是須要更新,那麼須要現更改公共鏡像來構建新服務直接替換舊服務。而咱們之因此可以實現直接替換,就是由於容器提供了自包含的環境(包含應用運行所需的全部依賴)。因此對於應用而言,徹底不須要關心容器發生了什麼變化,只須要把容器鏡像自己修改掉就能夠了。所以,對於雲友好的基礎設施是隨時能夠替換和更換的,這就是由於容器具備敏捷和一致性的能力,也就是雲時代的應用基礎設施。

因此,總結而言,雲時代的基礎設施就像是能夠替代的「牲口」,能夠隨時替換;而傳統的基礎設施則是獨一無二的「寵物」,須要細心呵護,這就體現出了雲時代不可變基礎設施的優勢。

基礎設施向雲演進的意義

9

因此,像這樣的基礎設施向「不可變」演進的過程,爲咱們提供了兩個很是重要的優勢。

    1. 基礎設施的一致性和可靠性。一樣一個鏡像,不管是在美國打開,在中國打開,仍是在印度打開都是同樣的。而且其中的 OS 環境對於應用而言都是一致的。而對於應用而言,它就不須要關心容器跑在哪裏,這就是基礎設施一致性很是重要的一個特徵。
    1. 這樣的鏡像自己就是自包含的,其包含了應用運行所須要的全部依賴,所以也能夠漂移到雲上的任何一個位置。

此外,雲原生的基礎設施還提供了簡單、可預測的部署和運維能力。因爲如今有了鏡像,應用仍是自描述的,經過鏡像運行起來的整個容器其實能夠像 Kubernetes 的 Operator 技術同樣將其作成自運維的,因此整個應用自己都是自包含的行爲,使得其可以遷移到雲上任何一個位置。這也使得整個流程的自動化變得很是容易。

應用自己也能夠更好地擴容,從 1 個實例變成 100 個實例,進而變成 1 萬個實例,這個過程對於容器化後的應用沒有任何特殊的。最後,咱們這時也可以經過不可變的基礎設施來地快速周圍的管控系統和支撐組件。由於,這些組件自己也是容器化的,是符合不可變基礎設施這樣一套理論的組件。

以上就是不可變基礎設施爲用戶帶來的最大的優勢。

2019 年——雲原生技術普及元年

爲何說 2019 年極可能是一個關鍵節點呢?咱們認爲 2019 年是雲原生技術的普及元年。

首先你們能夠看到,在 2019 年,阿里巴巴宣佈要全面上雲,並且「上雲就要上雲原生」。咱們還能夠看到,以「雲」爲核心的軟件研發思想,正逐步成爲全部開發者的默認選項。像 Kubernetes 等雲原生技術正在成爲技術人員的必修課,大量的工做崗位正在涌現出來。

這種背景下,「會 Kubernetes」已經遠遠不夠了,「懂 Kubernetes」、「會雲原生架構」的重要性正日益凸顯出來。 從 2019 年開始,雲原生技術將會大規模普及,這也是爲何你們都要在這個時間點上學習和投資雲原生技術的重要緣由。

10

阿里雲和 CNCF 聯合發佈了《雲原生技術公開課》,但願經過 29 節課程設置讓開發者對雲原生有全局的認知。

阿里巴巴雲原生微信公衆號(ID:Alicloudnative)關注微服務、Serverless、容器、Service Mesh等技術領域、聚焦雲原生流行技術趨勢、雲原生大規模的落地實踐,作最懂雲原生開發者的技術公衆號。

相關文章
相關標籤/搜索