All great products and services start from an idea. Converting an idea from a doodle on paper to a product is like navigating an adventurous maze, and a journey that involves many activities. To exit the maze and end up with a helpful product, doing the right things at the right time is essential. Luckily, we use many tools during this transformative journey, including a platform to help propel ideas faster. And to make this journey smoother, platform engineering teams often create golden paths. Golden paths guide developers to achieve a task following best practices, by simplifying processes and ensuring quality.
In this blog post, we’ll look at golden paths, explain what they are, and discuss how critical they are to platform engineering. We’ll also define the steps needed to create a golden path.
What are golden paths?
Platforms offer developers quick access to resources and tools to turn concepts into reality. From code libraries to testing frameworks and collaborative spaces, platforms have become accelerators for innovation. Golden or paved paths are predefined routes in a platform that outline the best practices, steps, and required tools to achieve a specific goal. They are well-structured pathways that guide developers through building, deploying, and testing applications.
To understand this better, think of the process of building and deploying a web application. A golden path for this use case involves a development environment for building with node.js, configuring docker containers and Git for version control, setting up Jenkins for CI/CD, Kubernetes for container orchestration, and MongoDB for data. All this, including building, testing, and deployment, is automated.
This golden path can be provided as a template or guided workflow for new developers to help them walk through the golden path, giving them all the necessary tools and configurations to start the development process.
Key principles for building golden paths
Building a golden path requires more than simply combining tools and services. It’s about carefully understanding the needs of your developers and crafting a path. Below are some key principles to help you build a golden path:
- Single path: A golden path must be well-defined and built to complete one task. It should allow developers to complete a task in a standardized way, removing any ambiguity. Every developer in the team should be able to complete a task in the exact same way as other developers.
- Reduction of cognitive load: Golden paths should provide pre-established best practices for completing tasks. This reduces the cognitive load on developers, allowing them to focus on implementation rather than navigating the complexities of configuring different tools and services.
- Self-service: Golden paths should promote self-service by offering automated ways for developers to request and provision tools and services. This empowers developers to navigate the path independently without an external intervention, which also quickens the whole process.
- Flexibility and configurability: Golden paths should allow for flexibility and configurability. For instance, a golden path should enable deployment across various platforms (EC2, Google Cloud) without subjecting developers to an entirely new learning curve. This ensures portability and ease of use across different infrastructures.
These principles are the foundation for effective and efficient development and offer a streamlined and standardized approach to building golden paths.
Golden path benefits: Reduce developer toil and drive quality
Platforms redefine how teams build, deploy, and maintain applications by orchestrating tools and environments, streamlining processes, and optimizing workflows. Let’s look at some of the benefits of golden paths that accelerate delivery and fuel innovation.
- Reduced developer toil: Golden paths significantly reduce manual and repetitive tasks during the application development lifecycle. By automating such tasks, platforms allow developers to focus on value-driven tasks rather than toil.
- Better quality and consistency: Golden paths focus on standardizing processes by enforcing best practices across development and deployment cycles. This helps create a consistent path with minimized errors.
- Shorter release cycles: With golden paths, developers can follow predefined steps, leading to faster product releases. These steps have clear guidelines and standardized procedures, enabling faster release cycles.
- Faster onboarding: Golden paths streamline the onboarding process for new team members by offering standardized workflows. New members can familiarize themselves with the development practices, tools, and processes that enhance productivity.
So now we understand what golden paths are, the principles to help build them, and the benefits they provide, how do you actually create a golden path?
How to create a standardized golden path
Before embarking on your journey of creating a golden path, it’s important to completely understand the development process. This includes knowing what tools are involved, all necessary processes, and the steps that follow. Without this understanding, it’ll be difficult to create a standardized path.
There are different ways to create a golden path, the one we’ll discuss is “intent-based”. As the name suggests, this approach involves articulating the intention in a structured format from a developer’s point of view in the following way:
“I want to [verb][adjective][noun]”
Which for example would be:
“I want to deploy a scalable node.js, Mongo DB application on Kubernetes.”
This intent-based statement precisely articulates the objective, desired outcome, and specific technologies for deploying a scalable web application. It’s a foundational step towards outlining a standardized golden path for deployment, and one which leads to the next stages of building your golden path.
Steps to creating a golden path
- Define goals: The first step is to understand the end goal of your golden path. What do you want to achieve? In this case, we wanted to deploy a node.js, MongoDB application to Kubernetes using Jenkins.
- Choose your tools: Interview your end users (developers) and understand the tools they use daily to achieve their goals. Decide on containerization tools like Docker, orchestration tools like Kubernetes, or CI/CD tools like Jenkins.
- Research best practices: Once you know the goal of the tools and processes involved, research the industry standards and best practices for using those tools and processes. Gather insights on optimal practices for developing, testing, and deploying applications.
- Create a prototype: Once you’ve gathered the tools and best practices, create an initial version of the golden path. This could involve building a simplified version of the deployment process, setting up basic configurations, and testing the workflow using the selected tools.
- Documentation: The next important step is to create a document detailing each step, tool use, configuration settings, and best practices. The document should include clear instructions, code snippets, and explanations.
- Get feedback and iterate: Share the prototype and the documentation with your developers and gather feedback. Feedback could involve insights on usability, effectiveness, and areas for improvement. Use this feedback to iterate on the golden path and refine it. Update the documentation alongside every iteration until the final acceptable version is reached.
Once the golden path is ready, it can be deployed to your Internal Developer Platform (IDP) as a template or a guided walkthrough for a developer to follow, as shown in the below diagram. The developer can create a workload specification for their workload, which can be passed to the Platform Orchestrator to provision the resources, including compute, networking, or storage, as defined in the spec based on the golden path.
Considerations while building golden paths
Think of building a platform like developing a city’s infrastructure, while creating a golden path is like laying a highway. It’s exciting and thrilling. However, it’s essential that teams build golden paths based on a long-term view. Here are a few considerations to keep in mind.
Don’t build for day one
As platform engineers, it’s a common temptation to optimize solely for immediate needs. For instance, creating a golden path to develop a new microservice, or to set up a new database, documentation, etc.
But how often does your team perform these tasks? The reality is that developers don’t always build something new, they often focus on enhancing existing services.
So it’s important to resist the urge to focus on short-term gains instead of taking a long-term view. And it’s best practice to build golden paths for day two operations rather than day one. This might mean creating paths that enable developers to integrate additional features to existing microservices, integrate security, conduct testing, and so on.
Not everything can be a golden path
Developers perform many different activities daily, but does that mean you need to convert all of them to a golden path? The answer is no. Creating a golden path for every task may lead to more complexity and diminishing returns.
Prioritizing is essential to help platform teams focus on tasks that will lead to significant impact. By doing so, they can be sure that the chosen golden path aligns with the most frequent, critical, and impactful tasks.
Interacting with your developers and understanding their various activities will help you prioritize the most critical tasks. You can also then monitor the last few deployments and analyze the processes that most need addressing. As Kaspar von Grünberg mentioned, “Tackling these processes with golden paths would result in the highest impact and ROI.”
Ready to build your golden path?
We can’t stress enough the advantages that golden paths bring to your platform. From focused development goals to improved collaboration, the potential is transformative. While we’ve outlined the steps needed to build a golden path, teams must also understand that not everything can be a golden path. By doing so, they can be sure that the chosen golden path aligns with the most frequent, critical, and impactful tasks.
Armed with this knowledge, you should be ready to build your golden path. If you’re just starting your platform engineering journey and want to learn more, check out some other blog posts we’ve written on platform engineering.