今年最火的 Golang 云原生开源项目,可能就是它了!
來源 | 阿里巴巴云原生公眾號
在互聯(lián)網(wǎng)與云計算技術(shù)發(fā)展的日新月異過去五年中,應(yīng)用研發(fā)人員對效率與敏捷的極致追求,終于把業(yè)界帶進了一個嶄新的云原生時代。而云原生理念的迅速普及,火了 Docker,紅了 Kubernetes ,也間接讓一個編程語言成為了如今服務(wù)端的“當(dāng)家花旦”。不消多講,這位在云原生領(lǐng)域里正紅的發(fā)紫的“角兒”,就是 Golang。
不過,正如同 “PHP 不一定是最好的編程語言”一樣,Go 語言本身也不是“萬能鑰匙”。Go 語言之所以能夠乘上云原生這趟高速列車,究其原因,更多是與它如下幾個特質(zhì)密切相關(guān):
-
語法簡單,容易上手。云原生社區(qū)是一個對開源和貢獻者非??粗氐纳鷳B(tài),這就使得很少需要糾結(jié)于語法細節(jié)的 Go 語言迅速成為了這個社區(qū)的“不二之選”。否則的話,云原生 CNCF 社區(qū)里大量項目都得忙著討論這個指針那個引用,什么 Kubernetes CRD 之類的創(chuàng)新設(shè)計估計都得涼。
-
golang.org 庫非常豐富。咱們現(xiàn)代軟件開發(fā)行業(yè),講究的就是“面向 library” 編程,誰沒事兒都不會手擼一個 HTTP 框架或者并發(fā)庫。開箱即用的庫越多,咱研發(fā)效率就越高。在這一點上,Go 語言不僅有先天優(yōu)勢,而且雪球越滾越大,已然是云原生一霸了。
-
部署簡單。Go 語言項目開發(fā)完了,一個靜態(tài)文件就可以運行了,特別適合直接扔在 Docker 里跑。大家可以想象一下如果 Kubernetes 是 Python 或者 Ruby 開發(fā)的,這玩意兒線上部署得多頭疼。
-
性能還不錯,優(yōu)化也相對簡單。Go 語言不能說是性能之王,但它很好的平衡了性能和程序員的心智負擔(dān)。對于 Docker、Kubernetes 這幾個項目的定位來說,這個平衡點恰到好處。
所以到了 2020 年,Go 語言已經(jīng)成為了”云原生“這個圈子最重要的一枚“入場券”:Linux 內(nèi)核不懂,咱還有機會慢慢學(xué);Go 語言不會?您可就真要寸步難行了。
而俗話說得好:要想語言學(xué)得好,動手練習(xí)不能少!咱們云原生社區(qū)最大的一個好處,就是 Go 語言開源項目多,優(yōu)質(zhì)的 Go 語言開源項目更多!從最底層的 containerd,到編排層的 Kubernetes,再到如今正紅的發(fā)紫的 Istio,隨便拿出一個來,那就足夠咱們好好鉆研一陣子了。
不過,這些知名項目現(xiàn)在大多已經(jīng)比較成熟,基本上很少接受大顆粒的 feature 進去。而且即使提 Pull Request(PR)上去了,它的合并速度也是慢的令人發(fā)指。所以大家都在問,在云原生領(lǐng)域中,還有哪些比較早期的、熱門的 Go 語言項目還能讓咱們廣大的 YAML 工程師們”一展宏圖“呢?
這不,就在剛剛結(jié)束的、云原生領(lǐng)域最權(quán)威的 KubeCon 北美峰會 2020 上,由 Open Application Model (OAM)社區(qū)發(fā)布的 KubeVela 開源項目,著實讓人眼前一亮。
- KubeVela 項目官網(wǎng):http://kubevela.io/
- GitHub 項目地址:https://github.com/oam-dev/kubevela/
更令人咋舌的是,僅僅在宣布開源的第四天,KubeVela 就直接登上了 GitHub 趨勢榜 Go 語言區(qū)榜首的位置,其發(fā)展?jié)摿梢娨话?#xff01;
而在 KubeCon 上的三場 KubeVela/OAM 相關(guān)的技術(shù)演講中,KubeVela 項目更是受到了 “360 度”的關(guān)注與好評。比如,在 CNCF 應(yīng)用交付領(lǐng)域小組對 KubeVela 項目進行介紹的過程中,來自 Airbnb 的“網(wǎng)紅” 云原生工程師 Melanie 全程直播了這個演講,最后給 KubeVela 項目點了個大大的贊!
“如果我想要一個 K8s 上的 Heroku,該怎么辦?” ?
“那就用 KubeVela 吧!”
看到這,相信你已經(jīng)對這個項目充滿了好奇。GitHub 趨勢榜 Go 語言第一,這個項目到底是什么來頭?
KubeVela 是什么?
一言以蔽之,KubeVela**?是一個簡單易用且高度可擴展的應(yīng)用管理平臺與核心引擎**。KubeVela 是基于 Kubernetes 與 Open Application Model(OAM) 技術(shù)構(gòu)建的。
詳細地講,KubeVela 是一個非常低心智負擔(dān)的云原生應(yīng)用管理平臺,核心功能是讓開發(fā)人員方便快捷地在 Kubernetes 上定義與交付現(xiàn)代微服務(wù)應(yīng)用,無需了解任何 Kubernetes 本身相關(guān)的細節(jié)。在這一點上,KubeVela 可以被認為是云原生社區(qū)的 Heroku。
再通俗點說,如果你是一個應(yīng)用開發(fā)人員,想要在 K8s 上部署應(yīng)用,再也不需要去學(xué)習(xí)復(fù)雜的 K8s 知識啦,只需要使用 KubeVela 就可以簡單的上手各種 K8s 的功能。
另一方面,對于 PaaS 平臺團隊來講,KubeVela 是一個強大并且高可擴展的云原生應(yīng)用平臺核心引擎?;谶@樣一個引擎,平臺團隊可以快速、高效地以 Kubernetes 原生的方式在 KubeVela 中植入任何來自云原生社區(qū)的應(yīng)用管理能力,從而基于 KubeVela 打造出自己需要的云原生平臺,比如:云原生數(shù)據(jù)庫 PaaS、云原生 AI 平臺、甚至 Serverless 服務(wù)。在這一點上,KubeVela 可以被認為是一個“以應(yīng)用為中心”的 Kubernetes 發(fā)行版,以 OAM 為核心,讓平臺團隊可以基于 KubeVela 快速打造出屬于自己的 PaaS、Serverless 乃至任何面向用戶的云原生平臺項目。
為什么能這么火?
在不久前 KubeVela 項目負責(zé)人接受國內(nèi)某技術(shù)媒體的專訪中提到:“目前,很多業(yè)務(wù)用戶對‘云原生’、Kubernetes 的價值其實普遍缺乏體感,這個情況在整個社區(qū)里都是個讓人頭疼的問題。這里最根本的原因,在于 Kubernetes 與用戶之間,還存在著一層名叫“應(yīng)用層”抽象亟待填補”。
誠然,Kubernetes 和云原生技術(shù)的各種核心概念,距離業(yè)務(wù)用戶其實很遙遠。通過這些技術(shù)實際的落地過程也不難看出,僅僅有基礎(chǔ)設(shè)施層抽象,離云原生“絲般順滑”的云端應(yīng)用管理與交付體驗,還是存在著巨大的鴻溝。
而 Open Application Model(OAM)開放應(yīng)用模型,以及它的 Kubernetes 實現(xiàn) KubeVela 項目,正是阿里云聯(lián)合微軟等云原生社區(qū)中堅力量,共同推出的“以解決用戶側(cè)訴求”為核心的云原生應(yīng)用層項目。其中,OAM 的設(shè)計思想是為包括 Kubernetes 在內(nèi)的任何云端基礎(chǔ)設(shè)施提供一個統(tǒng)一、面向最終用戶的應(yīng)用定義模型;而 KubeVela,則是這個統(tǒng)一模型在 Kubernetes 上的完整實現(xiàn)。
“只有當(dāng)業(yè)務(wù)研發(fā)接觸到的是‘代碼’、‘應(yīng)用’,而不是 ‘Pod’、‘StatefulSet’ 時,讓研發(fā)專注于寫代碼’這個美好、樸素的云原生愿望,才能夠真正得以實現(xiàn)”,張磊這樣表示。
我能成為 KubeVela 項目的貢獻者嗎?
當(dāng)然!
而成為 KubeVela 貢獻者的主要基礎(chǔ),自然是 Go 語言啦。詳細的說, KubeVela 對如下幾個 Golang 生態(tài)工具有依賴:
- Golang 開發(fā)環(huán)境:1.13+;
- Ginkgo 1.14.0+ ,Ginkgo 是 KubeVela 運行 E2E 測試的依賴;
- Golangci-lint 1.31.0+,Golangci-lint 是 KubeVela 檢查你的代碼風(fēng)格和規(guī)范是的依賴。
除此之外,KubeVela 會希望你對 Kubernetes 有一些基本的了解。當(dāng)然了,成為 Kubernetes 專家大可不必:有了 Go 語言這枚”入場券“,你還有啥可擔(dān)心的。
另外,貢獻 KubeVela 之前,請你一定要詳細閱讀它的貢獻者文檔,這個文檔里還鏈接了 KubeVela 的詳細設(shè)計文檔,這個應(yīng)該說是貢獻者必讀的一篇參考資料。
那么 KubeVela 項目中,又有哪些技術(shù)點可以貢獻呢?
作為一個”高可擴展“的云原生應(yīng)用平臺,KubeVela 是一個幾乎每一個特性都是可擴展、可插拔,有著很高可玩度的一個項目。
這不,就在 KubeVela 開源的第二天,來自社區(qū)的貢獻者就已經(jīng)為 KubeVela 加上了Contour Ingress 控制器的支持。而且這個 PR 已經(jīng)被合并,這也意味著下個 Release 里,KubeVela 就會原生支持基于 Envoy 的應(yīng)用訪問路由。類似的,KubeVela 里的其他特性比如 Autoscaler 等,都以 Kubernetes 原生的方式提供了大量的可擴展的空間。
另一方面,整個 KubeVela 平臺的設(shè)計是由 Workload Type (工作負載類型)和 Trait (應(yīng)用特征)組成的。所以,你可以自由地為 KubeVela 里添加各種各樣的 Workload Type 和 Trait,比如 StatefulSet 工作負載,CloneSet 工作負載,藍綠發(fā)布 Trait,流量管理 Trait 等等。對于這部分應(yīng)用管理能力,只有你想不到,沒有你做不到,未來的 KubeVela 具備什么能力,抽象怎么設(shè)計,你說了算!
然后是用戶接口與模型層。即 KubeVela 的 Appfile 與它背后的 OAM 模型引擎。這部分是 KubeVela 中最核心的部分,但是一般來說比較穩(wěn)定,比較適合對 KubeVela 和 OAM 有一定了解的中級開發(fā)者。尤其是已經(jīng)在內(nèi)部場景中進行過 OAM 落地的同學(xué),大可以在這個領(lǐng)域繼續(xù)一展身手。
最后,也是最重要的,是任何 KubeVela 相關(guān)的分享與案例文章。是的,貢獻 KubeVela 項目大可不必從代碼開始,任何一篇對 KubeVela 使用、集成甚至吐槽的分享,都是對整個社區(qū)價值巨大的貢獻,我們對此無比期待!
KubeVela 遵循 CNCF 貢獻者階梯,設(shè)計了兩級 Maintainer 級別。具備一定貢獻量的項目貢獻者,將被現(xiàn)有 Maintainer 提名為 Reviewer,獲得一定的項目維護權(quán)限并成為 KubeVela 項目 Member. 而 Reviwer 中表現(xiàn)突出的成員,將會被提名為 Approver,成為項目核心維護者。
KubeVela 即是現(xiàn)今阿里自身多個互聯(lián)網(wǎng)級應(yīng)用平臺產(chǎn)品(比如阿里云 EDAS 服務(wù))背后的核心引擎,也是一個誕生自云原生社區(qū)的開源項目。KubeVela 項目將在穩(wěn)定之后,即整體捐贈給云原生社區(qū)中立基金會。
如果你有任何疑問,歡迎搜索釘釘群號:23310022 進群交流!
《新程序員》:云原生和全面數(shù)字化實踐50位技術(shù)專家共同創(chuàng)作,文字、視頻、音頻交互閱讀總結(jié)
以上是生活随笔為你收集整理的今年最火的 Golang 云原生开源项目,可能就是它了!的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: OpenKruise:阿里巴巴 双11
- 下一篇: 以 Kubernetes 为代表的容器技