As cloud-native technologies grow continuously, more infrastructure capabilities are becoming standardized PaaS or SaaS products. Nowadays, you don't need a whole team to build a product. Many services can help with software development, testing, and infrastructure operations. As the culture of agile development and cloud-native technologies expands, more roles can be shifted left to developers, such as testing, monitoring, and security. As emphasized by the DevOps concepts, it can be done in the development phase for the work of monitoring, security, and operations via open-source projects and cloud services. This also creates challenges for developers, as they might lack control of diverse products and complex APIs. They have to make choices, and they need to understand and coordinate the complex, heterogeneous infrastructure capabilities to satisfy the fast-changing requirements of the business.
This complexity and uncertainty have undoubtedly exacerbated the developer experience, reducing the delivery efficiency of the business system and increasing the operational risks. The tenet of the developer experience is simplicity and efficiency. Developers and enterprises must choose the appropriate developer tools and platforms to achieve their goals. This is also the focus of KubeVela v1.2, an upcoming release that will build a modern platform based on cloud-native technologies and cover development, delivery, and operations. The following diagram shows KubeVela architecture and how developers only need to focus on applications and use differentiated operational and delivery capabilities around the applications.
Pic 1 – KubeVela Architecture
Let's review the history of OAM and KubeVela to understand how it was formed:
If we want to create simplicity in a complex world, the first problem we need to solve is, "How can we make standard abstractions?" OAM creatively proposes two ways of separation:
In an ideal world, the operation can be fully automated. It is a cloud-native application specification that provides everything-as-a-service, a complete modularity design. The spec has been getting traction from major vendors worldwide since its announcement. We all share a common goal -- to reduce the learning curve and provide Lego-style application invention for developers.
Advanced community users can create tools to build practical solutions using the application specification as a guide. However, it is inaccessible to most developers. KubeVela was born as the community standard implementation to solve this problem. It absorbs the good parts from the latest Kubernetes community development and provides automated, idempotent, and reliable application rollout controllers. KubeVela can empower developers to deploy OAM-compliant applications quickly with its features.
As more enterprises adopt the cloud, hybrid and distributed cloud will become the norm in the future. KubeVela has been designed and built based on hybrid cloud infrastructure as a modern application management system. We anticipate that the architecture of modern enterprise applications will be heterogeneous, considering the factors of availability, performance, and data security. KubeVela v1.1 added a new feature to achieve a programmable delivery workflow. It natively fits the multi-cluster architecture to provide modern multi-cluster application rollout.
By the time of 2022, on the road to serve developers, KubeVela has gone to the fourth phase. It will empower developers to conduct multi-cluster rollout easier.
The best choice to reduce the developer's learning curve is by providing an easy-to-use UI console. Since its inception, the KubeVela community has been asking for UI, and it was added to KubeVela v1.2. Providing GUI will help developers organize and compose heterogeneous applications in a standard way. This will also help them analyze and discover business obstacles quicker.
VelaUX is a frontend project of KubeVela with an extensible core design. It introduces a drag-and-drop form for low-code experience users that takes users' input based on dynamic components. We designed the frontend description spec UISchema with X-Definition and multi-dimensional query language VelaQL to achieve this. This design makes the foundation for the heterogeneous application delivery architecture of KubeVela.
Users can manage add-ons, connect Kubernetes clusters, distribute delivery targets, set up environments, deploy all kinds of apps, monitor runtime status, and achieve full lifecycle management of application delivery from the GUI.
Pic 2 – KubeVela Application Dashboard
Please refer to the Core Concepts documentation to learn more details about the GUI.
KubeVela will manage N Kubernetes clusters and N cloud vendor services in a big unified infrastructure pool. This way, our developers can set up different environments based on business requirements, workflow policies, and team collaboration needs. This will create separate environment workspaces from the big infrastructure resource pool. One application can be deployed into multiple environments, and environments are isolated in management and runtime.
Pic 3 – KubeVela Application Status
As shown above, an application can be deployed to the default environments or other custom environments, such as test or prod. Each environment can include multiple delivery targets. Each delivery target indicates an independent, separate Kubernetes cluster.
In terms of cloud-native technologies, we have many options to build application delivery solutions. Based on Kubernetes, we can use mature technologies, such as Helm Chart, to deliver middleware and third-party open-source software. We can deliver enterprise business applications via container images and use OpenYurt to deliver and manage edge applications. Based on the open technologies of cloud services, we can deliver database, message queues, cache, and middleware, including operational features, such as logging and monitoring.
KubeVela adopts OAM as the standard application definition to manage heterogeneous application architecture uniformly. KubeVela provides a highly extensible delivery core engine. Users can use the built-in plugins or install more to extend the platform and manage application deliveries consistently. On top of KubeVela, users see the modular, everything-as-a-service control plane.
Pic 4 – Cloud Resources Deploy
As shown above, users can deliver cloud resources on the application management page conveniently. Developers can read the following docs to understand the full delivery process of the heterogeneous application architecture:
KubeVela has been designed as an extensible system from the beginning. The aforementioned heterogeneous application architecture can be achieved via KubeVela's extension system. It can be extended via standard interfaces and plug in as many capabilities as you want. This will match the differentiated requirements of enterprises while reducing the cognitive burden incurred while learning new things. KubeVela's extension system includes component types, operational traits, workflow types, and delivery policies. We have the add-on management system in the current release. An add-on packages the extension capabilities for easy distribution.
Pic 5 – KubeVela Add-Ons
Currently, we provide an official catalog with the pre-packaged add-ons shown above. Meanwhile, we can collaborate with community users in the experimental catalog repo to create more capabilities.
KubeVela has grown into an application delivery platform that serves developers directly. Which enterprise scenarios can utilize KubeVela? The section below lists some common scenarios:
Today, many enterprises' software delivery looks like the following diagram. They use the compute resources from cloud vendors for the demo and production environments, but they use their in-house server farm for the development and testing environments. If any business applications have multi-region disaster recovery requirements, the production environments can span multiple regions or clouds.
Pic 6 – DevOps Pipeline
The basic DevOps workflow includes code hosting and the CI/CD process. KubeVela can support the CD process. The practical steps for enterprises are listed below:
Using the KubeVela multi-cluster DevOps solution will provide the following advantages:
Different enterprises face different infrastructure and business problems and requirements. On the infrastructure side, enterprises could build an in-house private cloud, buy some public cloud resources, and own some edge devices. On the business side, the variance of scale and requirements will lead to multi-cloud, multi-region application architecture, while keeping some legacy systems. On the developer side, developing software will need various environments, such as development, testing, staging, and production. On the management side, different business teams need isolation from each other while opening up connections between some business applications.
In the past, it was very easy to become fragmented between different business teams inside enterprises. This fragmentation exists in the toolchain, technical architecture, business management. We take this into account while being innovative with technologies. KubeVela brings a new solution that pursues unified management and extensible architecture with good compatibility:
Thus, KubeVela can be used to connect different stages inside the enterprises and unify all capabilities in a single platform. It is a practical and future-proof solution.
Many enterprises that have enough development power will build internal application platforms because they can customize the platform and make it very easy for their use cases. In the past, there were many PaaS platforms born from Cloud Foundry. We all know the stereotypes that say application platforms will not satisfy all enterprises. If the application package format and delivery workflow can be standardized inside enterprises, all users need to do is fill in the image name. However, in traditional PaaS platforms, developers have to understand a bunch of so-called general concepts. For example, if an enterprise wants to deploy AI applications, and there is some difference in AI application architecture, we have to create such AI PaaS. Then, enterprises have to pay more fees and learn more concepts.
Therefore, when general products cannot satisfy the needs of enterprises, they will consider developing one on their own. However, it takes many resources to build an internal platform from scratch. Sometimes, it surpasses the investment of their core business. This is not a feasible solution.
Are you more familiar with the motivations and history of KubeVela after reading our introduction? No product is a silver bullet, but our goal of creating a standardized model to empower more enterprises and developers to participate in the path towards building simple and efficient developer tools remains. KubeVela is still in the early development phase. We hope you can join us to develop it together. We want to thank the 100+ contributors who contributed to KubeVela.
OAM spec is the cornerstone of modern application platform architecture. Currently, OAM spec is driven by the implementation of KubeVela for future improvement, but the spec did not rely on KubeVela. We highly encourage cloud vendors, platform builders, and end users to join us and define OAM spec together. We highly appreciate that vendors like Tencent, China Telecom, China Unicom have supported OAM spec and started collaborative work. Every person and organization is welcome to share ideas, suggestions, and thoughts.
Community Repo: https://github.com/oam-dev/spec
As mentioned above, we have created the add-on extension system, and we encourage community developers to contribute tools and share thoughts.
Community Repo: https://github.com/oam-dev/catalog
How to Contribute an Add-On: https://kubevela.net/docs/platform-engineers/addon/intro
KubeVela integrated the Terraform Module with Terraform controller to extend cloud resources. We have supported several cloud resources, and we encourage community developers or cloud providers to contribute more.
How to Contribute Cloud Resources: https://kubevela.io/docs/platform-engineers/components/component-terraform
We welcome everyone to participate in the KubeVela community discussion, whether you want to contribute code or learn more!
Community Repo: https://github.com/oam-dev/kubevela
KubeVela is a CNCF sandbox project. Learn more by reading the official documentation: https://kubevela.io/docs/
376 posts | 41 followersFollow
Alibaba Developer - November 17, 2021
Alibaba Cloud Native Community - February 1, 2023
Alibaba Cloud Native Community - September 16, 2022
Alibaba Cloud Native Community - January 9, 2023
Alibaba Cloud Native Community - June 21, 2022
Alibaba Cloud Native Community - April 19, 2023
376 posts | 41 followersFollow
Accelerate software development and delivery by integrating DevOps with the cloudLearn More
An enterprise-level continuous delivery tool.Learn More
Alibaba Cloud Container Service for Kubernetes is a fully managed cloud container management service that supports native Kubernetes and integrates with other Alibaba Cloud products.Learn More
Alibaba Cloud Function Compute is a fully-managed event-driven compute service. It allows you to focus on writing and uploading code without the need to manage infrastructure such as servers.Learn More
More Posts by Alibaba Cloud Native Community