今年最火的 Golang 云原生开源项目,可能就是它了!

简介: 就在刚刚结束的、云原生领域最权威的 KubeCon 北美峰会 2020 上,由 Open Application Model (OAM)社区发布的 KubeVela 开源项目,着实让人眼前一亮。更令人咋舌的是,仅仅在宣布开源的第四天,KubeVela 就直接登上了 GitHub 趋势榜 Go 语言区榜首的位置,其发展潜力可见一斑!

来源 | 阿里巴巴云原生公众号

在互联网与云计算技术发展的日新月异过去五年中,应用研发人员对效率与敏捷的极致追求,终于把业界带进了一个崭新的云原生时代。而云原生理念的迅速普及,火了 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 就直接登上了 GitHub 趋势榜 Go 语言区榜首的位置,其发展潜力可见一斑!

1.png

而在 KubeCon 上的三场 KubeVela/OAM 相关的技术演讲中,KubeVela 项目更是受到了 “360 度”的关注与好评。比如,在 CNCF 应用交付领域小组对 KubeVela 项目进行介绍的过程中,来自 Airbnb 的“网红” 云原生工程师 Melanie 全程直播了这个演讲,最后给 KubeVela 项目点了个大大的赞!

“如果我想要一个 K8s 上的 Heroku,该怎么办?”  
“那就用 KubeVela 吧!”

2.png

看到这,相信你已经对这个项目充满了好奇。GitHub 趋势榜 Go 语言第一,这个项目到底是什么来头

KubeVela 是什么?

一言以蔽之,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 在内的任何云端基础设施提供一个统一、面向最终用户的应用定义模型;而 KubeVela,则是这个统一模型在 Kubernetes 上的完整实现

“只有当业务研发接触到的是‘代码’、‘应用’,而不是 'Pod'、'StatefulSet' 时,让研发专注于写代码’这个美好、朴素的云原生愿望,才能够真正得以实现”,张磊这样表示。

我能成为 KubeVela 项目的贡献者吗?

当然!

而成为 KubeVela 贡献者的主要基础,自然是 Go 语言啦。详细的说, KubeVela 对如下几个 Golang 生态工具有依赖:

  • Golang 开发环境:1.13+;
  • Ginkgo 1.14.0+ ,Ginkgo 是 KubeVela 运行 E2E 测试的依赖;
  • Golangci-lint 1.31.0+,Golangci-lint 是 KubeVela 检查你的代码风格和规范是的依赖。

除此之外,KubeVela 会希望你对 Kubernetes 有一些基本的了解。当然了,成为 Kubernetes 专家大可不必:有了 Go 语言这枚”入场券“,你还有啥可担心的。

另外,贡献 KubeVela 之前,请你一定要详细阅读它的贡献者文档,这个文档里还链接了 KubeVela 的详细设计文档,这个应该说是贡献者必读的一篇参考资料。

那么 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 项目将在稳定之后,即整体捐赠给云原生社区中立基金会。

如果你有任何疑问,欢迎搜索钉钉群号:23310022 进群交流!

相关实践学习
深入解析Docker容器化技术
Docker是一个开源的应用容器引擎,让开发者可以打包他们的应用以及依赖包到一个可移植的容器中,然后发布到任何流行的Linux机器上,也可以实现虚拟化,容器是完全使用沙箱机制,相互之间不会有任何接口。Docker是世界领先的软件容器平台。开发人员利用Docker可以消除协作编码时“在我的机器上可正常工作”的问题。运维人员利用Docker可以在隔离容器中并行运行和管理应用,获得更好的计算密度。企业利用Docker可以构建敏捷的软件交付管道,以更快的速度、更高的安全性和可靠的信誉为Linux和Windows Server应用发布新功能。 在本套课程中,我们将全面的讲解Docker技术栈,从环境安装到容器、镜像操作以及生产环境如何部署开发的微服务应用。本课程由黑马程序员提供。     相关的阿里云产品:容器服务 ACK 容器服务 Kubernetes 版(简称 ACK)提供高性能可伸缩的容器应用管理能力,支持企业级容器化应用的全生命周期管理。整合阿里云虚拟化、存储、网络和安全能力,打造云端最佳容器化应用运行环境。 了解产品详情: https://www.aliyun.com/product/kubernetes
相关文章
|
Cloud Native 安全 Java
云原生系列Go语言篇-标准库Part 2
使用Go进行开发的最大优势之一是其标准库。与Python类似,Go也采取了“内置电池”的理念,提供了构建应用程序所需的许多工具。由于Go是一种相对较新的语言,它附带了一个专注于现代编程环境中遇到的问题的库。
147 0
|
存储 监控 Cloud Native
云原生系列Go语言篇-并发 Part 2
既然已经讲解了Go为并发所提供的基础工具,我们就来学习一些并发的最佳实践和模式吧。
162 0
|
存储 Cloud Native 编译器
云原生系列Go语言篇-错误处理
从其它语言转Go最大的挑战之一就是错误处理。对那些习惯了使用异常的开发者,Go采取的方法有些离经叛道。但Go语言使用的方法蕴含着牢不可破的软件工程原理。本章中,我们学习如何在Go中处理错误。我们会学习Go系统中会停止执行的错误处理panic和recover。
280 0
|
存储 设计模式 Cloud Native
云原生系列Go语言篇-类型、方法和接口 Part 1
通过前面章节的学习,我们知道Go是一种静态类型语言,包含有内置类型和用户定义类型。和大部分现代编程语言一样,Go允许我们对类型关联方法。它也具备类型抽象,可以编写没有显式实现的方法。
197 0
|
8月前
|
人工智能 Cloud Native Java
2025 开源之夏开启报名|AI + 云原生,10个开源项目、24个课题任您挑选
“开源之夏”是由中国科学院软件研究所发起的暑期活动,旨在鼓励高校学生参与开源软件开发与维护。活动联合各大开源社区提供项目任务,面向全球年满18周岁的高校学生开放报名。每位学生最多可申请一个项目。阿里云云原生提报了包括Apache Dubbo、RocketMQ、Seata等在内的10个开源项目共24个课题,涵盖技术优化、功能实现及AI应用等领域。活动流程包括选题、申请、开发与结项考核,具体信息可访问官网了解。
2640 33
|
JSON Cloud Native Java
云原生系列Go语言篇-标准库Part 2
REST API将JSON奉为服务之通信的标准方式,Go 的标准库内置对Go 数据类型与 JSON 之间进行转换的支持。marshaling一词表示从 Go 数据类型转为另一种编码,而unmarshaling表示转换为 Go 数据类型。
158 0
|
Java Serverless Apache
9 个开源项目、25 个课题可选丨欢迎报名阿里云云原生开源之夏
2024 开源之夏,阿里云云原生应用平台团队开放了包括 Apache Dubbo/Apache RocketMQ/Apache Seata/Higress/iLogtail /Nacos/Sentinel/Spring Could Alibaba / Serverless Devs 在内,涉及微服务、消息、可观测、Serverless 4 大技术领域的 9 个开源项目。
2186 113
|
Kubernetes Cloud Native Go
Golang深入浅出之-Go语言中的云原生开发:Kubernetes与Docker
【5月更文挑战第5天】本文探讨了Go语言在云原生开发中的应用,特别是在Kubernetes和Docker中的使用。Docker利用Go语言的性能和跨平台能力编写Dockerfile和构建镜像。Kubernetes,主要由Go语言编写,提供了方便的客户端库与集群交互。文章列举了Dockerfile编写、Kubernetes资源定义和服务发现的常见问题及解决方案,并给出了Go语言构建Docker镜像和与Kubernetes交互的代码示例。通过掌握这些技巧,开发者能更高效地进行云原生应用开发。
415 1
|
Kubernetes Cloud Native Go
《Go 简易速速上手小册》第10章:微服务与云原生应用(2024 最新版)(下)
《Go 简易速速上手小册》第10章:微服务与云原生应用(2024 最新版)
245 0
|
Cloud Native 算法 Go
《Go 简易速速上手小册》第10章:微服务与云原生应用(2024 最新版)(上)
《Go 简易速速上手小册》第10章:微服务与云原生应用(2024 最新版)
294 0

推荐镜像

更多