Lessons from the K8s Vanguard: Invest in Onboarding, Freedom & Responsibility, and Integrated Tooling
Kasper Nissen of Lunar chatted with Ambassador about maturity in the cloud-native space, the changing developer experience, and an organization's responsibilities in promoting developer ownership of the full code-ship-run process.
A recent interview between Lunar's Kasper Nissen and Ambassador Labs' Daniel Bryant revealed what companies at the vanguard of cloud-native software development and Kubernetes focus on to successfully and safely ship software quickly while leading the way in cloud-native fintech technology development.
Leading the cloud-native charge: Building over and above K8s
"It's not just Kubernetes now -- that's just the common framework. It's all the other stuff that's the hard part now: linking everything together and making it work." -Kasper Nissen, Lead Platform Architect, Lunar
Companies building cloud-native software are at different maturity levels. Those that have been cloud native since their inception, running Kubernetes in production for a number of years, are at the leading edge. They are in a constant state of evolution, surfacing many of the challenges that other organizations will face as their cloud-native approaches mature. For other organizations that are new to cloud-native development, they are still in the early stages, figuring out the basics of cloud native and Kubernetes.
For pioneering organizations in the cloud-native space, Kubernetes is now the default, or the foundational, framework — almost an afterthought. For these organizations, how they evolve and link all the platform components, tools, and developer experience touchpoints together that are required in order to rapidly and safely deliver software is the bigger challenge. Here the role of standards, tech integration/interoperability, and identifying common workflows is key.
Shift-left: Giving developers code-ship-run ownership
In the background, the challenge is to make sure developers have all the right tools and information to be able to take ownership of the full software life cycle. By centralizing tooling and providing an opinionated platform, or “paved path”, for developers, companies like Lunar can accelerate developer ramp-up and productivity.
If a platform team can offer a preferred take on how to do specific tasks in the workflow and recommend a set of tools to use, developers won't spend too much time on trial and error. Yet as they learn, developers are empowered to explore other possibilities. Lunar believes in the balance of freedom and responsibility, telling developers: "This is not the only way to do X, but it's one way that we know works, and we recommend that you learn to do it this way to start".
Facilitating this changed developer experience, Lunar has encouraged developers to "shift left" i.e. take more responsibility for quality-focused tasks earlier in the software lifecycle, such as compliance testing or security verification/scanning. Lunar has also focused on enabling developers to take on code-ship-run responsibilities, which has fundamentally pushed the developer experience in a new direction. Lunar's developers live the oft-cited "you build it, you run it" mantra because platform teams have already paved as frictionless a path as possible for developers joining their organization.
The underpinnings of this frictionless path were funneled into Lunar's open source project, Shuttle, which is a centralized place for handling shared technology-agnostic build and deploy tools between many projects. Shuttle pares down key information to the essentials, abstracting it from complex functions that developers don't (or don't need to) care about or interact with.
The importance of providing a cloud-native education
To fully empower developers to take on the complete software life cycle, a balance of freedom and responsibility is a must. Yet to get all developers onboard with this concept, platform teams have a responsibility to make that move manageable. "Platform teams can't just put all this responsibility onto developers and say, 'Go figure it out and become experts in all these different systems.'"
Instead, platform teams need to lay the groundwork for “shifting left” and make it easy for developers to code, ship, and run. If done correctly, this should help organizations realize the speed benefits of cloud-native development and get fast feedback loops without any downside.
To make these approaches to developer ownership and shifting left possible, companies at the vanguard of cloud-native innovation need to be prepared to deliver a cloud-native education. Both experienced and new developers frequently come into the cloud-native workplace with very little understanding of how cloud-native development works, and how responsibilities are delineated in this new culture.
Lunar has woven education into the fabric of their comprehensive onboarding process. Onboarding provides a service catalog that links to documentation and different services and libraries, as well as different variations on how to create a service, with examples of how other teams have created similar things. Lunar uses Backstage to help with fast-paced engineer onboarding. It has enabled clear visibility into what services exist and what they do, which benefits not only developers new to the company but the company as a whole. Here at Ambassador Labs we have created the Ambassador DCP for the same purpose, for both our own internal use cases and for those of other developers and organizations.
The underlying education at Lunar is set up to be self-service, which mirrors the way developers will work within the organization. The platform team's work is both about tooling (the paved path and making it easier to get started), but also about workflows and visibility. Lunar adopted developer-friendly GitOps workflows very early on and likewise created ways to let developers easily 'take the pulse of the system' -- both a "single pane of glass" to understand everything under the hood and a "developer control plane" to integrate all of these different activities and control them centrally.
Conclusion: Let developers drive — and thrive — in the cloud-native space
"Our job is to create an easy choice, but if that is not what the developer wants, they have the freedom to control it for themselves… but then it's their responsibility." -Kasper Nissen, Lead Platform Architect, Lunar
The shift left of responsibility to developers is well underway in cloud-mature organizations like Lunar, meaning that the developer experience has likely already undergone its biggest 'upheaval'. That is, for developers in a mature organization, learning the basics of Kubernetes and cloud-native is already done, and the move to full developer ownership is evolving.
As Kasper shared, the challenge now is to unite the complex tooling into a more centralized hub, giving developers even greater control and insight into the full development life cycle.