天天看點

CNCF官方大使張磊:什麼是雲原生?雲原生技術發展簡史雲原生技術生态現狀我們正處于時代的關鍵節點什麼是“雲原生”?雲原生該怎麼落地?

作者|張磊 阿裡雲容器平台進階技術專家,CNCF 官方大使

編者說:

從 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 等廠商和衆多開源愛好者共同的努力下,成長為如今容器編排領域的事實标準,極大的推動了雲原生領域的發展。

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

雲原生技術發展簡史

CNCF官方大使張磊:什麼是雲原生?雲原生技術發展簡史雲原生技術生态現狀我們正處于時代的關鍵節點什麼是“雲原生”?雲原生該怎麼落地?
  • 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 的觀點所契合的。

CNCF官方大使張磊:什麼是雲原生?雲原生技術發展簡史雲原生技術生态現狀我們正處于時代的關鍵節點什麼是“雲原生”?雲原生該怎麼落地?

是以,如果以這張全景圖作為背景,加以思考就會發現,我們今天所讨論的雲原生其實主要談論了以下幾點:

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

CNCF (雲原生基金會)是目前雲計算領域最成功的

開源基金會之一,是 Kubernetes,containerd,etcd

,Envoy 等知名開源項目的托管基金會

  1. 雲原生技術社群

CNCF 目前托管的 20 + 正式項目共同構成了現代雲

計算生态的基石。其中 Kubernetes 項目是全世界第

四活躍的開源項目

  1. 雲原生技術産業

除了前面兩點之外,現在全球各大公有雲廠商都已經支援了 Kubernetes。此外,還有 100 多家技術創業公司也在持續地進行投入,總體市場于2021年逼近 1000 億美元。現在阿裡巴巴也在全面上雲,而且上雲就要上雲原生,這也是各大技術公司擁抱雲原生的一個例子。

我們正處于時代的關鍵節點

CNCF官方大使張磊:什麼是雲原生?雲原生技術發展簡史雲原生技術生态現狀我們正處于時代的關鍵節點什麼是“雲原生”?雲原生該怎麼落地?

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 年,情況似乎又将發生一些變化。

CNCF官方大使張磊:什麼是雲原生?雲原生技術發展簡史雲原生技術生态現狀我們正處于時代的關鍵節點什麼是“雲原生”?雲原生該怎麼落地?

什麼是“雲原生”?雲原生該怎麼落地?

雲原生的定義

CNCF官方大使張磊:什麼是雲原生?雲原生技術發展簡史雲原生技術生态現狀我們正處于時代的關鍵節點什麼是“雲原生”?雲原生該怎麼落地?

很多人都會問“到底什麼是雲原生?”

實際上,雲原生是一條最佳路徑或者最佳實踐。更詳細的說,雲原生為使用者指定了一條低心智負擔的、靈活的、能夠以可擴充、可複制的方式最大化地利用雲的能力、發揮雲的價值的最佳路徑。

是以,雲原生其實是一套指導進行軟體架構設計的思想。按照這樣的思想而設計出來的軟體:首先,天然就“生在雲上,長在雲上”;其次,能夠最大化地發揮雲的能力,使得我們開發的軟體和“雲”能夠天然地內建在一起,發揮出“雲”的最大價值。

是以,雲原生的最大價值和願景,就是認為未來的軟體,會從誕生起就生長在雲上,并且遵循一種新的軟體開發、釋出和運維模式,進而使得軟體能夠最大化地發揮雲的能力。說到了這裡,大家可以思考一下為什麼容器技術具有革命性?

其實,容器技術和集裝箱技術的革命性非常類似,即:容器技術使得應用具有了一種“自包含”的定義方式。是以,這樣的應用才能以靈活的、以可擴充可複制的方式釋出在雲上,發揮出雲的能力。這也就是容器技術對雲發揮出的革命性影響所在,是以說,容器技術正是雲原生技術的核心底盤。

雲原生的技術範疇

CNCF官方大使張磊:什麼是雲原生?雲原生技術發展簡史雲原生技術生态現狀我們正處于時代的關鍵節點什麼是“雲原生”?雲原生該怎麼落地?

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

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

雲原生思想的兩個理論

CNCF官方大使張磊:什麼是雲原生?雲原生技術發展簡史雲原生技術生态現狀我們正處于時代的關鍵節點什麼是“雲原生”?雲原生該怎麼落地?

在了解完雲原生的技術範疇之後你就會發現,其所包含的技術内容還是很多的,但是這些内容的技術本質卻是類似的。雲原生技術的本質是兩個理論基礎。

  • 第一個理論基礎是:不可變基礎設施。這一點目前是通過容器鏡像來實作的,其含義就是應用的基礎設施應該是不可變的,是一個自包含、自描述可以完全在不同環境中遷移的東西;
  • 第二個理論基礎就是:雲應用編排理論。目前的實作方式就是 Google 所提出來的“容器設計模式”,這也是 Kubernetes 部分文章中所需主要講述的内容。

基礎設施向雲演進的過程

CNCF官方大使張磊:什麼是雲原生?雲原生技術發展簡史雲原生技術生态現狀我們正處于時代的關鍵節點什麼是“雲原生”?雲原生該怎麼落地?

首先為大家介紹一下“不可變基礎設施”的概念。其實,應用所依賴的基礎設施也在經曆一個向雲演進的過程,舉例而言,對于傳統的應用基礎設施而言,其實往往是可變的。

大家可能經常會幹這樣一件事情,比如需要釋出或者更新一個軟體,那麼流程大緻是這樣的,先通過 SSH 連到伺服器,然後手動更新或者降級軟體包,逐個調整伺服器上的配置檔案,并且将新代碼直接都部署到現有伺服器上。是以,這套基礎設施會不斷地被調整和修改。

但是在雲上,對“雲”友好的應用基礎設施是不可變的。

這種場景下的上述更新過程會這麼做:一旦應用部署完成之後,那麼這套應用基礎設施就不會再修改了。如果需要更新,那麼需要現更改公共鏡像來建構新服務直接替換舊服務。而我們之是以能夠實作直接替換,就是因為容器提供了自包含的環境(包含應用運作所需的所有依賴)。是以對于應用而言,完全不需要關心容器發生了什麼變化,隻需要把容器鏡像本身修改掉就可以了。是以,對于雲友好的基礎設施是随時可以替換和更換的,這就是因為容器具有靈活和一緻性的能力,也就是雲時代的應用基礎設施。

是以,總結而言,雲時代的基礎設施就像是可以替代的“牲口”,可以随時替換;而傳統的基礎設施則是獨一無二的“寵物”,需要細心呵護,這就展現出了雲時代不可變基礎設施的優點。

基礎設施向雲演進的意義

CNCF官方大使張磊:什麼是雲原生?雲原生技術發展簡史雲原生技術生态現狀我們正處于時代的關鍵節點什麼是“雲原生”?雲原生該怎麼落地?

是以,像這樣的基礎設施向“不可變”演進的過程,為我們提供了兩個非常重要的優點。

    1. 基礎設施的一緻性和可靠性。同樣一個鏡像,無論是在美國打開,在中國打開,還是在印度打開都是一樣的。并且其中的 OS 環境對于應用而言都是一緻的。而對于應用而言,它就不需要關心容器跑在哪裡,這就是基礎設施一緻性非常重要的一個特征。
    1. 這樣的鏡像本身就是自包含的,其包含了應用運作所需要的所有依賴,是以也可以漂移到雲上的任何一個位置。

此外,雲原生的基礎設施還提供了簡單、可預測的部署和運維能力。由于現在有了鏡像,應用還是自描述的,通過鏡像運作起來的整個容器其實可以像 Kubernetes 的 Operator 技術一樣将其做成自運維的,是以整個應用本身都是自包含的行為,使得其能夠遷移到雲上任何一個位置。這也使得整個流程的自動化變得非常容易。

應用本身也可以更好地擴容,從 1 個執行個體變成 100 個執行個體,進而變成 1 萬個執行個體,這個過程對于容器化後的應用沒有任何特殊的。最後,我們這時也能夠通過不可變的基礎設施來地快速周圍的管控系統和支撐元件。因為,這些元件本身也是容器化的,是符合不可變基礎設施這樣一套理論的元件。

以上就是不可變基礎設施為使用者帶來的最大的優點。

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

為什麼說 2019 年很可能是一個關鍵節點呢?我們認為 2019 年是雲原生技術的普及元年。

首先大家可以看到,在 2019 年,阿裡巴巴宣布要全面上雲,而且“上雲就要上雲原生”。我們還可以看到,以“雲”為核心的軟體研發思想,正逐漸成為所有開發者的預設選項。像 Kubernetes 等雲原生技術正在成為技術人員的必修課,大量的工作崗位正在湧現出來。

這種背景下,“會 Kubernetes”已經遠遠不夠了,“懂 Kubernetes”、“會雲原生架構”的重要性正日益凸顯出來。 從 2019 年開始,雲原生技術将會大規模普及,這也是為什麼大家都要在這個時間點上學習和投資雲原生技術的重要原因。

CNCF官方大使張磊:什麼是雲原生?雲原生技術發展簡史雲原生技術生态現狀我們正處于時代的關鍵節點什麼是“雲原生”?雲原生該怎麼落地?

阿裡雲和 CNCF 聯合釋出了

《雲原生技術公開課》

,希望通過 29 節課程設定讓開發者對雲原生有全局的認知。

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