Recognizing and Removing Friction Points in the Developer Experience on Kubernetes

November 1, 2021 Nivedita Ghosh

Kubernetes is a game-changing technological advancement, enabling infrastructure and operations teams to automate application deployment and management at scale. But it has also presented new challenges to developers. As organizations adopt cloud native application paradigms, they face a developer experience crisis due to the complexity of the cloud native ecosystem and a steep learning curve for developing applications for Kubernetes.

Developer challenges 

Developers need to master Kubernetes concepts, artifacts, and the best practices for developing applications running on Kubernetes. Unfortunately, they are often left to explore on their own this large ecosystem, which offers an overwhelming choice of seemingly incoherent tools. This can lead to lengthy ramp-up time and frustration. Even after accumulating a set of disparate tools, developers find themselves spending a lot of time editing a series of YAMLs to manage deployment of their application instead of developing innovative application logic.

Throughout the development process—typically a cycle of code, run, test, debug, repeat—developers need to be able to iterate on their code quickly. This iterative process is called the “inner loop.” Developers want this inner loop cycle to be fast, as they spend the majority of their development time working on the inner loop. But the inner loop process becomes lengthier when developing for Kubernetes. Every source code change involves not only rebuilding the source code, but also rebuilding and republishing the container image and redeploying Kubernetes resources before the code changes can be tested, significantly reducing developer productivity.

With Kubernetes in the mix, the inner loop becomes less efficient.

A superior developer experience on any Kubernetes with Tanzu Application Platform 

VMware Tanzu Application Platform, now in beta, is an app-aware platform that removes the friction for developing applications for Kubernetes by providing an abstraction layer on top of Kubernetes. It unlocks productivity by enabling developers to rapidly develop application logic with their familiar workflow, while allowing operators to deploy developers’ code fast to production environments, via an automated DevSecOps workflow that ensures security and compliance.

Here, we explore various capabilities offered by Tanzu Application Platform that enable application developers to produce business value at a rapid pace. 

Application bootstrapping with Application Accelerator

Developers get a jump start on developing new applications using application starter templates, also known as application accelerators, instead of starting from scratch. Application architects can create accelerators that consist of skeleton code, configurations, and cloud native patterns combined with an organization’s best practices and make them available to developers. Developers save significant time in bootstrapping a new application leveraging these accelerators, and architects are able to codify guardrails around security policies, establish best practice guidelines, compliance, and conformity consistently across teams. 

An abstraction for Kubernetes workloads

Along with other artifacts, an accelerator contains an application workload specification, a declarative manifest that describes the workload, the only YAML manifest a developer needs to interact with. 

An example of a workload specification manifest.

Developers specify information, such as the type of workload via workload type, as a web application, batch job, or streaming application; the location of the source code; intent to connect to any back-end services, such as a database or messaging service; or resource requirements in the workload manifest. The workload manifest establishes a contract between developers and operators for promoting source code to production. Based on the workload specification manifest, the platform performs the underlying interaction with Kubernetes for deploying and managing the workload, given the source code location.

Easier and simpler experience for application deployment

Deploying workloads on Kubernetes typically involves the following sequence of steps.

With Tanzu Application Platform tooling, the workload deployment becomes much easier and simpler.

Developers run a single CLI command—tanzu apps workload create -- file workload.yaml—and get a running workload on a Kubernetes cluster starting from the skeleton code provided by an accelerator. Tanzu Application Platform automates the entire application deployment process via an automated secure software supply chain workflow, relieving developers of the need for error-prone editing of a “wall of YAMLs”. 

While Tanzu Application Platform provides multiple layers of abstraction on top of Kubernetes to eliminate friction for developers, it also allows more experienced developers to directly interact with Kubernetes, all the way down to executing kubectl commands if they need to. The platform delivers a superior experience for developers with varying degrees of skills and experience with Kubernetes and cloud native applications, through a flexible architecture of abstraction and automation.

Rapid inner loop experience from IDE

After a fast bootstrapping of a new project, developers typically enter into the inner loop cycle of iteratively adding code, building, deploying, testing the code changes, and debugging. And they likely prefer to perform all those activities right from their integrated development environment (IDE) efficiently, so that they can continue to follow their familiar development workflow. Tanzu Application Platform provides a set of developer tools that allow developers to debug a running container on any Kubernetes cluster, whether running locally or on a managed Kubernetes cluster on a cloud, from the IDE itself. The tooling also shortens the path for live updates of code changes by eliminating the steps of rebuilding, republishing, and deploying the container, instead directly injecting the updated code to the running container. So developers are able to test the code changes instantly as they iterate on code. Tanzu Developer Tools for VSCode provides an easy and efficient inner loop experience for developing modern applications using VSCode IDE without any additional effort from developers. Extension for more IDEs is planned for the future.

Developers can deploy and debug apps and live-update code on a Kubernetes cluster right from their IDE.

You can watch a demo of the developer experience in Tanzu Application Platform in the video below.

Separation of concerns 

“It works on my machine” is a familiar phrase to many. 

Tanzu Application Platform establishes a separation of concern between developers and operators. Operators in an organization typically configure software supply chain workflows using a set of tools that ensure consistency between development and production environments without getting into developers' way. A software supply chain configured in a developer’s personal environment is optimized for the inner loop cycle, yet uses the same set of tools for taking source code to a running workload. Due to this consistency of tooling established by operators between environments, developers can have a high level of confidence that the code developed in their personal environment will run in the production environment as expected. Tanzu Application Platform enables developers to build portable applications that avoid the expensive debugging in production environments often caused by inconsistencies between development and production environments.

Troubleshooting running applications

Developers often need to inspect a running application to analyze its behavior for troubleshooting, debugging, or fine-tuning the runtime configurations. Tanzu Application Platform provides diagnostic tools for developers to drill into runtime characteristics of applications, such as resource consumption or incoming traffic pattern, as well as change  parameters such as log levels or environment properties for troubleshooting running applications. The diagnostic tool currently supports Spring Boot-based applications, but it is designed to be a polyglot and is intended to support other frameworks in future releases.

Live inspection of running applications.

Frictionless handoff between developers and operators

Once developers are satisfied with their code, they commit the code to a code repository to share with the rest of the teams, and the development lifecycle transitions from the inner loop in a personal development environment to the outer loop in a shared environment on its way to promotion to production environment. Operators configure their secure software supply chain with security and compliance baked in to take the committed code to production. A smooth handoff between developers and operators is a critical factor in rapidly deploying code into production. In fact, according to Gartner (Reduce Friction to Boost Software Engineering Team Productivity, Applications and Software Engineering Research Team, 25 May 2021), the top two reasons for development friction are the handoff between roles or teams (37 percent) and lack of required expertise (27 percent). Tanzu Application Platform makes the handoff between developers and operators frictionless, as it requires a simple code commit, or ‘git push’. As developers commit code, the software supply chain is triggered automatically, providing a continuous path to production. 

Runtime best practices on behalf of developers

There are best practices that should be followed when deploying applications in Kubernetes, in the absence of which the deployed workload may have unpredictable runtime behavior disrupting business continuity. However, application developers, who are not experts on Kubernetes, would often be unaware of such runtime best practices. The VMware Tanzu Convention Service provides a framework for operators to configure policies, i.e., conventions for runtime configuration of deployed workloads, and automatically applies applicable conventions to workloads, as configured by operators. For example, Convention Service can enrich the Pod Template spec by adding liveness, readiness probes, or container lifecycle hooks automatically, being aware of the workload specification. Tanzu Application Platform enables operators to ensure that all workloads running in a cluster follow best practices, and application developers are able to focus on developing the application logic. 

Check out the Tanzu Application Platform beta

We are actively working with a wide variety of customers as we build momentum toward general availability. We would love for you to check out the delightful developer experience offered by Tanzu Application Platform Beta and give us feedback.

About the Author

Nivedita Ghosh

Nivedita Ghosh is a product lead at VMware Tanzu.

More Content by Nivedita Ghosh
Previous
Mario vs. Steve: What Video Games Can Teach Us about Monitoring vs. Observability
Mario vs. Steve: What Video Games Can Teach Us about Monitoring vs. Observability

What's the difference between monitoring and observability in cloud native systems? Look to Super Mario Bro...

Next
Announcing the Evolution of Tanzu Application Catalog to VMware Application Catalog
Announcing the Evolution of Tanzu Application Catalog to VMware Application Catalog

This library of validated, production-ready container images will soon support virtual machine images, maki...