Why Platform Engineering is so important? And what is it by the way?
I recently delivered a talk about Platform Engineering. I really enjoyed my interaction with the audience, it was in-person.
I have worked on the preparation for this talk for months, building the content and the flow. I wanted to write my own piece of content to summarize what makes a Platform Engineering practice successful, beyond the buzz and the hype.
“Platform engineering is an emerging technology approach that can accelerate the delivery of applications and the pace at which they produce business value.”
I recently read and watched about 200 articles and videos about Platform Engineering. There is a bunch of great contents to leverage out there. That’s so exciting and inspiring! I learned a lot!
I also built this content based on my own experiences as Software Engineer who then became a Platform Enabler passionate about DevOps, Kubernetes and Platform Engineering.
Throughout this blog article I will summarize my talk by wearing my Cloud Native Ambassador (CNA) hat (and perspective), talking about the best practices and the landscape.
At the end of the talk I got the opportunity to do a demo of Humanitec with a concrete golden path example: As Developer, I want to deploy my feature branch to an ephemeral environment. But I will keep that part for future pieces of content and blog articles. As part of my role at Humanitec, I’m helping customers integrating our product with their existing platform to improve the Developers Experience as well as standardize their platform and infrastructure capabilities. So much to cover here, stay tuned!
Note: if you want to download the PDF format of this presentation, you can directly jump to the end of this blog article.
Agenda
- First thing first, what’s DevOps?
- So why “DevOps is dead”? What does that mean?
- Long live Platform Engineering!
- Developer eXperience (DX) to reduce the cognitive load and increase the productivity
- Organizing Teams for fast flow
- Platform as Product
- Pave Golden Paths to drive standardization, and less frictions
- Metrics and dimensions about Speed/Productivity and Stability
- The Platform Maturity Model
- Capabilities of a Platform
- Where to start?
- Resources
First thing first, what’s DevOps?
“The DevOps movement is built around a group of people who believe that the application of a combination of appropriate technology and attitude can revolutionise the world of software development and delivery.”
The key point is that DevOps is the union of People, Process and Tools. It’s a culture. It’s not a role. It’s not one person.
So why “DevOps is dead”? What does that mean?
DevOps is still here, it’s a culture, it’s about best practices: automation, collaboration, infrastructure-as-code, etc.
But let’s take this statement:
“You build it, you run it.”
— Amazon’s CTO Werner Vogels (2006)
What does that mean exactly? There is room for interpretations here.
Like, I’m a frontend developer, do I need to do the backend code, the Dockerfile, the Kubernetes manifests, the Terraform scripts, the security scanning, the CI/CD pipelines, etc. all by myself? And the operations and monitoring of them? Should I set up all of these by myself? If you are one developer in your company, probably yes. But at scale?! That’s where the issues come.
Long live Platform Engineering!
Here comes Platform Engineering as an instance or implementation of DevOps and its best practices.
“After a huge amount of data collecting, thinking and debating among many folks across the company, we are ready to launch Programs & Platforms! (Attached to this email) you’ll find out whether you’re on a Program or Platform team, and where your seat will be with your new team.”
Developer eXperience (DX) to reduce the cognitive load and increase the productivity
“Developer eXperience is about creating an environment in which a developer can do their best work.”
Organizing Teams for fast flow
4 Team Types
- With flow in mind, the goal is to focus on autonomous, decoupled Stream-aligned teams who maintain full ownership of building, fixing and running their application.
- The Enabling team, which consists of a set of specialists which have a specific mandate to help the Stream-aligned teams to overcome obstacles. → I have seen many organization becoming more successful as soon as they were scaling and they invested in this Enabling team. This team is the bridge between the Stream-aligned teams and the Platform team.
- The Platform team, which offers internal services.
- The final team type is a Complicated Subsystem team which is supposed to be used very rarely.
3 Interaction Modes
- X-As-A-Service, where one team provides a service to another team with an API and service level expectations.
- Facilitating, where one team coaches another team on a specific aspect.
- Collaboration, where different team members work closely together.
Platform as Product
“A digital platform is a foundation of self-service APIs, tools, services, knowledge and support which are arranged as a compelling internal product. Autonomous delivery teams can make use of the platform to deliver product features at a higher pace, with reduced coordination.”
“compelling internal product” is key here. Here is what you should have for your Platform, with a product mindset:
- Value proposition, Org/Company alignment
- Clear roadmap/backlog
- Ongoing attention, evolve and adapt based on developers (your customers!) feedback and the changing business landscape
- Product Manager/Owner
- User research (quantitative and qualitative)
- Alpha/Beta/GA features
- Support and SLOs
- Platform Advocate/Marketing — have a brand
- Mesure adoption and usage (and frictions!)
Pave Golden Paths to drive standardization, and less frictions
“The Golden Path — as we define it today — is the ‘opinionated and supported’ path to ‘build something’ (for example, build a backend service, put up a website, create a data pipeline). The Golden Path tutorial is a step-by-step tutorial that walks you through this opinionated and supported path”
What are Golden paths?
- Describe opinionated and well-supported paths to “build something”
- Reduce set of tools and technology preferred to deliver values to the business
- Focus on an engineer’s intentions, not making engineers worry over implementation details
That’s key to reduce the cognitive load and improve the Developer eXperience discussed earlier.
Golden Paths can benefit multiple personas within your organization.
...
Golden Path templates are technical artifacts that need to be built, documented, and maintained. We recommend that each template is co-developed by at least two people/teams, spanning both the platform team and at least one stakeholder team.”
Kaspar von Grünberg CEO at Humanitec, in his talk Build golden paths for day 50, not for day 1! | PlatformCon 2023, is also highlighting 2 important approaches for your Golden Paths:
- Don’t just think about Day 1, think about the Golden Paths for Day 50 for your users.
- Golden Paths are not just for Developers, they are also for your Platform Engineers, and other key stakeholders interacting with your Platform.
Metrics and dimensions about Speed/Productivity and Stability
The 4 DORA metrics are key here, across two main categories:
Speed/Productivity:
- Change lead time
- Deployment frequency
Stability:
- Change fail rate
- Time to restore service
On top of the DORA metrics, the SPACE dimensions were published in 2021 :
- Satisfaction & wellbeing
- Performance
- Activity
- Communication & collaboration
- Efficiency and flow
burnout, productivity and job satisfaction — are how DORA measures well-being.
— Jennifer Riggins, TheNewStack (2023)
Talking about metrics and measurements (not talking about developer productivity here), it’s about your Platform, your Products, your Teams, per projects, environments, etc. On top of the DORA metrics, here are some other metrics you want to measure and leverage:
The Platform Maturity Model
“Through this work over time it’s become clear that people are struggling to identify and deliver on the key differentiators that drive success in platform engineering. In trying to clarify this messaging and journey, the team has developed a platform maturity model outlining principles and behaviours that can lead to more effective outcomes.”
“The Platform Maturity Model can become a valuable tool for organizations to evaluate which platform engineering best practices they still need to meet.
…
Our survey found that most organizations have a long way to go before they are fully aligned with best practices and have the right culture. However, the journey is worth the effort as organizations aligned with best practices can get more from their Internal Developer Platform.”
On November 1st 2023, the CNCF Working Group released the first official Platform Engineering Maturity Model.
Capabilities of a Platform
“In a nutshell, platforms bridge from underlying capability providers to platform users like application developers; and in the process implement and enforce desired practices for security, performance, cost governance and consistent experience. The following graphic illustrates the relationships between products, platforms, and capability providers.”
That’s a wrap!
We covered a lot! To summarize I really love how Chad McElligott summarizes what Platform Engineering is:
- What: Velocity
- Why: Stability
- How: Product Mindset
In addition to that, like illustrated throughout this blog article, don’t forget to invest in the Developer eXperience around your Platform. We also discussed how you could avoid frictions and accelerate adoption with well-supported Golden Paths. Last but not least, invest in your Enabling Team, think about Developer Advocates/Evangelists as internal champions.
Where to start?
- Start small with high impact
- Set a mission and clarify goals, have success criterias
Think OKRs!
- Truly know your Customers/Developers
- If you are struggling with adoption, you are not focusing on real problems.
Think Customer User Journeys (CUJs)!
- Provide boundaries and abstractions to reduce the cognitive loads on teams
Think Golden Paths or Jobs to be done (JTBD)!
- Adopt a Platform as Product mindset
Think OSS/Innersource projects!
- UX first: Developer Experience & Product Experience
- Measure quality, productivity, getting feedback
Think surveys!
- Use your own Platform to build your own Platform’s services
Think dogfooding!
Resources
3 main resources you need to bookmark and leverage with a huge and active community behind them:
Some articles I have used to build this content:
- The story of platform engineering
- Platform Engineering: The New Stack’s ebook
- Accelerate (2018)
- How to write a talk about Team Topologies
- How to measure and improve developer productivity
- Platform engineering is just DevOps with a product mindset
- How Spotify Achieved a Voluntary 99% Internal Platform Adoption Rate
- Platform engineering maturity model: what we learned from our survey of ~300 orgs
- Cloud Migration and Platform Engineering at Large Organizations — The New Stack
- Here’s One Golden Path to Build an MVP Enterprise IDP
- Bringing together FinOps, DevOps, and platform engineering
- Champion Building — How to successfully adopt a developer tool
- DevOps and Kubernetes: we’ve been doing it wrong
- DevOps is Bullshit
Some videos I have used to build this content:
- Beyond engineering: The future of platforms
- Quantifying platform engineering impact at Wise
- A conversation on platform engineering: What, how, and what’s next
- On growth challenges, generic helm charts and golden paths
- How Platform Engineering Works
- Team Topologies Distilled
- Fidelity’s Software Delivery Platform
- Lessons Learned Building Developer Platforms
- Demystifying Kubernetes Platforms with Backstage
- Platform as a Product Workshop
- From Kubernetes to PaaS to … err, what’s next?
- Platform engineering: Build your own PaaS
Download the PDF version of this presentation
You can download the PDF version of this presentation here.
Hope you enjoyed this one, cheers!