What is “platform engineering”? What is “platform as a product”? What is a “platform”? What is “PaaS”?
Well, that’s a good question… Here’s my brief explanation:
A platform is the gooey layer of frameworks, middleware, tools and practices that developers use to build and then run their applications.
And, the canonical definition from Thoughtworks’ Evan Bottcher defined that gooey layer more precisely back in 2018:
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.
You can think of it as everything above the infrastructure layer, whether that infrastructure is Infrastructure as a Service (IaaS), bare metal, virtualization, or Kubernetes. You get a blinking cursor from that infrastructure, and the platform is all the stuff you pile on top of it so developers can start coding and you can start running their applications in production.
First, there’s the actual platform stack. Here’s the CNCF reference architecture and the Tanzu Platform:
Second, there’s a new practices that infrastructure and operations staff start doing to not only run the platform, but support developers - to start treating developers as their customers:
For a more detailed overview and recommendations on how to make it work, check out my recent talk on platforms below:
And, there’s a shorter version if you can’t be bothered. There’s also some recent slides for these talks available.
If you’re running a platform, you need to do internal marketing, advocacy, and community management. Here’s an overview of why and how:
Here’s a white paper draft of mine on that topic.
More links on the topic: