Is Backstage a Platform?
Backstage is synonymous with IDPs, but is it a platform?
An evergreen topic in any discussion about platforms is: what is a platform?
Let's look at some definitions and see if Backstage fits. Along the way, you'll get some tools to help reason about platforms and the different parts involved.
The first thing we need to do is define what a technology platform is.
Defining platforms
First, here is a statement of what a platform is:
A platform is a system that allows you to build new things, provides a place for those things to run and captures or abstracts work you would otherwise need to do.
Let's break this down:
Building New Things - This is perhaps the most obvious part of the definition, at least in the technology and infrastructure domain. A (modern) platform provides you with tools to build things.
A Place to Run - This is a major differentiator between a platform and other things like applications or services. With a platform, you can build new things and also run them. An application or SaaS might have a place to run, but you can't build new things on top of them. With a development framework, you can build arbitrary new things, but they don't handle running it for you (more on frameworks later).
Capturing and Abstracting Work - A platform that allows you to build and run things is going to have to take some work off your shoulders. Platforms are all around us, limiting the details we have to deal with and letting us focus on our work. When was the last time you needed to figure out how to write blocks to disk? Or how to render html+css? The abstractions get built up over time and more and more things get pushed down into the platform(s) underneath us.
This definition is quite broad and you could even apply it to platform businesses as opposed to internal technology platforms. It also holds for more specialized kinds of technology platforms like extendable games or web browsers.
Let's use another statement and narrow things down a bit to internal platforms:
A platform is a system composed of runtime environments, pipelines to connect those environments and frameworks to interface with either runtime environments or pipelines.
This statement gives us more insight into the elements that make up a platform. Let's look more closely:
Runtime Environments - In order for a platform to provide a home for the things developers build, it needs to have a concrete place with all of the resources required to host an application.
Pipelines - The work of modern software engineering takes artifacts and moves them through pipelines for building, unit testing and deployment. It is very common to have CI/CD pipelines that promote successful builds to be deployed through dev, stage and production environments.
Frameworks - In order for developers to write software and run it, they need some kind of interface to interact with a platform. Frameworks provide supporting elements like software runtimes, APIs and tools to allow software to be developed and work with either runtime environments or pipelines.
This more explicit definition builds upon the first one to make the ideas more concrete.
- The runtime environments are the home for the things you build.
- The frameworks are the tools you use to build things and they abstract or capture the work you would otherwise have to do.
- The pipelines are an additional concept much more specific to internal platforms. Platforms need a way to move artifacts around, whether they're applications, data, models or other things.
Is Backstage a platform?
Now that we've got some definitions to work with, let's use them to figure out if Backstage is an IDP.
If we look at the first definition:
- Build new things: no
- Host new things: no
- Abstract work: no
By the first definition, strictly speaking, Backstage is not a platform.
So what about the second definition, does it fit in there?
- Runtime environment: no
- Pipeline: no
- Framework: maybe?
Backstage doesn't really fit neatly in here, either, but it is arguable that it is a framework tool used to interact with an internal platform.
When I mentioned IDP above, that was Internal Developer Portal. Backstage isn't even claiming to be a platform, but the P in IDP is confusing; it can mean either Platform or Portal depending on context and so there's confusion.
But maybe I wasn't fair to Backstage, what if we look at it differently and consider it as a platform for internal developer platform portals (say that five times fast)? Backstage is built to be extended and has a large collection of plugins. Using that framing, how does Backstage look as a platform?
First definition:
- Build new things: yes
- Build new plugins
- Host new things: yes
- Runs plugins for you
- Abstract work: yes
- Helps integrate with a portal easily
Second definition:
- Runtime environment: yes
- The backstage instance is the runtime for your plugins
- Pipeline: no
- Backstage is not a pipeline system
- Framework: yes
- Backstage provides scaffolding tools and libraries for plugins
By changing our vantage point, we can look at Backstage as either a platform or not. The important distinction is that Backstage is not an internal developer platform for deploying generalized apps. It is a service or framework for an internal platform. On its own, it could be considered a platform for developing and deploying domain specific plugins.
Conclusion
So, is Backstage a platform? When we talk about internal developer platforms, no definitely not. By breaking down what a platform is, we can see that Backstage is not for building and running new applications. At the same time, we can look at it as a very specialized platform for building portal plugins.
We were able to work through this by using these two definitions:
A platform is a system that allows you to build new things, provides a place for those things to run and captures or abstracts work you would otherwise need to do.
A platform is a system composed of runtime environments, pipelines to connect those environments and frameworks to interface with either runtime environments or pipelines.
These definitions give us a framework for understanding what a platform is and whether we are talking about a platform or something that may be part of a platform.
And last, the acronym IDP is confusing. Make sure you are always clear whether you are talking about Platforms or Portals.
If you're interested in platforms, you should consider joining the Platform Coffee. We have discussions every week and you can get an invite here: https://platform.cafe/group
If your organization is getting into building platforms and platform engineering, I'm here to help you navigate. Book a free consultation here: https://missingmass.io/platform-engineering-maturity-consultation