
Enhancing developer experiences with Kubernetes
But what do developers want?
Independence: Self-Service Deployment
Developers want to quickly and independently deploy to any k8s cluster on any cloud for dev, test, or delivery purposes, without back-and-forth with the delivery team.
Speed: Idea to Code to Outcome
DevOps tends to conjure up an image of the development and operations halves of the cycle as not just equal, but also symmetrical — remember the infinity visual of the DevOps cycle? The reality is a little more complex. Application teams want as little time and energy spent on deployment and operations as possible. They want to quickly propagate app changes and focus on understanding customer feedback, planning feature improvements, writing better code and optimising application performance. Time spent by a developer learning the peculiarities of Kubernetes is time snatched away from focusing on customer-centric application development
As a result, developers want to speed up the journey from idea, to code, to outcome. They want to declare their end-game and have the process be taken care of.
Accuracy: Eliminating Errors and Version Problems
Developers don’t want to write custom scripts either. Give them a tool that standardizes it and they’ll be glad.
Performance: With CI/CD
A robust CI/CD pipeline goes a long way to making a developer more productive. It automates testing for each codebase, identifies errors quickly, prevents code from breaking, enables you to ship quickly, and so much more. Without a good CI/CD pipeline, development teams will be waiting in queue for deployment, investigation, and bug-fixing. They’ll spend time monitoring the various versions of the system, maintaining a log of code changes and so on.
Developers wants a flexible, yet robust CI/CD pipeline, which also integrates well with other Kubernetes tools for deployment optimization.
Flexibility: Developing and Testing Locally
Developers like to develop and test locally. To test their code, they might need to call other microservices, which may be on local or remote clusters. This can get cumbersome — for example, when there are myriad dependencies across microservices and applications.
Developers need a system that can integrate local development and testing to the remote Kubernetes clusters without hassle.
Experimentation: Production-Grade Beta Testing
Developers want the ability to seamlessly perform canary deployments.
Visibility: Single-Pane View of Changes
Multiple developers making changes to microservices in any application is rather common. This is made more complex when the same application is deployed on a multi-cloud strategy. Developers fear their code breaking or their feature not working as expected because of this.
Therefore, developers want visibility into the changes made across microservices — so that updates are clean and accountable.
Leveraging Tools for Enhancing the Developer Experience
Even if these look like a rather unattainable wish list, in the end, developers just want to write code that works. They want automation that can take care of platform issues. They want tools that can integrate effortlessly with their existing systems. They want to keep track of the work they’ve done and the progress they’ve made.
Working directly with Kubernetes can seem convoluted and daunting, but there are several products on the market that can help you. You might find one product for each of your wants, or one that can handle them all. For example, we’ve been working on an open-source app delivery tool that can generate Docker files, build Docker images, generate Kubernetes manifests and deploy to any k8s cluster — significantly reducing the manual work developers have to do.
It’s widely noted that the k8s ecosystem isn’t the most user-friendly. Adam Jacob of Chef called it “hot garbage, from a user experience perspective”. But it doesn’t have to be. If you know what you want, there will definitely be a tool for it!