the-zoo
the-zoo copied to clipboard
Backstage plugin PoC
As we discussed internally the day it was launched, Spotify has launched Backstage, which aims to offer the same experience to the devs as we wanted. Obviously, our resources are much smaller, so we should probably evaluate repurposing Zoo as a plugin (or series of plugins) for Backstage instead.
I had a call with some engineers from Spotify, and after seeing what they have and sharing what we have, it seems really overlapping. As they are heavily invested into it, and our project is much less essential to our developers, the most logical approach would be to use their solution and provide our logic to it.
So far Spotify has only released the frontend for Backstage, which means that we'll have to supply our own backend, this is fine in my opinion, as we wanted to refactor our own UI either way, although this time is React, and not Vue.js.
I opened an issue in their repository yesterday, and based on the comments we'll check how complicated would it be to re-build our frontend as Backstage plugins.
https://backstage.io https://github.com/spotify/backstage https://github.com/spotify/backstage/issues/454
Scope of this PoC
We are going to cover five of our current views, in read-only mode for now
- /services
- /services/{service}
- /resources
- /resources/{resource}
- /auditing
For this views, we'll have to:
- [x] Remove templates, webpack server and client-side assets
- [ ] Repurpose current views as util methods where it makes sense
- [ ] Make sure that the GraphQL API returns the data needed for those views
- [ ] Create a Backstage app that will hold our plugins (deployable independently)
- [ ] Create three plugins,
services
,resources
andauditing
to interact with our GraphQL API - [ ] Deploy it internally and gather feedback about it
Let us know how we (Spotify) can support!
@stefanalund I updated the description with what we'll cover and the steps that we'll be taking. For now we are aiming to keep the same logic we have regarding service discovery, as there wasn't anything that would suggest otherwise in the RFC
@paveldedik will start working on it from the backend side