Source | alibaba cloud native public number
With the rapid development of Internet and cloud computing technologies over the past five years, application developers’ pursuit of efficiency and agility has finally brought the industry into a new era of cloud native. And the rapid popularity of cloud native concept, fire Docker, red Kubernetes, also indirectly let a programming language become the “master of the service side”. Needless to say, Golang is the red-purple “actor” in the cloud native field.
However, just as PHP is not necessarily the best programming language, the Go language itself is not the “master key.” The reason why Go language can take the high-speed train of cloud native is more closely related to its following characteristics:
-
The syntax is simple and easy to use. The cloud native community is a very open source and contributor oriented ecosystem, making Go, which requires little grammatical detail, quickly the “go-to” language for the community. Otherwise, a lot of projects in the cloud native CNCF community will be busy discussing this pointer and this reference, and any innovative design such as Kubernetes CRD will probably be cool.
-
Golang.org is a rich library. We modern software development industry, pay attention to “library oriented” programming, who has no problem with the hand HTTP framework or concurrent library. The more libraries we have out of the box, the more efficient our r&d will be. In this regard, Go not only has an innate advantage, but it has snowballed into the cloud’s dominant language.
-
Simple deployment. Once the Go language project is developed, a static file is ready to run, which is especially good for running in Docker. You can imagine if Kubernetes were developed in Python or Ruby, it would be a headache to deploy online.
-
Performance is good and optimization is relatively simple. Go is not performance king, but it does a good job of balancing performance with the mental burden of programmers. For the positioning of Docker and Kubernetes, this balance is just right.
So by 2020, Go has become one of the most important “tickets” to the cloud native community: if you don’t know the Linux kernel, you still have a chance to learn it. Can’t Go? You’re really going to be stuck.
And as the saying goes: to be a good linguist, you need to practice! One of the biggest benefits of our cloud native community is that Go language open source projects, high-quality Go language open source projects are more! From containerd at the bottom, to Kubernetes at the choreography level, to Istio at the current purple level, just pick one and you’ll have a lot to study.
However, most of these well-known projects are now mature and rarely accept features of large particles. And even when the Pull Request (PR) is up, it’s excruciatingly slow to merge. So the question is, what are some of the early, hot Go projects in the cloud native space that YAML engineers are still looking for?
The KubeVela Open source project released by the Open Application Model (OAM) community at the just concluded KubeCon North America Summit 2020, the most authoritative in the field of cloud origination, really made people’s eyes shine.
- KubeVela project official website: kubevela.io/
- GitHub project address: github.com/oam-dev/kub…
Just four days after the announcement, KubeVela has climbed to the top of GitHub’s Trending Go section.
In the three KubeVela/OAM related technical lectures on KubeCon, The KubeVela project received “360 degrees” of attention and praise. For example, CNCF application delivery field team introduced the KubeVela project, “Internet celebrity” cloud native engineer Melanie from Airbnb live-streamed the whole speech, and finally gave KubeVela project a big thumbs up!
“What if I want a Heroku on the K8s?” “KubeVela!”
Seeing this, I believe you are already curious about this project. GitHub trending list # 1 Go language, what is the origin of this project?
What is KubeVela?
In short, KubeVela** is an easy-to-use and highly scalable application management platform and core engine. KubeVela is built based on Kubernetes and Open Application Model (OAM) technology.
Specifically, KubeVela is a very low mental burden cloud native application management platform. Its core function is to allow developers to quickly and easily define and deliver modern microservices applications on Kubernetes without knowing any details about Kubernetes itself. In this regard, KubeVela can be considered the Heroku of the cloud native community.
To put it more generally, if you are an application developer and want to deploy an application on K8s, you no longer need to learn the complex knowledge of K8s, just use KubeVela to easily get started with various K8s functions.
On the other hand, KubeVela is a powerful and highly scalable cloud native application platform core engine for the PaaS platform team. With such an engine, the platform team can quickly and efficiently integrate any application management capabilities from the cloud native community into KubeVela in a Kubernetes native way to build their own cloud-native platform based on KubeVela, such as: Cloud native database PaaS, cloud native AI platform, and even Serverless services. At this point, KubeVela can be thought of as an “application-centric” Kubernetes distribution with OAM at its core, Platform teams can quickly build their own PaaS, Serverless and any user-oriented cloud native platform projects based on KubeVela.
Why is it so popular?
Not long ago, KubeVela project leader said in an interview with a domestic technology media: “At present, many business users lack a physical sense of the value of ‘cloud native’ and Kubernetes, which is a headache for the whole community. The fundamental reason is that there is an “application layer” abstraction that needs to be filled in between Kubernetes and its users.
To be sure, the core concepts of Kubernetes and cloud native technologies are far from business users. Through the actual implementation process of these technologies, it is not difficult to see that there is still a huge gap between the infrastructure layer abstraction and the “silky” cloud application management and delivery experience of the cloud.
And Open Application Model (OAM) Open Application Model, as well as its Kubernetes implementation KubeVela project, is ali Cloud together with Microsoft and other cloud native community backbone, jointly launched “to solve user side demands” as the core cloud native Application layer project. OAM is designed to provide a unified, end-user oriented application definition model for any cloud infrastructure, including Kubernetes. And KubeVela is the complete implementation of this unified model in Kubernetes.
“Only when business r&d touches on ‘code’ and ‘application’ instead of ‘Pod’ and ‘StatefulSet’ can the beautiful, simple cloud-native desire of r&d focus on writing code be truly realized,” said Zhang lei.
Can I be a contributor to KubeVela project?
Of course!
The main basis for becoming a KubeVela contributor is, of course, Go. In detail, KubeVela relies on the following Golang ecosystem tools:
- Golang Development environment: 1.13+;
- Ginkgo 1.14.0+, Ginkgo is a KubeVela dependency to run E2E tests;
- Golangci-lint 1.31.0+, Golangci-Lint is a dependency on KubeVela to check your code style and specification.
In addition, KubeVela will want you to have some basic knowledge of Kubernetes. Of course, you don’t have to be a Kubernetes expert: with the Go language as your “ticket,” you don’t have to worry.
In addition, before contributing to KubeVela, please be sure to read its contributor documentation. This document also links to KubeVela’s detailed design document, which should be a reference for contributors.
So what are the technical points to contribute to the KubeVela project?
As a “highly scalable” cloud-native application platform, KubeVela is a project with high playability in which almost every feature is extensible, pluggable.
Just a day after KubeVela became open source, contributors from the community added support for the Contour Ingress controller. And the PR has been merged, which means that in the next Release, KubeVela will natively support Envoy based application access routing. Similarly, other features in KubeVela, such as Autoscaler, provide a lot of expandable space in a Kubernetes native way.
On the other hand, the design of the entire KubeVela platform is composed of Workload Types and traits. So, feel free to add a variety of Workload types and traits to KubeVela, such as StatefulSet workloads, CloneSet workloads, blue-green publishing traits, traffic management traits, and so on. For this part of the application management ability, only you can not think of, without you can not do, the future KubeVela has what ability, how abstract design, you have the final say!
Then there is the user interface and model layer. KubeVela Appfile and the OAM model engine behind it. This section is the most core part of KubeVela, but is generally stable and suitable for mid-level developers who have some knowledge of KubeVela and OAM. In particular, students who have performed OAM landing in the internal scene can continue to show their skills in this field.
Finally, and most importantly, any Kubevela-related shares and case articles. Yes, contributing to the KubeVela project doesn’t have to start with the code. Any post about KubeVela usage, integration, or even teasing is a great contribution to the value of the entire community, and we look forward to it!
KubeVela follows the CNCF contributor ladder with two Maintainer levels. Project contributors with sufficient contributions will be nominated by existing maintainers as Reviewer and awarded project maintenance rights and KubeVela project Member. Reviwer members with outstanding performance will be nominated as Approver and become the core maintainer of the project.
KubeVela is the core engine behind many of Alibaba’s own Internet-level application platform products, such as Alibaba Cloud EDAS service, and is an open source project born from the cloud native community. The KubeVela project will be donated as a whole to the Cloud Native Community Neutral Foundation upon stabilization.
If you have any questions, please search the nail group number: 23310022 into the group communication!