天天看點

到底什麼是雲原生?CNCF又是個什麼鬼?

近年來,

雲原生

一詞越來越流行,甚至到了火爆的程度,談論技術如果不涉及雲原生似乎就OUT了,而不支援雲原生的軟體或者項目似乎也顯得與目前時代格格不入,那到底什麼是雲原生呢?我們怎樣設計、開發出來的軟體就是為雲原生而生的呢?

什麼是雲原生?

雲原生從字面意思上來看可以分成雲和原生兩個部分。

雲是和本地相對的,傳統的應用必須跑在本地伺服器上,現在流行的應用都跑在雲端,雲包含了IaaS,、PaaS和SaaS。

原生就是土生土長的意思,我們在開始設計應用的時候就考慮到應用将來是運作雲環境裡面的,要充分利用雲資源的優點,比如️雲服務的彈性和分布式優勢。

如何開發出适合于在雲環境裡面部署的程式呢?其實主要是需要遵循幾個開發原則:

到底什麼是雲原生?CNCF又是個什麼鬼?

微服務

微服務解決的是我們軟體開發中一直追求的低耦合+高内聚,與微服務對應的是我們傳統的單體應用,例如一個tomcat容器中部署一個超大型管理系統的場景,而微服務的本質是把一塊大餅分成若幹塊低耦合的小餅,比如一塊小餅專門負責接收外部的資料,一塊小餅專門負責響應前台的操作,小餅可以進一步拆分,比如負責接收外部資料的小餅可以繼續分成多塊負責接收不同類型資料的小餅,這樣每個小餅出問題了,其它小餅還能正常對外提供服務。

微服務還建議使用RESTful API通信,且局限于某一門開發語言,而是在系統的不同層次上選擇最适合的語言進行,流行的微服務開發語言有: Go、Java、NodeJS、Python等。

DevOps

DevOps的意思就是開發和運維不再是分開的兩個團隊,而是你中有我,我中有你的一個團隊。開發和運維由一個團隊完成,快速适應業務變化,以更加定制化的方式實作客戶需求,提供超出客戶預期的産品。

開發和運維在一個團隊,團隊需要對開發和運維兩頭抓,存在一定的技術挑戰,但是其最終受益的還是整個團隊。

持續傳遞

持續傳遞的意思就是在不影響使用者使用服務的前提下頻繁把新功能釋出給使用者使用,要做到這點非常非常難。要做到對使用者不受影響,對于研發的設計要求是非常高的,我們很多時候可能因為前期某一個不合理的表設計就會讓使用者感覺到明顯的産品變化,這塊兒隻能在團隊中持續打磨,再有了一定抽象能力和産品能力以後才能有所進步。

容器化

容器化的好處在于運維的時候不需要再關心每個服務所使用的技術棧了,每個服務都被無差别地封裝在容器裡,可以被無差别地管理和維護,現在比較流行的工具是docker和k8s。

是以我們也可以簡單地把雲原生了解為:雲原生 = 微服務 + DevOps + 持續傳遞 + 容器化

而針對容器化,他就和我們下面要聊的CNCF的話題有着密切聯系。

CNCF又是什麼?

CNCF,英文全稱為Cloud Native Computing Foundation,中文譯為“雲原生計算基金會”。成立于2015年12月11日。

CNCF是Linux基金會旗下的基金會,可以了解為一個非盈利組織。

當年谷歌内部一直用于編排容器的Borg項目開源了,為了該項目更好的發展,谷歌與Linux基金會一起創辦了CNCF。同時,谷歌把Borg用Go語言重寫,更名為Kubernetes并捐贈給了CNCF。

成立這個組織的初衷或者願景,簡單說:

  • 推動雲原生計算可持續發展;
  • 幫助雲原生技術開發人員快速地建構出色的産品;

CNCF通過建立社群、管理衆多開源項目等手段來推廣技術和生态系統發展。

雲原生計算技術棧非常寬闊,它囊括了存儲、計算、編排、排程、CI/CD、DevOps、服務治理、服務網關等諸多領域。是以與之相對應的開源項目就非常多。CNCF基金會與Linux基金會、Apache基金會類似,負責社群的管理、技術的推廣,使得雲原生領域的技術不斷成長。

比如,源于谷歌的Kubernetes(容器編排引擎)開源項目就被吸收到CNCF,Kubernetes也是以受到更多的人關注。

再比如,源于華為的KubeEdge(邊緣計算平台)開源項目也被CNCF吸納,也吸引了很多人參與進來。

很多公司很樂于把自已的項目貢獻給CNCF,這樣能吸引到更多的專家參與進來一起開發。隻有足夠優秀的項目CNCF才會接納,源創公司會在該項目上保持技術上的領先,也能擴大技術影響力,是以公司願意分享項目到CNCF。

CNCF的願景: 為雲原生軟體建構可持續生态系統‎

核心項目

CNCF基于著名的鴻溝理論開展項目管理,将項目分為沙盒項目(Sandbox)、孵化項目(Incubating)、畢業項目(Graduated)。分别對應于鴻溝圖的創新者、早起采用者和早期多數者。

CNCF項目階段與鴻溝圖對應關系如下圖所示:

到底什麼是雲原生?CNCF又是個什麼鬼?

基于該理論,CNCF技術監督委員會制定了嚴格的項目管理制度和項目畢業标準,保證畢業的項目具有采用率、健康的變化率以及來自多個組織的送出人等。

著名的畢業項目有: Kubernetes、etcd、containerd、Prometheus、Helm等。

處于孵化階段的流行項目有: CRI-O、gRPC、Argo、Dragonfly、KubeEdge、Thanos等。

完整的項目清單檢視位址: https://www.cncf.io/projects/

CNCF全景圖

Trail Map隻是對雲原生應用做一個大體的梳理,而每個階段所關聯的服務商和産品等詳細資訊則需要從全景圖Landscape中确認。CNCF有一個很大的願景,而且包含的内容也越來越豐富,截止2021年4月3号,全景圖已經包含了雲原生應用所關聯的方方面面,共計913個卡片,與之對應的開源項目一共達到了2,530,085個star, 市值為14.4T和資金156.8億美元。

到底什麼是雲原生?CNCF又是個什麼鬼?

原始圖檔位址: https://landscape.cncf.io/images/landscape.png

分子產品檢視位址: https://landscape.cncf.io/

這樣的全景圖可以指導我們的項目開發工作,選擇雲原生就緒的開源項目,将有助于我們建構自己的雲原生就緒的項目。這張圖中主流的項目也是将來的技術熱點,是我們學習的方向。

總結

我們不難發現,雲原生是一個很寬泛的概念,想要開發一個支援雲原生的應用并不難,可能就是簡單的實作可基于容器部署、使用Kubernetes進行編排與排程,內建CI/CD工具以及Prometheus監控工具等。

但是,想要建構一個真正雲原生的系統,要求我們考慮到系統的方方面面,我們不僅要掌握簡單的開發技能,還要在SDN、SDS、分布式排程甚至計算機基礎架構等諸多領域有所了解,要能夠根據場景制定出最合适的架構方案。

各方面的綜合能力的提升才能在雲原生時代建構出雲原生就緒的應用或系統。

到底什麼是雲原生?CNCF又是個什麼鬼?
到底什麼是雲原生?CNCF又是個什麼鬼?

繼續閱讀