š Hello hello!
Good to see you again. Iām currently sheltering in a cottage in Cornwall, in the middle of a storm. The UK goes back into lockdown again this week, so Iām bound to have a bunch more time to write. Silver linings.
If this is your first time here, hello! The goal of this newsletter is to discuss techniques forĀ building better softwareĀ andĀ being more effectiveĀ inĀ high growth companies. I mix in longer form content ā think a short blog post that you could read in 5 minutes ā with some of my favourite links. Hereās some popular posts from the past few months:
Thanks!
Stephen
Backstage
Today, weāre going to talk about Backstage: an open-source developer portal developed internally at Spotify. A little disclaimer before I start: Iāve invested in a Backstage-related company! But I have skin-in-the-game: where I can, I put my money where my mouth is and invest in the tools that I think will be really useful.
Scaling problems for engineering orgs āļø
Before we get into what Backstage does, letās go through a few recurring problems that high growth engineering organisations face. Picture a company that has approximately 100 engineers, over multiple teams, that is rapidly hiring.
Knowing what software youāre actually running
This sounds trite, but itās surprisingly hard to get a single view of all the software that you own and operate.
Who owns which services and products
Before you grew quickly, collective ownership worked well. There was high shared context, and everyone knew a little bit about everything.
However, as you split into multiple teams, you need to distribute services and products to teams. Who owns what, and where do I go to talk to them about it?
Doing migrations
As Will Larson says, migrations are the sole scalable fix to technical debt. Itās not enough to create new software quickly: the superpower comes from being able to effectively and safely retire software.
Letās imagine a migration from Python 2 to Python 3. How do you track what needs to be migrated? Which teams will be responsible for migrating what pieces of software? How far are you along this migration, and which teams do you need to chase to get things over the line?
Inevitably, this ends up being a Google Sheet Of Doom, along with a good helping of Slack nudging. It works in a pinch, but it feels like there could be a better way.
Creating and finding high quality documentation
Proper documentation is worth its weight in gold. Too often, itās hard to find where it actually lives! In most cases Iāve seen, it ends up being a single README.md per service, with some extra documentation spread across intranet tools and Google Docs.
This feels weird: why is our documentation so primitive, and so far away from normal developer tools?
So, what is Backstage?
I think of Backstage as the homepage for engineers at a company. Itās the first place you go to answer any engineering question you have ā what was deployed in the last 30 minutes? Who owns this service that is overloading our logging infrastructure? ā or to take some action, such as deploying changes, or merging pull requests.
Quoting directly from the website:
BackstageĀ is an open platform for building developer portals. Powered by a centralized service catalog, Backstage restores order to your microservices and infrastructure. So your product teams can ship high-quality code quickly ā without compromising autonomy.
Backstage unifies all your infrastructure tooling, services, and documentation to create a streamlined development environment from end to end.
It was internally developed at Spotify, and open-sourced in March, 2020. It was recently accepted into the Cloud Native Computing Foundationās Sandbox program, and is moving to an open governance structure ā showing Spotifyās motivation to spread ownership and to widen adoption across the market.
What does it do, and how does it solve the above problems?
Below is only a small snippet of the total functionality of Backstage. Itās being actively developed, and new plugins are appearing on a weekly basis. Thus, this section is going to get out of date very quickly!
Plugin model turns Backstage into a platform
Backstage is a single page application composed of a set of of plugins. Plugins are pieces of software that extend Backstage to give it some capability, such as viewing the output of a CI job, viewing Sentry data, or storing a service catalog. The generic mechanism underneath the plugin model allows for extensibility.
For example, letās say that we collect test coverage as part of our CI pipeline. Without running Backstage, Iām not sure where I would go to be able to look at that for any service. Perhaps Iād store it alongside the service in the repository, but thereās no chance for me to render that information in a nice way. What about if I wanted to find the top N services with the poorest test coverage? That seems hard to do, and would require me to write a custom script.
Enter Backstage! You can write a plugin to render this information, linking it back to the services. It also allows you easily extend Backstage to support whatever youād like it to: a homepage for your machine learning models, a list of the datacentres that you operate along with the last time they were serviced.. whatever you need. You can also benefit from community contributed plugins, such as AWS Lambda, Sentry and New Relic.
Ownership as a first class citizen
Within the software catalog that Backstage offers, ownership is a required field. This makes it clear to others who is the first point of call for any piece of software. This seems a small feature, but is incredibly useful when you spend most of your time encountering new software.
Search over all software
As mentioned earlier, Backstage stores all of the software that you are running. When it has this information, it allows global search over all that software, making it easy to find extra information like deployments, error rates, configuration and who owns it. You can imagine this is very useful during an incident. See the below video for an example.
A single place to store documentation
TechDocs is directly integrated into Backstage. This gives you a single place to look at all documentation, that lives alongside the code that youāre writing. This allows you to make changes to documentation directly alongside the pull requests that change the code.
You can raise issues on documentation, which directly integrates into Stack Overflow Enterprise. This allows readers and teams to āclose the loopā on updating and correcting documentation in a way that used to be done through Slack, and chasing other humans. Watch the video below to get a quick intro!
Best of the internet š
For this edition, Iām going fully Backstage. Thereās tons of videos and content to get through embedded in the post, so I donāt think you need much more!
Introduction to Backstage at Spotify - Stefan Ć
lund
This is a great walkthrough of how Spotify use Backstage internally. Iād really recommend grabbing a cup of coffee and sitting down to watch this end to end. For what itās worth, not all of these plugins have, or will, make it to the open source version. But itās a view of the path ahead!
Thatās all from this weekās High Growth Engineering. If you enjoyed it, Iād really appreciate it if you could do one of the following:
Share it with a friend that would find it useful.
Follow me on Twitter: @sjwhitworth
Subscribe: just hit the button below.
All the best,
Stephen