Why Create a Developer-Focused Kubernetes Platform and How
Within the growing cloud native development space, consensus has emerged around Kubernetes as the de facto standard for organizations. Many leaders in companies at the forefront of cloud native development in production confirm that Kubernetes is mostly a common orchestration framework for now. Kubernetes, in other words, is not “the hard part.” Instead, it’s “all the other stuff that’s hard: linking everything together and making it work.”
Against a backdrop of developer-first Kubernetes as something of a standard, platform engineering and the developer platform concept has become a kind of Holy Grail for organizations seeking a way to make the cloud native journey smoother for developers at every level of experience. There’s no one tried-and-true developer-focused Kubernetes platform, which is the challenge and the beauty of the whole idea. The tooling landscape is vast, with organizations putting together their own developer platforms to pick and choose what works best for their needs. However, this can also lead to choice paralysis and false starts, slowing things down and negating the speed benefits going cloud native was meant to introduce.
With this in mind, let’s look at why creating a developer-focused Kubernetes platform makes sense and then explore what components you need to build it.
Developer-First Platforms: Overcoming K8s Complexity
No one denies that the cloud native paradigm introduces new complexity into the development mix. Suddenly the silos of monolithic development have broken down, and the more linear development workflow — code and hand off to someone else — shifts to a decentralized microservices architecture. Now there are different dependencies and new demands, such as the shift-left idea of “you build it, you run it” that has accompanied the cloud native revolution. But in how much depth does a developer really need to know Kubernetes? Does the developer need to be responsible for the full software life cycle or just understand critical aspects of it to facilitate speed of delivery and faster feedback loops?
These questions underpin the discussion on developer platforms, which have been the focus of much debate in recent months. Whether these platforms eliminate frustration, improve productivity or help standardize workflows, one takeaway from the development community (and their colleagues in DevOps and platform engineering) is that a developer-first platform should reduce complexity with standardization but make room for exceptions.
How to Create a Developer-Focused Kubernetes Platform
There is no one-size-fits-all developer platform, making room for paving a path that achieves exactly what an individual organization needs for its developers. What do developers need to know to ship software safely, and how will a platform get them there?
Some key considerations for what development teams need from an efficient developer-focused Kubernetes platform include:
- Support for developer self-service and visibility. Create a baseline for the tools and visibility required to do the job and build in flexibility to ensure no one is locked in. A self-service baseline allows everyone to work from the same set of standards independently and makes it easy to get new developers onboarded faster to facilitate reliable, efficient production.
- Make it simple. Yes, developers need to understand Kubernetes, but only to the degree that this understanding contributes to shipping software and getting critical feedback faster. Mobilize simplicity and clarity by giving developers enough capabilities to go fast without worrying about important — but for them, secondary — considerations, such as infrastructure and security.
- Unleash the power of DevOps/PlatformOps. DevOps, PlatformOps and site-reliability engineering teams are more than just firefighters and the first line of support. Creating a developer-focused self-service platform enables them to focus on strategic projects and support continuous improvement.
- Centralize key data. Teams need real-time data to gather insight to understand what’s working and what isn’t. Whether measuring performance or tracking compliance, a centralized platform enables the collection of operational and resource data.
- Focus on faster feedback. The current macroeconomic moment heightens the need for doing things faster and more efficiently. A good developer platform should deliver fast feedback so no one is sitting around waiting for builds to happen.
- Facilitate the developer experience. Anything that can reduce cognitive load and keep developers focused on their core tasks, particularly when market conditions are challenging, is a good investment.
While all of this provides background and reasoning for why a developer-focused Kubernetes platform makes sense, what components will get them there?
The Core Components of a Developer Platform
Though Kubernetes has existed for years, it still poses challenges, and developer platforms have been crafted to tackle those challenges and provide some relief to ops teams. These platforms aim to answer questions like: How do you build a productive developer workflow on Kubernetes? How do you create development environments, integrating your source control system, development environment and your deployment system? How do you effectively collaborate with increasingly complex workflows?
Every platform will look a bit different, but ultimately you want to select components that help you code, ship and run your service.
First, a platform will require setting up, configuring (and maintaining) a local development environment (and test environment) that mimics a production environment as closely as possible. Source control and CI/CD functionality also should be in place. Ideally, you would set up your platform to enable developers to code locally but test the code against remote services and data stores (that is, remote-to-local, or “remocal,” development).
The dev environment and workflows created in this step contribute to the developer productivity every organization is after, which is why getting this part of the platform right is critical.
Much of the discussion in the cloud native space about getting developers to “shift left” involves enabling developers to take on end-to-end code-ship-run responsibilities. This isn’t always feasible or desirable — it depends on the organization and its cloud native maturity level. But the underlying idea of giving developers more insight into and responsibility for quality-focused tasks throughout the software life cycle does mean that developers are more involved in phases after their code moves into the ship phase. Many organizations have invested in developer platforms to create frictionless paths into these new elements to developer responsibility, paring it down to the “need-to-know” essentials, abstracting it from complex functions that developers don’t care about (or don’t need to) or interact with.
Visibility is one of the must-haves for Kubernetes developers. One of the challenges of distributed services is understanding which versions are deployed and released and all the dependencies that make a developer’s application work. Naturally, this is complex, and visibility will clear the path. At the same time, the platform should provide easy ways to test new versions, using tools like canary releases, so that services can be released incrementally and safely to end users but rolled back quickly if and when something goes wrong.
When running your services, your platform should include traffic management capabilities, such as load balancing and rate limiting, to ensure the availability and scalability of microservices. But no matter what traffic management policies you create and despite the best testing efforts and the number of canary releases, something that can go wrong probably will. Your platform should be designed to handle these hiccups, enabling rapid mitigation and response to production incidents as part of your workflow.
And of course, you will want observability to monitor and detect anomalous behavior to more easily and quickly identify concerns.
Real-World Kubernetes, Platforms and the Developer Experience
The developer platform has become a front-and-center way to shape and ease the developer experience from Day 1. The foundation of a good developer platform, regardless of which tools and processes it contains, is about guiding developers in your organization to what they need to know, see and routinely do to be successful.