在互聯網與雲計算技術發展的突飛猛進過去五年中,應用研發人員對效率與敏捷的極致追求,終於把業界帶進了一個嶄新的雲原生時代。
而云原生理念的迅速普及,火了 Docker,紅了 Kubernetes ,也間接讓一個編程語言成爲了現在服務端的「當家花旦」。
不消多講,這位在雲原生領域裏正紅的發紫的「角兒」,就是 Golang。
不過,正如同 「PHP 不必定是最好的編程語言」同樣,Go 語言自己也不是「萬能鑰匙」。Go 語言之因此可以乘上雲原生這趟高速列車,究其緣由,更可能是與它以下幾個特質密切相關:
-
語法簡單,容易上手
。雲原生社區是一個對開源和貢獻者很是看重的生態,這就使得不多須要糾結於語法細節的 Go 語言迅速成爲了這個社區的「不二之選」。不然的話,雲原生 CNCF 社區裏大量項目都得忙着討論這個指針那個引用,什麼 Kubernetes CRD 之類的創新設計估計都得涼。
-
golang.org 庫很是豐富
。我們現代軟件開發行業,講究的就是「面向 library」 編程,誰沒事兒都不會手擼一個 HTTP 框架或者併發庫。開箱即用的庫越多,咱研發效率就越高。在這一點上,Go 語言不只有先天優點,並且雪球越滾越大,已然是雲原生一霸了。
-
部署簡單
。Go 語言項目開發完了,一個靜態文件就能夠運行了,特別適合直接扔在 Docker 裏跑。你們能夠想象一下若是 Kubernetes 是 Python 或者 Ruby 開發的,這玩意兒線上部署得多頭疼。
-
性能還不錯,優化也相對簡單
。Go 語言不能說是性能之王,但它很好的平衡了性能和程序員的心智負擔。對於 Docker、Kubernetes 這幾個項目的定位來講,這個平衡點恰到好處。
因此到了 2020 年,Go 語言已經成爲了」雲原生「這個圈子最重要的一枚「入場券」:Linux 內核不懂,咱還有機會慢慢學;Go 語言不會?您可就真要步履維艱了。
而俗話說得好:要想語言學得好,動手練習不能少
!我們雲原生社區最大的一個好處,就是 Go 語言開源項目多,優質的 Go 語言開源項目更多!從最底層的 containerd,到編排層的 Kubernetes,再到現在正紅的發紫的 Istio,隨便拿出一個來,那就足夠我們好好鑽研一陣子了。
不過,這些知名項目如今大多已經比較成熟,基本上不多接受大顆粒的 feature 進去。並且即便提 Pull Request(PR)上去了,它的合併速度也是慢的使人髮指。因此你們都在問,在雲原生領域中,還有哪些比較早期的、熱門的 Go 語言項目還能讓我們廣大的 YAML 工程師們」一展宏圖「呢?
這不,就在剛剛結束的、雲原生領域最權威的 KubeCon 北美峯會 2020 上,由 Open Application Model (OAM)社區發佈的 KubeVela 開源項目,着實讓人眼前一亮。
-
KubeVela 項目官網
:
http://kubevela.io/
-
GitHub 項目地址
:
https://github.com/oam-dev/kubevela/
更使人咋舌的是,僅僅在宣佈開源的第四天,KubeVela 就直接登上了 GitHub 趨勢榜 Go 語言區榜首的位置,其發展潛力可見一斑!
而在 KubeCon 上的三場 KubeVela/OAM 相關的技術演講中,KubeVela 項目更是受到了 「360 度」的關注與好評。好比,在 CNCF 應用交付領域小組對 KubeVela 項目進行介紹的過程當中,來自 Airbnb 的「網紅」 雲原生工程師 Melanie 全程直播了這個演講,最後給 KubeVela 項目點了個大大的贊!
「若是我想要一個 K8s 上的 Heroku,該怎麼辦?」 git
「那就用 KubeVela 吧!」程序員
看到這,相信你已經對這個項目充滿了好奇。GitHub 趨勢榜 Go 語言第一,這個項目究竟是什麼來頭?
一言以蔽之,KubeVela 是一個簡單易用且高度可擴展的應用管理平臺與核心引擎。KubeVela 是基於 Kubernetes 與 Open Application Model(OAM) 技術構建的。
詳細地講,KubeVela 是一個很是低心智負擔的雲原生應用管理平臺,核心功能是讓開發人員方便快捷地在 Kubernetes 上定義與交付現代微服務應用,無需瞭解任何 Kubernetes 自己相關的細節。在這一點上,KubeVela 能夠被認爲是雲原生社區的 Heroku。
再通俗點說,若是你是一個應用開發人員,想要在 K8s 上部署應用,不再須要去學習複雜的 K8s 知識啦,只須要使用 KubeVela 就能夠簡單的上手各類 K8s 的功能。
另外一方面,對於 PaaS 平臺團隊來說,KubeVela 是一個強大而且高可擴展的雲原生應用平臺核心引擎。基於這樣一個引擎,平臺團隊能夠快速、高效地以 Kubernetes 原生的方式在 KubeVela 中植入任何來自雲原生社區的應用管理能力,從而基於 KubeVela 打造出本身須要的雲原平生臺,好比:雲原生數據庫 PaaS、雲原生 AI 平臺、甚至 Serverless 服務。在這一點上,KubeVela 能夠被認爲是一個「以應用爲中心」的 Kubernetes 發行版,以 OAM 爲核心,讓平臺團隊能夠基於 KubeVela 快速打造出屬於本身的 PaaS、Serverless 乃至任何面向用戶的雲原平生臺項目。
在不久前 KubeVela 項目負責人接受國內某技術媒體的專訪中提到:「目前,不少業務用戶對‘雲原生’、Kubernetes 的價值其實廣泛缺少體感,這個狀況在整個社區裏都是個讓人頭疼的問題。這裏最根本的緣由,在於 Kubernetes 與用戶之間,還存在着一層名叫「應用層」抽象亟待填補」。
誠然,Kubernetes 和雲原生技術的各類核心概念,距離業務用戶其實很遙遠。經過這些技術實際的落地過程也不難看出,僅僅有基礎設施層抽象,離雲原生「絲般順滑」的雲端應用管理與交付體驗,仍是存在着巨大的鴻溝。
而 Open Application Model(OAM)開放應用模型,以及它的 Kubernetes 實現 KubeVela 項目,正是阿里雲聯合微軟等雲原生社區中堅力量,共同推出的「以解決用戶側訴求」爲核心的雲原生應用層項目。其中,OAM 的設計思想是爲包括 Kubernetes 在內的任何雲端基礎設施提供一個統1、面向最終用戶的應用定義模型;而 KubeVela,則是這個統一模型在 Kubernetes 上的完整實現。
「只有當業務研發接觸到的是‘代碼’、‘應用’,而不是 'Pod'、'StatefulSet' 時,讓研發專一於寫代碼’這個美好、樸素的雲原生願望,纔可以真正得以實現」
,張磊這樣表示。
而成爲 KubeVela 貢獻者的主要基礎,天然是 Go 語言啦。詳細的說, KubeVela 對以下幾個 Golang 生態工具備依賴:
-
-
Ginkgo 1.14.0+ ,Ginkgo 是 KubeVela 運行 E2E 測試的依賴;
-
Golangci-lint 1.31.0+,Golangci-lint 是 KubeVela 檢查你的代碼風格和規範是的依賴。
除此以外,KubeVela 會但願你對 Kubernetes 有一些基本的瞭解。固然了,成爲 Kubernetes 專家大可沒必要:有了 Go 語言這枚」入場券「,你還有啥可擔憂的。
另外,貢獻 KubeVela 以前,請你必定要詳細閱讀它的貢獻者文檔,這個文檔裏還連接了 KubeVela 的詳細設計文檔,這個應該說是貢獻者必讀的一篇參考資料。github
那麼 KubeVela 項目中,又有哪些技術點能夠貢獻呢?
做爲一個」高可擴展「的雲原生應用平臺,KubeVela 是一個幾乎每個特性都是可擴展、可插拔,有着很高可玩度的一個項目。
這不,就在 KubeVela 開源的次日,來自社區的貢獻者就已經爲 KubeVela 加上了
Contour Ingress 控制器的支持
。並且這個 PR 已經被合併,這也意味着下個 Release 裏,KubeVela 就會原生支持基於 Envoy 的應用訪問路由。相似的,KubeVela 裏的其餘特性好比 Autoscaler 等,都以 Kubernetes 原生的方式提供了大量的可擴展的空間。
另外一方面,整個 KubeVela 平臺的設計是由 Workload Type (工做負載類型)和 Trait (應用特徵)組成的。因此,你能夠自由地爲 KubeVela 裏添加各類各樣的 Workload Type 和 Trait,好比 StatefulSet 工做負載,CloneSet 工做負載,藍綠髮布 Trait,流量管理 Trait 等等。對於這部分應用管理能力,只有你想不到,沒有你作不到,將來的 KubeVela 具有什麼能力,抽象怎麼設計,你說了算!
而後是用戶接口與模型層。即 KubeVela 的 Appfile 與它背後的 OAM 模型引擎。這部分是 KubeVela 中最核心的部分,可是通常來講比較穩定,比較適合對 KubeVela 和 OAM 有必定了解的中級開發者。尤爲是已經在內部場景中進行過 OAM 落地的同窗,大能夠在這個領域繼續一展身手。
最後,也是最重要的,是任何 KubeVela 相關的分享與案例文章。是的,貢獻 KubeVela 項目大可沒必要從代碼開始,任何一篇對 KubeVela 使用、集成甚至吐槽的分享,都是對整個社區價值巨大的貢獻,咱們對此無比期待!
KubeVela 遵循 CNCF 貢獻者階梯,設計了兩級 Maintainer 級別。具有必定貢獻量的項目貢獻者,將被現有 Maintainer 提名爲 Reviewer,得到必定的項目維護權限併成爲 KubeVela 項目 Member. 而 Reviwer 中表現突出的成員,將會被提名爲 Approver,成爲項目核心維護者。
KubeVela 便是現今阿里自身多個互聯網級應用平臺產品(好比阿里雲 EDAS 服務)背後的核心引擎,也是一個誕生自雲原生社區的開源項目。KubeVela 項目將在穩定以後,即總體捐贈給雲原生社區中立基金會。
本文分享自微信公衆號 - 雲服務圈(heidcloud)。
若有侵權,請聯繫 support@oschina.cn 刪除。
本文參與「OSC源創計劃」,歡迎正在閱讀的你也加入,一塊兒分享。golang