What is Backstage? What does Backstage do? What does Backstage not do? Why would you use Backstage?

Episode 275 · Fri, 22 Sep 2023 14:41:17 +0200 · 1:06:55 · SRT · archive.org · all Tanzu Talk

0:00

well i thought today what we would do ben is we've talked a lot about uh even on this podcast i went back and i looked at i forget which episode we were just we were talking about developer platform marketing and we even brought up things like backstage and things like that but and i think maybe even a year ago i maybe it was even you we had a discussion of it but i wanted just for my own whatever's benefits i guess is the phrase i'm looking for you and i were talking about backstage a while back a couple weeks ago and i was i was realizing that i have a lot of misperceptions about what backstage does and what its its components are so i thought that would be a good a good discussion here check in on not only i think i think since you've been spending a lot of time on it recently and we should mention as we did at the end of last episode that you're going to be at backstage con uh in the states in the united states america as we like to call it when americans leave uh the the the boundaries of america we say the states and then when we go back we say america like it's a it's it's kind of like uh it's a very telling thing you'll notice with americans because you know i think i i don't know how it is in in your your uh your domicile but i think the thing is well this is quite the digression but i think the thing is when you we have this thing in america where you're not supposed to act too special i know that sounds weird to the rest of the world uh because we're always doing that but it's almost like to say that and we've seen your tv yes yes but but it's it's almost like if you're talking with a uh a fellow american you don't want to be show-offy and be like oh well you know the way we behave here in the states right it's just like what are you talking about the states maybe other people can talk about it but when we're here you just say america instead of being all fancy with europeans do it do europeans do it do they go to the states and then start talking about in the union yeah in the union exactly that would be great you

2:06

or or or or well here's you we can test with you when you go abroad do you say back at the kingdom it makes it sound like it's game of thrones or something doesn't it yeah and you know i have never heard someone from the uk say the kingdom no no i don't think it's just like nope we don't know maybe we should maybe we should that could start today anyhow well i forget oh you're going to be at backstage con when when is that going to be uh i think it's november 6th november 6th in chicago uh the states in the states yeah which i'm very excited about i've never been to chicago before so i'm looking forward to that very much uh yeah yeah yeah it's going to be great there's a there's a packed lineup you can find all about it online we'll we'll put a link in the show notes uh so you can see the schedule and it's the i think it's the day before it's an adjacent to kubecon so then the day after kubecon all right oh and then you'll get a pass to that as well i think right like yeah it's all in pass oh well that will be fun so consequently you you've you're very knowledgeable uh backstage now and at least you know uh more knowledgeable than the other like you know five billion minus one people in the world so you've got you've got a leg up on most of them i wouldn't claim to be the most knowledgeable no but there you go my i'm enjoying what i'm learning about uh backstage and i'm learning more all the time and and yeah it's a it's a great system it's good so so let's let's i was thinking instead of doing my usual uh monologue barrage question that i i would try to do i would try to do it in the proper way which is ask very short questions and and and then i'll get to a barrage at some point i'll i'll come in and try to

4:06

fill in with with what's there so here's here's what i want to i want to start with because i know i said i wouldn't do this so i'm giving this is context not barrage that i've been thinking a lot over the past few months about how um whenever people explain something and this is particularly true in in our type of tech marketing and kind of enterprise marketing um that it's very easy to slip into just talking about the outcomes that some technology achieves for you what it does for you and instead of just like the capabilities that the technology has like what what what what it does not not the result that it has for you and oftentimes or or sometimes those two can be the same right like let's let's take an example and outside of the the backstage world and then we'll get into backstage but like you know you could talk about uh a database and you could say what a data does is it allows you to store and retrieve data information and it will also allow you to search for it and get pieces of that that that data and then it has some performance characteristics about how much it can store and how long it takes to retrieve things and like it won't lose your data i mean you know those are capabilities that a database has along with all sorts of other stuff or you could speak about databases in terms of their capabilities and be like it will allow your organization to discover uh all sorts of latent facts and insights that that your your organization has and therefore make business decisions around it right and the outcome-based stuff is kind of handy right like i would say i would say that developer productivity can be an outcome right of of almost any technology but it's very easy to kind of slip into uh reverse ascribing what a technology has based on the outcomes that you're being told

6:08

about it right so if you're just told that a database is going to increase your developer productivity it's just participating with a whole lot of other things in that it's not necessarily doing a lot of it anyhow so i i realized that like with backstage i think i've been a little too weighted on the outcomes that it has and and i need to kind of go back to just knowing what the capabilities are and to start with that to go the the extreme end of outcome marketing is the bottoms up what's the bucket of features what's the actual architecture that something has and and just like you know what it is and so maybe we should start with that so if we look at backstage as like like the bits like let's say you download it and and like you're installing it and configuring it and then it's composed of i don't even know the words it would use but it's composed of like let's call it services or subcomponents like what are the things what are the components of backstage okay so um yeah you can you can download backstage uh very easily it's open source software you can get it from uh github and when you do that and uh and you try and and you run it for the first time as i did recently you learn that it is built from a whole bunch of componentry and all of that is sort of glued together by some um existing frameworks things like react and typescript and uh you would access it through a browser once you sort of brought it up so um yeah it's very that means that it's also quite adaptable so it's it's built internally of a whole bunch of kind of plugins if you like so it's got this plugin architecture where all these different modules are coming together and a very basic sort of backstage out of the box you'll get some um capabilities that will allow you to um store a software catalog so a software

8:14

catalog might describe the catalog of software that you've produced over the years in your organization so it could refer to say microservices you might have a catalog that's filled with all your microservices and stuff it also gives you some uh features that allow you to do things like sharing documentation on those um software components that you've built uh so that other people can then you know understand how they work and how they um fit together and then uh also uh you would get things like um oh my mind's gone blank uh all sorts of other metadata about those uh systems so so things like apis for example you might be able to uh register components with the backstage software and be able to understand then what are the apis that those components uh give you and then uh be able to maybe interact with those apis so you can understand more about uh the software that's available in your organization why you would do all this is because it's it's for enterprises right so so backstage is for enterprises really it's not something that a small group of developers i think would gain as much benefit from as a large group of developers so if you've got a large group of developers or maybe you're geographically split in different locations then having somewhere where you can congregate is a really useful thing um backstage provides that through through a ui that um as i said can be can be modified in lots of different ways using a plug-in architecture so it's very very popular for larger groups of developers to use to be able to share information about what they're working on but also get visibility into what others have done and and how uh the systems

10:14

that the organization is building are integrated together and and uh composed and react to each other so so so that so at the that like what you described is like the out of the box sort of sort of experience if you will and and to summarize it to make sure that that i got it right uh essentially you when it's up and running and and i'm adding in all sorts of other stuff that i i think i know you then have a a bunch of web pages uh that basically list out as you say it's it's a it's a ui for like a catalog and a catalog means we'll use this phrase for it the all of the various projects that you might have within an organization so to use to use a simple example um let's say that you're a bank and let's let's let's just narrow down to the retail banking unit and in the retail banking unit like you're gonna log you you me i assume you have a bank maybe you bank at the mattress bank but you know you you and me like uh like we go to our bank site we log in somehow and then we're presented with like the ledger like you know the here's here's our account and here's like all the transactions and then we also have like we can depending on what country and regulations you live in we can pay bills as we would say in the states or you can do transfers of money as we would say in the union um and you know you those are basic functionalities you have and there's other stuff but let's just we'll stick with those two basic functions so if this bank has a backstage thing i've identified you know at least three components logging into the bank uh looking at my ledger and then we'll just say transfers so i would go to the backstage instance that i have and there would be in the catalog and again there would be many others in a properly architected blah blah blah but we'll keep it simple there would be three items in the

12:16

catalog login uh ledger is ledger even the right word we'll just keep going with it ledger transfers right yeah account account or ledger yeah yeah look at your account yeah yeah yeah yeah that's exactly right yeah you would see uh in in the catalog you would be able to then break that down into the components and the the parts that are involved in providing let's say it's a microservice architecture you know maybe there's other microservices as well things like i don't know fraud detection or exactly yeah so so it'd be a whole bunch of stuff in there but by having a gui that you can have a look at it allows you then to explore and discover more about what's going on around you so maybe you didn't know there was already a fraud um microservice and you're working on something new that requires that so it'd be a great place to go and discover more information about it you can have a look in the catalog you can find out um who owns that application perhaps that you you're newly discovering you know who which which team inside your organization is responsible for it um you might be able to find information on its apis and how to interact with it and and so so like so let i want to get to that i'm interrupting here but i want to get to that is so the other you're getting into the other thing you mentioned which is the metadata uh which is for example who owns this project like and and i i think also the again the out-of-the-box experience maybe would tell you something like what is the current production release of the project of of the accounts like right and then uh where where's the documentation for and then like you're saying who who could i email right like like who who are the the actual people who are in charge of this thing such that i could talk with them and then you know you could

14:17

imagine and and again you know we have our simple three-part thing but just as you know you can imagine the reality of things like you're saying you would have fraud detection and blah blah blah but you could imagine another type of metadata would be um doing these transfers the current state of the transfer project or or or component in the catalog it can pass regulations for running in the uk and in the european union like that might be other i don't know am i am i going too far that that would be metadata you would have in there as well it's it's very flexible so you can change a lot of what you store in these entities so you can you can make them as rich as you want to but um there's also the flexibility of something like tech docs so tech docs is another part of the backstage application where you've you've basically got free will you know you can document anything you like about the components that you're working right you're sharing with others right so that gives you a very rich platform from which you can do things like explain how how the component works you know or allow people to um maybe get started with it and learn how to actually use it or maybe it's more about you know what as you were saying which um regulations it's conformant with and how that conformance was tested and all that sort of stuff you can have a free reign over what information you provide in a in a tech doc so i i would assume then the the so you got a catalog we got our three components and there's also metadata knocking around probably assigned each of the catalog items did it what's the word they use for that is that called a project or uh uh so catalogs broken down into lots and lots of sort of categories if you like um categories would include things like overarching

16:18

systems individual components apis but also users groups as well so you can model your organization so you could say oh this belongs to this group or this belongs yeah yeah and there's lots of flexibility there so there's lots of okay okay well this this this starts to answer you know the question that that's scurrying around in my head is like well why don't you just have like a well structured wiki page or i don't really know what ajira is but i think that's a wiki page right i mean and and like i think in what you were just saying there's another thing that comes with with uh backstage which is um well it's not just the conventions and the norms of how you use it but there's actual like entities about here is a person here's a user and here is like uh you know the other stuff you were saying here is like a system that things might run in so right away a backstage is making decisions about the nouns in your enterprise architecture right like it's saying you're going to care about there's going to be teams of people teams of people are composed of i assume it has groups here's a group a group is composed of people you don't really usually break down people into like you know their organs and things like that so a person's like a cul-de-sac of an entity but here's like a person uh and then each of the the catalog items like the project or whatever like they have people associated with it and then so right away because it has that in its architecture or it's uh what what's the phrase for this not it's it's like it's data model or something i don't know what the kids call this anymore yeah i'm guessing you know in kubernetes for folks used to using kubernetes it's like kinds right there's all these different kinds of things kinds of entities yeah so uh you know resource would be another one where you can right and then and then like you're saying apis or whatever yeah yeah and that's and that may maybe tell me if that's a good example for me to like

18:23

like uh overly diagnose or not understand here is so you could imagine if you had quote unquote just a wiki right like you could establish and every you know you could establish the conventions that use a wiki every for the um uh the the the login the ledger and the transfer thing they each need a wiki page that like keeps the following up today about who's working on it what the current version is like you just go in there and update it right and that's part of your governance process to do that yeah so now really works right right right no no exactly and that that's what your your your tone and your sentiment is like exactly is the thing right so then it's like well what we've learned over the decades is that people will not follow unenforced conventions it's just like it won't happen so in they won't and instead you want to build into your tool kind of like a compiler doesn't let you like compile bad code like you enforce you have to do these things in this way right and and for example because we have a microservice we have a modern day contemporary microservices architecture which means uh if you if the if the transfer thing wants to check what your current balance is to see if you can transfer money it's going to need to get an api to your account like that's the only way it's going to happen so therefore the way that we do our programming is you have to use apis right which i think everyone kind of takes for granted now maybe but like you don't have to do things that way right like you could you could interact through different means or whatever right you could connect directly to a database and look things up instead of going through an api blah blah blah so right there there's a there's like like that seems like a key very important assumption about reality that

20:29

backstage is making and making for you is you will have apis and that will be the way that all of your different projects communicate with each other and the reason that's good is because like a wiki doesn't care so like there's no way to kind of like make how you document and find and discover apis all the same and more or less like enforce that people talk about that yeah there's definitely there's some truth in that i would i would say backstage is more flexible than that like you can register components that don't have an api that's fine right no problem with that at all i think where where backstage blows a wiki out of the water is its ability to integrate with things and display in real time what's going on as well so that right through right through for example the plugin architecture you know if your platform is kubernetes then you can have a view of okay which applications do i have currently running in kubernetes and what sort of status are they in that sort of thing so you'll never you don't get that from a wiki right right okay so oh go ahead go ahead same with like documentation as code right you can store the documentation next to the code you could have um a supply chain or a ci chain or whatever that is essentially building that documentation every time the code gets built so that you're always up to date with your documentation there's no there's no lag like there is with wikis often where you know oh yeah it's three years out of date because no one's actually been back to update that recently right right speaking of updating sounds like you have an incoming update well so so this this gets so there's two other branches to go there so i guess like like one way of putting it that's not too helpful is that backstage is custom built around this scenario of as you were saying in a larger organization we have multiple teams who kind of own some component that the login page the ledger page

22:35

the transfer page like the teams uh own this and like you're saying it's optional but they're probably going to communicate with each other through apis and so therefore they're going to need to look up apis and know how to integrate with and look at documentation so backstage is just like let's build up a whole collaboration suite built around that and then also uh and and i'm getting to the plugin thing the other thing is that like we want to automate updating that information as much as possible right so when a new release goes out we don't want to make a task to have like you know that it's always going to be a junior developer i don't think the senior developers are like i want to go update a wiki that's a good use of my time like uh you know they probably got something else to do uh and so like you know you basically go to the junior developer and you're like oh you got to run uh the document generation thing and hook it up into the wiki thing to make sure it's updated and let's let's do that now i'm sure someone could argue like oh we have a wiki and you can just run a script and automate all of that and put it in your your jenkins pipeline or or whatnot because i'm sure they talk like that but the point being that backstage is like let me just do all that for you like there is this way of doing cloud native application development where we assume all these things are happening and in the same way that you might say that like you know if you're using one of our platforms what we're trying to do is give you out of the box conventions whether it's an opinion or an accelerator or an app engine or whatever we're like sure you can customize it but how about you don't right like this is just like the default way of working and thinking about stuff and you should just start using that instead of coming up with your own like conventions and ways of doing things well yeah i think i think backstage is you know part of the beauty of backstage is that it models a common need like i said if you have a large group of developers you always needed some way to be able to share information and collaborate on the stuff that you're building you can't there's no other way to do it efficiently than to be able to

24:42

share all that information so the choice was always you know well what do we do how do we share this information and that's where you end up with a lot of wikis and jiras and word documents and you know shared folders on network drives right remember all that stuff yeah holy crap so so you know it's like that's that's how it used to be done but it was very fragmented it was all over the place it was never usually up to date it also didn't have that sort of real-time aspect of well you know i want to integrate it with my monitoring software or i want to integrate it with my platform so i can see what's running where and it didn't you know it didn't have all of that stuff so rather than everyone building their own and having their own ideas you know the backstage community has come together to try and build a representation of what large groups of developers actually want to need and made it flexible enough that you can then cherry pick which bits you want to use and which bits you want to offer to your development teams so so okay so so basically it's like like uh maybe not on purpose at the beginning but this is kind of scurrying around at the moment is there is an attempt to make a de facto standard for how in in a biggish organization you represent the catalog of all the the the projects and apis that you have right like unless so so for example let's let's imagine a world where quote unquote everyone uses backstage to solve this problem right like like unless you try unless unless the unless you try to like do something different all of the organizations using it will have a very similar approach to how they do that kind of collaboration among teams right though if they just use the out-of-the-box way of representing these things in backstage here's a project here's the people here's like the apis this is the way the documentation works

26:46

here's the way you integrate into your automated build process so you always have the most recent tech docs and things like that and in theory if you went again if you were just using the mostly out of the box not customizing it if you went from one organization to another organization that was using backstage you would be like oh yes i know what's going on here like i don't have to learn a whole new set of conventions it's so forth like in general i think now back when i was programming and probably also nowadays people don't come up with like crazy exotic ways to do version control they're sort of like yeah we follow the same conventions and norms we just there's no reason to have customized version control so you have a similar type of effect um and so then and and i think this is where things for me get get into that outcome versus capability thing so then you've got the whole plugin architecture so so so go over that or is or is this older java people would call it maybe the portlet architecture where you're uh you're plugging things in there but like what is what what do they even call it and what is this plugin extension sdk like like what's going on with that that part of the backstage world yeah i think i think you nailed it actually in in the question uh it is thank you it is very kind of thinking about it it is kind of portlet like uh the way that it's currently architected um i'll be honest i wish it wasn't architected that way but that's kind of how it how it feels in that um you do have a lot of freedom you can create a plugin for you know almost anything you can think of really and and and have that integrated into the backstage gui depending on you know how how much um how much effort you can put into it how much knowledge you have about how it works and stuff so it's easy to do you can you can you know grab there's a whole marketplace full of um uh different

28:53

uh ready-made plugins which can just go and sort of cherry pick from and integrate them into your backstage but that's the important bit the minute you sort of have to know how to integrate them into your backstage and for me that feels like it's a bit of a barrier to entry to sort of cherry picking freely amongst the different components that are in the in the backstage marketplace for uh for plugins for for example it's not as easy as say like on your phone you know you want a new app you just go to the store you click an app it gets installed and then you start using it it's not as easy as that yet and i'm pretty sure that's where the backstage community would like to get to at some point in the future but it's not like that at the moment however that said still a brilliant system because the rest of the ui has been thought about and has been standardized so you're not having to build every button bell widget you can start with a ready-made set of um components that will allow you to you know build up pages and do various different um you know gui uh things with your with your plugin so if you if you if the plugin that you want doesn't exist you can create one in order to create one you're probably going to need uh programmers with some experience of things like um react and typescript for example um in order to be able to sort of hit the ground uh running on that and then of course lots of vacuum uh docs uh backstage documentation to be uh to be had which is good you know so it's a nicely documented system they've done a good job of the documentation there's some great stuff to get you started um so yeah it's possible and and a lot of people are doing it including ourselves well so so let's let's pick uh a plugin and and use that to explore like what the deal with plugins is right because i

30:56

i think i think the outcome is is pretty open-ended it's like and and and i'll put it in very simple terms as far as it's open-endedness is like you make a plugin and of course there's probably headless ones but you make a plugin and now there's a new little component in your ui that does something and and you know like and so i think i think a very popular type of plugin that maybe even comes with bundled with backstage now is like metrics of some sort right like and and like i remember you know when spotify was talking about backstage several years ago there was one presentation where they had one that i thought was fascinating this is how exciting our enterprise software world has been that the following is fascinating uh but but they they made i think a plugin that would on every project page so again just imagine the account the ledger and the transfer project page it just had a little i don't know what they call this in backstage a little widget a little part of the ui that either said they were running the most recent version of python or they needed to upgrade to the most recent version of python so let we can translate this into our world at least a world that you know more about like there's some new version of spring boot out right or or like or like maybe you're like we don't want to pay uh we don't want to pay for our oracle jvm when it comes out so we need to set up a compliance thing that we're going to move to uh that great vm that i can buy from the vmware tons of people and get support for instead so i whoever cares about this thing i'm going to create a plugin and and i'm going to go over the scenario and tell me if i'm just making up fantasy stuff but i'm going to make a backstage plugin that will get added to all the projects that that use uh java and it's going to figure out if the current version of that project is using the oracle vm or the the vmware vm and it's going to display that on the page so that the people know so you've got an information

32:58

radiator and then also i'm going to be able to query that and figure out uh which teams i need to go talk with when and that would be the whole plugin is that like is that a plugin it could be yeah i i see no reason why it couldn't be yeah and and then so okay so let's say i have i've got nothing but a wonderful idea and uh sure i know typescript and react whatever that is that sounds like a bunch of nonsense that people younger than me have come up with but that's fine and like so then what what do i do what what like and you don't have to like say then you type x underscore 32 semicolon but like you know like like what what's the general stream of activities that i go through to get to the point where that that happens where there's a little there's a little red light a little red yellow or green uh image on each project page and then every monday i'm sent a report that tells me like what what things are uh on the new vm versus not on the new jvm i guess i guess your first part of call would be to figure out which apis you need in order to be able to surface that information right so a couple of choices available i guess um backstage components are very often uh linked directly to a github um location or a git lab location you know some sort of git location public or private um maybe you could figure it out from there maybe for a java project you could have a look at um how it's built is it built with maven or gradle if it's built with those two things you know grab the palm for the maven for example see if you can figure out okay which version of spring does this have should it have a different one uh you could then establish in the plugin so so it comes down to apis i guess if you wanted to know like a runtime what's running where or maybe what containers have got what maybe you need a container layer so perhaps you'd use some sort of harbor plugin or

35:03

something to try and figure out okay what containers have i got what layers do they have in them which one's got this layer that you know is problematic that i need to improve on so and now now to now to to interrupt you so this this feels like i'm getting close to the realm of like Coté's making stuff up because it sounds good but it seems like like my perception of backstage is that like it would already know all those things or at least there would be a convention and out of the box backstage that said if the project and tell me if project is the wrong thing if if the the login page the the ledger and the transfer project that uh it the metadata in it should always know the version of the jvm that it's running it's just like in there like like it's it's always you don't really have to like do very much it's just something that gets cataloged in there like is that not true or like i don't think that's true i've i've i've i'm not out of the box anyway i'm pretty sure it's extensible because all software catalog entities are basically described using yaml so there's a there's a yaml stanza that describes those things it's a well-documented uh stanza as well so there's lots of information about that on the backstage documentation site but i don't remember anything in sort of componentry that that really goes down to that level of detail about a component but it doesn't necessarily mean that it can't be could be extensible so it could be that you can extend those stanzas and add other or new types of stanzas to them again it's all comes down to the amount of customization that you're prepared to expend and if you are going to go to that sort of level of customization i'd urge you to work with the community to see if that can be um sent upstream you know so that so that other users can

37:04

benefit from it because i'm pretty sure like like you've identified there'd be lots of folks who'd be interested in that and you should folks out there if i'm getting this wrong just tell us tell us in the show in the comments tell us uh online if you're online with us now to come and join the chat and tell us right if i'm getting it wrong just tell me and okay so so then okay so for my little project which is like i want to know uh basically it's like i want to know which version of the jvm java projects are using right because that's that's more or less what i'm querying and the reason i want to know that is because like i don't like the new agreements for the the oracle jvm i want to go to another one and um so in that instance as you were saying what you need to do backstage doesn't do the following for you it's not going to tell you inside the project what which version of the jvm is being used now getting that information can be simple right because in each project they have to build it so the first thing is you could ask the team to just manually update that but as we discussed that doesn't work right like they're just the junior developer is needs to go like pick up their kids and forgets to do that you know three months yeah and i better say straight away there's no way in a java project to tell exactly which brand of jvm is going to run on the two are completely separate so then right right right okay that's even better you'd always have to look at the container that that is a fantastic point right because what you really want to look at for that is the deployment configuration right like not only and then and then you're bringing in you want to look at depending on how you run things you want to see what your what your what jvm you're running in development testing staging and production and then all the various combinations of that depending on region and department and things like that like you could be whatever so you could be actually running multiple jvms and maybe the license agreement you know for dev whatever i don't know all

39:07

this stuff i think that's it so it would be containers really wouldn't it you'd be you'd be interested in which container base layers those software those those components are being run on top of so you write your java project but it's going to run on a base layer container you know what is that container and and what jvm is included with that container so i think this is a container problem now we've and and so okay so so then so this is the whole other well whatever i'm going to hold that off for a bit but like so there's kind of two routes that you go down there depending on how your organization keeps track of its build artifacts i'm trying to be vague in in in my my language there and my understanding is if you're doing things in a cloud native way which is to say running on kubernetes or whatever what you basically do is you build up images container images and probably your developers don't do that like they do that for development but when it comes to deploying in the production in theory the developers don't just give you an image and you just run that i i don't know though like i think this is i don't know if this is established but it's not like the old days where like you would say like here's a war file just load that up into our production web sphere and maybe change the the configuration around it a little bit whereas yeah like like for example the cloud foundry way of doing things is like the developers don't build the binary ever right like yeah and and so you would have a manifest the developer would basically deliver like a manifest in the not letting the developers build it up where they say i'd like you to run on this operating system on this container that we have and put this code in it and give it this configuration so it can access the network and then you whoever does this can build this stuff right and in that case to get the version of the v the jvm you are running it's probably in like the manifest somewhere right like you just know that because the way you built this container it includes this jvm so

41:08

now you know the version and then you can go update that in the metadata for the project and then you're done more or less but like but like knowing how to do that backstage doesn't do any of that of course right and like you would in fact if you're following a standard way of doing that like if you're using the tanzu suite of doing things i like the way i pronounced it there right where like in theory if you're using the tanzu application platform there's all sorts of tools in there that do everything i just kind of described right like build up your images assemble your images for production track which version you're using for things blah blah blah and so there's a plug-in in the tanzu application platform somewhere you know in this world that i'm creating that would just do that for you because you're following the convention of how you build and configure your deployable artifacts yeah with tanzu you have the concept of a secure software supply chain you know that's built into a tanzu application platform to a different extent it's also built into the tanzu application service as well as you mentioned you know based on uh cloud foundry so you are sure then where you're you have less mystery meat in in your containers that way right because they follow a prescribed um build route you know and and you can you can you can trust the manifest i mean if it says it was built this way then you know there's whatever however many nines of of certainty that it was built that way and then also because there's um what do you like drift remediation because it tries to enforce this stuff then you can through a high degree of nines of precision you can trust that it's actually it hasn't drifted away from that because it's blah blah blah all that usual stuff repaving i think we like to call it yeah and with the tanzu application platform we do um software bill of materials so we follow a standard for that bill of materials to produce it and uh store it away in a metadata store so then you

43:11

could see backstage being able to benefit from that by having plugins that can then go and have a look in that metadata store and tell you things about the software that's been built and we have plugins for that in uh the the we call it the tanzu developer portal is based on backstage so we have uh backstage plugins for that in in our platform but they're not uh they're not available elsewhere at the moment right that's that's like something that gets added on and then just to add just to kind of complete it out in my head because i also like hearing myself think out loud uh like like there's a third thing you could do and i'm pretty sure you could do this like if if you are using like spring applications i think they're usually instrumented at runtime you could query what do you call it the actuators on there and it probably knows the version of the jvm it's running so in in theory you could set up a script that actually like queries your stuff in production and goes to each of the the running applications and says like tell me what version of the jvm you're using and you could batch that up to run once or you could run it on a daily basis and then that would basically just pull in a bunch of stuff and then your plugin would take that and then use the api i assume there's apis in backstage and then it would call all the apis in backstage and just like update that or or something or maybe maybe even your plugin what you have to do is you load up your the the the web page for your backstage project like the ledger and you press a little button that says go figure out the current version of the vm and it's just once you click on that button it goes and queries the account i mean again i'm ludicrously simplifying this but it connects to whatever the the ledger project is running in production and it finds the spring actuator stuff and it's like hey what version of the jvm are you running and then that returns back and then it updates that little widget on on yes page i mean that would that would be an absurd way to do things almost no but but maybe not if you're on spring and if you've added the actuators

45:15

then yes you could do that yeah but all right there's also there's also another way a fourth way i guess i don't kind of lost count of the ways now but a fourth way would be your application monitoring suite you know if you've got some sort of apm suite then that would be yet another way where you could maybe find out at runtime because those those um those suites do tend to um have a lot of metadata about the applications that are running so there's there's yeah there's more than one way to but so so the takeaway from all the takeaway my my conclusion from all that is is you could easily do this if you can easily get the information that information being for the ledger project and we'll simplify it which version of the jvm are you running in production within a 24 hour window right now or 24 hours ago right and like you're saying you could be using your um your your monitoring logging observability tools and it could just know like we've got the ledger application running in production here's all the information that we collected about it right and you could probably extract that out from the jvm version from log files from querying things whatever right but it's just something that it knows so your plugin would just like you would give it the credentials to connect to your your production management system and it would just pull that done right or scenario one was the you could say uh the way that we we we do our building and deploying of applications there's always like i imagine it's a yaml file there's always some yaml file somewhere that you can go get that says jvm version is it colon or equal i don't know yaml like you know equals this and then you have it and and you trust what's in that yaml file and then that's it and then and then you can have have that updated but

47:17

going to the data architecture going to the data architecture of backstage there's nothing in the data architecture that says when you register the ledger project you have to tell me the version of the jvm you're running like that that doesn't really like that's not enforced at all no there there there's very few uh mandatory uh metadata items for a catalog entry actually this is very flexible uh it gives you a lot of ability to choose not to provide certain amount certain information if you don't have it or you um you don't use use it you know it's not relevant to your organization so there are very few i i can't think of the top of my head exactly which ones they are but they're going to be things like um you know catalog entry name and stuff like that are going to be mandatory but after that it's very flexible so so okay so to check in at this point with now so backstage uh it it basically defines like i'm going to use this word again but your your your information architecture for all the software things in your organization here's like a project page we assume most all projects have an api so like that's going to be in there it has a name it also has the team and the people on the team who are associated with this project and and like that's kind of what you get out of the box but and and i don't mean that in like oh that's it because oh no no that's not it no no but yeah carry on and and then so so the other thing that's very important about at least what i just described is like it's a implemented convention for how to do all of that that that is de facto i wouldn't say it's a standard because it hasn't been around for like 10 years but like that is an attempt at just a de facto standard of how we represent all of these things in a similar way that like intentional or not like if you go look at projects

49:20

on github they're all kind of comprehensible no no matter what they all right like they all have a readme file they all tend to have they identify who a person is they identify like the number of commit like all this kind of which this is a whole other discussion of like so why don't you just use github but whatever no no so so here's a key difference actually which are not highlighted yet but not only is this software catalog able to hold information about all those components that you've written in your um in your organization over the years it can also link them together with linkages and draw that as a graph ah right right okay so with github you don't get that right you can have a look at a project but to understand how it relates to other things around it whether those are resources like databases whether they're groups of people uh or individuals or whether they're other components and other apis you don't see any of that you just okay so so how how is that achieved in backstage again through the through the yaml stanza there's the ability to link a component to other components so you can say okay this component delivers this api and so oh well i've got an api document about that so those two must be linked together so in the gui you'll see a graph which shows you okay this software solution offers this api it's written by this group of people it belongs to this system which also has these other microservices in it oh that so so it actually can so it backstage can do a lot of that on its own if the the things you're linking to are in backstage right so okay that makes a lot whereas if you had a project that's not in backstage let's say let's say you've got some mainframe system that you're using that's for whatever reason doesn't have a backstage project yet like i'm assuming you would have to like manually add that relationship in there yeah and

51:26

it's very useful to do that i i did an exercise recently where i wanted to try and explain all the different componentry that comes with the tanzo application platform because there are lots of different running containers when you build the platform out and you have the um application engine i guess you would call it running in the in the background you've got lots of different pods running lots of different stuff so i wanted to show how all that stuff relates together and the fact that it's also built atop the kubernetes api and you can do that with a backstage catalog so i cataloged the tanzo application platform as a backstage catalog and it works that makes sense so you have a good you i mean i mean another word you can use is like you can see the dependencies between everything or yeah what's the positive version of dependency the support like dependency is kind of like a pejorative word in software development but you know my children are dependent on me and not in a bad way and and so like there's there's the the support the support and see the help you be awesome and see uh that that that you have uh yeah the the reliances and alliances um so that is something that like again is you know whatever there's always like the data has to be there but it is more or less something that you just get out of the box with backstage if you're using it in in that proper way okay so yeah so i was saying so that's what's in backstage you're like no no there's all these other things so what are the other things that my my summary there was missing uh another really good um feature that you can uh add to your backstage is the idea of having a software template so earlier we were talking about spring in some details so say you wanted to ensure that when developers start a new spring project they add the actuators so that you can then go and introspect what's happening inside that particular uh spring

53:27

application at runtime then you could create a template that says okay for a spring project you start with this version of spring and you add these um different um what do they call them packages to uh to that spring project and it's already built for you so you can then take that template and all those things have already been brought together and integrated and you can hit the ground running just start working on your code you're not having to worry about oh i need to bring in this library and i need to bring in that resource and i need to do whatever you need to do in your organization to get started with a component you can turn all that into a template so that or multiple you know many many templates so you can have a template that can help you get started with practically any project that you want to and we've seen these used in incredibly inventive ways we've we've seen for example inside vmware folks creating templates to install tanzu application platform or to um do um machine learning and machine learning operations where you know you're building out certain items of a pipeline in a machine learning task for example so we've seen all sorts of all sorts of really inventive ways alongside the regular kind of okay i'm starting a spring boot rest project you know let's make sure i've got spring boot web and i've got um actuators and i've got you know database um uh ready to go all in the same template so they can be used for some very inventive things so so okay that sounds cool and when you say template like like across what does that mean it actually does like because like you know java is pretty widespread but let's say like i don't know i'm making an erlang project like does backstage ship with like

55:28

now you can have an erlang project or like like is the template just specifying like is it just telling the developers they should have these things or does it actually like a new developer comes in and it completely just sets up their development environment and all the files and stuff that they need like what does the template actually do the template and describes the um coding project in real terms so in in terms of the the files and the folder structures needed for that particular project to be able to open into an ide for example they could all be there inside the template plus some customization options so that the templating system that you get along with backstage allows you to again specify some yaml that will allow you to customize the project that is spat out by the project generator inside the backstage system okay okay you can customize you know the name of the project some simple things of course uh you know the name of the project or which type of database you're going to use or maybe um uh more complicated things uh you know maybe you want to set up a very specific uh i don't know static final stuff that should be available in each of these projects right you can do all that so so there's the uh what what did you call the thing in backstage that does this the project they they call it software templates yeah but it's got an engine behind it that can customize those templates based on instructions that you put into your into your templated yaml file so so what you would be doing again in our and then maybe maybe we'll wrap up part one and then if you'll deign to do it we'll have a part two where we talk about like how you like install and run all this stuff because we haven't even gotten to the the part that i'm like a little confused about is like you you run this on kubernetes yes no or what's the relate you know what's the relation to the kubernetes world there's a

57:29

whole other realm of backstagery that i think would be fun to talk about but so coming back uh because you know this is the thing that we've learned working for pivotal and vmware is the uh the ability to run your magic infrastructure is sometimes 70 of what's valuable and update it never mind the actual development stuff but uh i just made up some number there that was you know instead of saying 80 all the time i say 70 have you ever noticed that because that whole that whole like 60 40 80 20 what is it the patro principle i'm just like that ratio ratio there you go so just go down to 70 30 and you can just be sloppy without sounding like you're sloppy because it's like oh you're right everything occurs 80 20 in the world just like all those smooth curves on charts that i see but anyhow uh so you have the the the the the project template generator thing which is in in backstage and so what the outcome you would want to achieve with that is across your three things of login ledger and transfer um you would be saying i am going to specify what each of these projects looks like what the directory structure looks like the files that they start with like the you don't have to learn what the project layout looks like and what the the what components they use if they all started from the same template because yes whenever we whenever we started to go on it's more than that though it's also codifying your best practices yeah so if you're in an organization like a bank and you know that you need to include a particular library for security reasons or whatever it might be you can add that to the template you can create a golden path for developers so when they're starting a new project they will use that template and will automatically benefit from you codifying in all those things that they shouldn't forget right

59:32

don't forget to do this don't forget to do that right right right that's the that's the beauty of it it's codifying those best practices into the template that gives you that ability to say this is how we write software here right right and so it's not it's it's not only not only a a directory structure and copying files around but it's saying which versions of things to use or as as you're kind of getting to to use something right like yes like you need to use this thing or for whatever right like you need to have for the login you should have passkey support right like you've got to have that in there now now does that like get enforced or does it just establish this metadata for you and then when you go to like your uh your build automation thing your build automation thing has to actually pay attention to that metadata and and use it no it's not enforced as such so so in our example from earlier the the ledger and the uh transfer and you know their existing components already written the templates don't really help you with that at all so it's for future stuff you know the next thing that i'm going to write is going to be well templated but it can you know it can and would include all the stuff that you would need to get started in a good way and possibly to get started with backstage in a good way so for example one of the things that you might codify into the template might be that it should have an api description in open api language so that when it goes through a supply chain and ends up in production you've still got the ability to understand what the api is for that thing using the built-in api viewer that's in backstage that understands open api for example yeah okay that makes sense well good i i think so do you think there's anything else we should mention at this kind of like like i i would call

1:01:32

this part the uh what backstage does out of the box and almost and also like how it wants you to think like there's a certain like to use a jokey phrase for there's a certain like lifestyle that backstage wants its developers to to be following right in the same way that you could say you know if you're using we take we take these things for granted but you know if you're using version control your version control system has a kind of way it wants you to think and a lifestyle that it wants you to follow right and so like there's a kind of like philosophy of how you do multiple team multi-project software inside an organization that backstage is kind of like codifying if you will and i think i think we've kind of gone over that and then we have the basics of of the uh what it does out of the box you know aside from talking more about plugins or the whole like how you install and the runtime environment of backstage like is there anything else you think we're missing that's vital no i i don't think so i don't think missing vital no i wouldn't think so i think uh i think we've we've talked quite a lot about the sort of core parts of it so yeah i'm very perfect all right well great well well thanks for educating me you know i i often uh i i enjoy learning things and it's it's uh i'm always reminded of that when i learn something and and then and then the downside of that is like if to be reminded that i like to learn things would indicate i don't learn things frequently enough so anyways well can i i think one thing i would add is that if folks want to have a a very sort of basic taste of what backstage is all about then go to demo.backstage.io because you can instantly see a very basic version of backstage and have a play around with this with the software catalog there's already some software added to the catalog you can have a look around the apis that are included with that and you can get a a feel for the tech docs as well and what they can also add to the experience

1:03:36

so go and have a look at that um and and play about play about with the search as well so we didn't even mention search but there's a very good search facility in backstage that can search through all that componentry all those tech docs all those apis for you and surface things up that you're that you're interested in yeah and and i i guess it is worth detailing a little bit before we wrap up like the the uh like like a major outcome that backstage wants to deliver is discovery right like yeah browsing and discovering something which i think i think it's easy not not easy but like you have to know that that's a problem because if you're just like doing your own development on the public internet like that's solved like you don't really you can find what you need like through a combination of google stack exchange and searching on github like it's all there whereas inside a large organization it is not oh right like like it's it's very hard to just find anything inside of a large organization uh and so just like having good search and solving that problem is tremendous right like that almost would be enough uh oh and in and in productivity terms you know the time wasted looking for stuff is astonishing you know quite often especially if you're trying to pull together you know api documentation from all sorts of different sources across different business units or whatever it can be an absolute nightmare so i i really do appreciate what what's being attempted with backstage to solve many of those problems well if you've listened this far and you don't subscribe to our podcast tanzu talk you'll definitely be interested in it so you should go to tanzu talk.com or search around in your uh your podcast app what do they call it in the linux world what do they call a podcast do they call it a catcher still i'm pretty sure it's just a podcast

1:05:36

uh i'm not sure if no like the actual app that you use that like downloads it for you so you can listen to it i don't know if gnome has a default app for podcasts that's a that's a good that would be a good addition to the gnome circle folks if the gnome circle folks are out there uh maybe maybe a podcasting out would be a good addition i don't know if there is one well there we are just discovering things right and left bringing value also we uh we live stream we live stream most of these if you subscribe to our vmware tanzu uh youtube channel and the videos there as well but you can just go to tanzu talk.com and look this up and find it and then hopefully we'll get around to it parts two and maybe even three of what's in backstage because i think it would be it'd be fascinating to talk about the world of plugins not only what they are and how they work and how you do them but also like how they play into the whole ecosystem of stuff right and in that conversation be fun to talk about like how backstage fits into like the tanzu application platform and like where the lines are and how it's used and things like that but then also like i keep alluding to it also be good to know like so if you're a backstage admin what do you do like what what what does that look like and where does it run and then uh so forth and so on so hopefully we'll get around to that but uh with that we'll see everyone next time bye bye

Tanzu Talk · 🍕 Get more pizza.