雲原生的前世今生(一)

語言: CN / TW / HK

讀完本文需要 5 分鐘。

前言

博主20年4月轉崗到阿里雲,從事工業智能製造方向的後端研發,由於工作中需要解決不同客户現場的異構環境和多雲環境(公有云、私有云、混合雲)下的部署問題,所以一直在探索和實踐雲原生相關技術。

雲原生一詞近幾年熱度非常高,經常會有讀者問我:雲原生到底是什麼?它跟傳統的架構有什麼區別?它能在哪些場景應用?它能帶來什麼價值?我該不該投入精力去學習它?等等...

趁着國慶假期跟大家好好聊聊這個話題,首先分享一篇科普文《雲原生的前世今生(一)》,後續還會繼續分享自己對雲原生的理解,以及在日常工作中關於雲原生的實踐經驗,希望能給大家帶來啟發~

雲原生的起源 Pivotal

Pivotal 公司是敏捷開發領域的領導者(曾經 Google 也是其客户),出生名門(EMC、VMware等投資)。它推出了 Pivotal Cloud Foundry(2011 ~ 2013 PAAS 界網紅)和 Spring 生態系列框架,是雲原生的先驅者和探路者。

2013年,Pivotal 公司的技術經理 Matt Stine 首次提出雲原生(Cloud Native)的概念。

2015年,Matt Stine 在《Migrating to Cloud Native Application Architectures - 遷移到雲原生應用架構》小冊子中定義了符合雲原生架構的幾個特徵:

  • 符合12模式(Twelve-Factor App):雲原生應用架構的模式集合
  • 微服務架構(Microservices):獨立部署的服務,一次只做一件事
  • 自助服務敏捷基礎設施(Self-Service Agile Infrastructure):用於快速、可重複和一致地提供應用環境和服務的平台
  • 面向API接口的通信(API-based Collaboration):服務之間的交互基於接口,而不是本地方法調用
  • 抗脆弱性(Anti-Fragility):系統能抵禦高負載

原文出自:https://www.mattstine.com/publication/migrating-to-cloud-native/

2017年,Matt Stine 在接受 InfoQ 採訪時,對雲 Cloud Native Architecture 的定義做了小幅調整,具體有以下六個特質:

  • 模塊化(Modularity)
  • 可觀測性(Observability)
  • 可部署性(Deployability)
  • 可測試性(Testability)
  • 可處理性(Disposability)
  • 可替代性(Replaceability)

原文出自:https://www.infoq.com/articles/cloud-native-panel/

2019年,VMware Tanzu 收購了 Pivotal,其官網給出了雲原生最新定義,以及雲原生的架構原則:

  • 雲原生是一種利用雲計算交付模型的優勢來構建和運行應用程序的方法論。當企業使用雲原生架構開發和運維應用程序時,它們能更快速地響應客户需求將新想法推向市場。
  • 雖然公共雲影響了幾乎所有行業對於基礎設施的思維模式,但類似雲的交付並不僅限於公共環境。雲原生的開發同時適合公共雲和私有云,你只需要關心應用程序是如何創建和部署,無需理會在哪部署。
  • 更重要的是能夠為開發人員提供按需訪問計算能力以及現代數據和應用程序服務。雲原生開發融合了 DevOps、連續交付、微服務和容器。
  • 雲原生架構原則:DevOps、Microservices、Containers、Security

原文出自:https://tanzu.vmware.com/cloud-native

雲原生的發展 CNCF

CNCF(Cloud Native Computing Foundation,雲原生計算基金會),是由開源基礎設施界的翹楚 Google、RedHat 等公司共同牽頭髮起的一個基金會組織,其目的非常明確,就是為了對抗當時大紅大紫的 Docker 公司在容器圈一家獨大的局面。CNCF 通過 Kubernetes 項目在開源社區編排領域一騎絕塵,之後就扛起了雲原生定義和推廣的大旗,風光無限。

2015年,Google 主旨在於打擊 Docker,因此它對雲原生的定義還比較狹隘,包括如下三個方面:

  • 微服務架構
  • 應用容器化
  • 支持容器編排和容器調度

2018年,被稱為雲原生元年,大量科技公司開始接受雲原生的概念,並紛紛加入到雲原生的大家庭。此外,主流雲計算供應商相繼加入 CNCF,持續豐富整個雲原生的生態。CNCF 對雲原生重新進行了定義(並大大擴展了雲原生的外延):

  • 雲原生技術有利於各組織在公有云、私有云和混合雲等新型動態環境中,構建和運行可彈性擴展的應用。雲原生的代表技術包括容器、服務網格、微服務、不可變基礎設施和聲明式API。
  • 這些技術能夠構建容錯性好、易於管理和便於觀察的鬆耦合系統。結合可靠的自動化手段,雲原生技術使工程師能夠輕鬆地對系統作出頻繁和可預測的重大變更。
  • 雲原生計算基金會(CNCF)致力於培育和維護一個廠商中立的開源生態系統,來推廣雲原生技術。我們通過將最前沿的模式民主化,讓這些創新為大眾所用。

原文出自:https://github.com/cncf/toc/blob/main/DEFINITION.md

2021年,已經有幾百家企業和機構加入 CNCF 參與雲原生的建設,其中不乏亞馬遜、微軟、思科、華為、阿里雲等大型科技公司。截止到目前(2021年10月),CNCF 已畢業的項目有16個,孵化中的項目有23個。以下是 CNCF 全景圖:

原圖出自:https://landscape.cncf.io,持續更新中...

CNCF 為了幫助企業和機構在複雜的基礎架構之上更好落地雲原生應用,從整體上給出了十個具體實施步驟,在不同的步驟都可以結合 Landscape 中列出的產品或服務進行選擇。以下是 CNCF 給出的雲原生實踐路線圖:

image.png

原圖出自:https://github.com/cncf/landscape,持續更新中,中文翻譯如下:

有了如此詳盡的雲原生實踐路線圖,相信每個開發者都能輕鬆的構建自己的雲原生應用。

小結

隨着雲原生生態和邊界不斷的擴大,雲原生的定義一直在變化。不同的公司(Pivotal & CNCF)不同的人對它有不同的定義,同一家公司在不同的時間階段對雲原生的定義也不一樣。根據摩爾定律推斷,未來雲原生的定義肯定還會繼續變化。

我們不妨跳出技術層面,嘗試用組織和立場的角度來分析下 Pivotal 和 CNCF 這兩家公司:

  • Pivotal 定位於 PaaS 層端到端的解決方案及數字化轉型,從文化、流程、方法論、藍圖規劃、軟件開發方式等,都有一套模式,主要用户是傳統大中型企業 CIO,整體策略是自頂向下;
  • CNCF 立足於整個雲計算生態和技術創新、變革者,偏重於技術、工具鏈和底層基礎設施,主要用户是開源社區的開發者、互聯網及新興企業,影響力可想而知,整體策略是自底向上;
  • 結論:Pivotal 是 Cloud Native 概念和方法論的先行者, CNCF 是 Cloud Native 的最佳實踐者。

不管雲原生的定義如何變化,其本質還是幫助開發者和企業,如何在複雜的基礎架構之上,保證鬆耦合的系統能夠更好地被監控和管理。雲原生的生態應用也越來越枝繁葉茂,相信在不久的將來,會有更多偉大的科技落地在我們的身邊,影響到我們的每一個人。

參考