1
00:00:00,000 --> 00:00:06,160
well i thought today what we would do ben is we've talked a lot about uh even on this podcast

2
00:00:06,160 --> 00:00:10,060
i went back and i looked at i forget which episode we were just we were talking about

3
00:00:10,060 --> 00:00:16,880
developer platform marketing and we even brought up things like backstage and things like that but

4
00:00:16,880 --> 00:00:21,700
and i think maybe even a year ago i maybe it was even you we had a discussion of it but

5
00:00:21,700 --> 00:00:29,120
i wanted just for my own whatever's benefits i guess is the phrase i'm looking for you and i

6
00:00:29,120 --> 00:00:34,040
were talking about backstage a while back a couple weeks ago and i was i was realizing that

7
00:00:34,040 --> 00:00:40,060
i have a lot of misperceptions about what backstage does and what its its components are so i thought

8
00:00:40,060 --> 00:00:45,180
that would be a good a good discussion here check in on not only i think i think since you've been

9
00:00:45,180 --> 00:00:49,560
spending a lot of time on it recently and we should mention as we did at the end of last episode that

10
00:00:49,560 --> 00:00:57,640
you're going to be at backstage con uh in the states in the united states america as we like to call it

11
00:00:58,240 --> 00:01:06,560
when americans leave uh the the the boundaries of america we say the states and then when we go back

12
00:01:06,560 --> 00:01:12,200
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

13
00:01:12,200 --> 00:01:18,740
americans because you know i think i i don't know how it is in in your your uh your domicile but i think

14
00:01:18,740 --> 00:01:24,740
the thing is well this is quite the digression but i think the thing is when you we have this thing in

15
00:01:24,740 --> 00:01:29,540
america where you're not supposed to act too special i know that sounds weird to the rest of the world

16
00:01:29,540 --> 00:01:34,560
uh because we're always doing that but it's almost like to say that and we've seen your tv

17
00:01:34,560 --> 00:01:41,080
yes yes but but it's it's almost like if you're talking with a uh a fellow american you don't want

18
00:01:41,080 --> 00:01:48,700
to be show-offy and be like oh well you know the way we behave here in the states right it's just like

19
00:01:48,700 --> 00:01:52,700
what are you talking about the states maybe other people can talk about it but when we're here you

20
00:01:52,700 --> 00:01:59,000
just say america instead of being all fancy with europeans do it do europeans do it do they go to

21
00:01:59,000 --> 00:02:06,380
the states and then start talking about in the union yeah in the union exactly that would be great you

22
00:02:06,380 --> 00:02:12,400
or or or or well here's you we can test with you when you go abroad do you say back at the kingdom

23
00:02:12,400 --> 00:02:21,340
it makes it sound like it's game of thrones or something doesn't it yeah and you know i have never

24
00:02:21,340 --> 00:02:28,380
heard someone from the uk say the kingdom no no i don't think it's just like nope we don't

25
00:02:28,380 --> 00:02:38,720
know maybe we should maybe we should that could start today anyhow well i forget oh you're going

26
00:02:38,720 --> 00:02:44,900
to be at backstage con when when is that going to be uh i think it's november 6th november 6th in

27
00:02:44,900 --> 00:02:54,660
chicago uh the states in the states yeah which i'm very excited about i've never been to chicago

28
00:02:54,660 --> 00:03:00,500
before so i'm looking forward to that very much uh yeah yeah yeah it's going to be great there's a

29
00:03:00,500 --> 00:03:06,020
there's a packed lineup you can find all about it online we'll we'll put a link in the show notes uh

30
00:03:06,020 --> 00:03:11,380
so you can see the schedule and it's the i think it's the day before it's an adjacent to

31
00:03:11,380 --> 00:03:18,380
kubecon so then the day after kubecon all right oh and then you'll get a pass to that as well i think

32
00:03:18,380 --> 00:03:24,580
right like yeah it's all in pass oh well that will be fun so consequently you you've

33
00:03:24,580 --> 00:03:30,000
you're very knowledgeable uh backstage now and at least you know uh more knowledgeable than the

34
00:03:30,000 --> 00:03:36,000
other like you know five billion minus one people in the world so you've got you've got a leg up on

35
00:03:36,000 --> 00:03:42,260
most of them i wouldn't claim to be the most knowledgeable no but there you go my i'm enjoying

36
00:03:42,260 --> 00:03:47,440
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

37
00:03:47,440 --> 00:03:54,260
system it's good so so let's let's i was thinking instead of doing my usual uh monologue

38
00:03:54,500 --> 00:04:01,120
barrage question that i i would try to do i would try to do it in the proper way which is ask very

39
00:04:01,120 --> 00:04:06,300
short questions and and and then i'll get to a barrage at some point i'll i'll come in and try to

40
00:04:06,300 --> 00:04:13,700
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

41
00:04:13,700 --> 00:04:19,000
i wouldn't do this so i'm giving this is context not barrage that i've been thinking a lot over the past

42
00:04:19,000 --> 00:04:25,620
few months about how um whenever people explain something and this is particularly true in in

43
00:04:25,620 --> 00:04:32,480
our type of tech marketing and kind of enterprise marketing um that it's very easy to slip into just

44
00:04:32,480 --> 00:04:39,540
talking about the outcomes that some technology achieves for you what it does for you and instead

45
00:04:39,540 --> 00:04:46,420
of just like the capabilities that the technology has like what what what what it does not not the

46
00:04:46,420 --> 00:04:54,000
result that it has for you and oftentimes or or sometimes those two can be the same right like

47
00:04:54,000 --> 00:04:59,260
let's let's take an example and outside of the the backstage world and then we'll get into backstage

48
00:04:59,260 --> 00:05:06,320
but like you know you could talk about uh a database and you could say what a data does is it allows you

49
00:05:06,320 --> 00:05:14,640
to store and retrieve data information and it will also allow you to search for it and get pieces of

50
00:05:14,640 --> 00:05:19,340
that that that data and then it has some performance characteristics about how much it can store and

51
00:05:19,340 --> 00:05:25,480
how long it takes to retrieve things and like it won't lose your data i mean you know those are

52
00:05:25,480 --> 00:05:31,400
capabilities that a database has along with all sorts of other stuff or you could speak about databases in

53
00:05:31,400 --> 00:05:38,460
terms of their capabilities and be like it will allow your organization to discover uh all sorts of

54
00:05:38,460 --> 00:05:45,260
latent facts and insights that that your your organization has and therefore make business decisions around

55
00:05:45,260 --> 00:05:51,760
it right and the outcome-based stuff is kind of handy right like i would say i would say that

56
00:05:51,760 --> 00:05:59,560
developer productivity can be an outcome right of of almost any technology but it's very easy to kind

57
00:05:59,560 --> 00:06:08,500
of slip into uh reverse ascribing what a technology has based on the outcomes that you're being told

58
00:06:08,500 --> 00:06:13,140
about it right so if you're just told that a database is going to increase your developer productivity

59
00:06:13,140 --> 00:06:19,500
it's just participating with a whole lot of other things in that it's not necessarily doing a lot of it

60
00:06:19,500 --> 00:06:25,460
anyhow so i i realized that like with backstage i think i've been a little too weighted on the outcomes

61
00:06:25,460 --> 00:06:31,380
that it has and and i need to kind of go back to just knowing what the capabilities are and to start

62
00:06:31,380 --> 00:06:38,500
with that to go the the extreme end of outcome marketing is the bottoms up what's the bucket of

63
00:06:38,500 --> 00:06:44,160
features what's the actual architecture that something has and and just like you know what it is and so

64
00:06:44,160 --> 00:06:52,380
maybe we should start with that so if we look at backstage as like like the bits like let's say

65
00:06:52,380 --> 00:06:59,440
you download it and and like you're installing it and configuring it and then it's composed of i don't

66
00:06:59,440 --> 00:07:04,240
even know the words it would use but it's composed of like let's call it services or subcomponents

67
00:07:04,240 --> 00:07:14,320
like what are the things what are the components of backstage okay so um yeah you can you can download

68
00:07:14,320 --> 00:07:20,300
backstage uh very easily it's open source software you can get it from uh github and when you do that

69
00:07:20,300 --> 00:07:28,040
and uh and you try and and you run it for the first time as i did recently you learn that it is built

70
00:07:28,040 --> 00:07:36,460
from a whole bunch of componentry and all of that is sort of glued together by some um existing

71
00:07:36,460 --> 00:07:44,660
frameworks things like react and typescript and uh you would access it through a browser once you sort

72
00:07:44,660 --> 00:07:51,100
of brought it up so um yeah it's very that means that it's also quite adaptable so it's it's built

73
00:07:51,100 --> 00:07:56,380
internally of a whole bunch of kind of plugins if you like so it's got this plugin architecture

74
00:07:56,380 --> 00:08:03,220
where all these different modules are coming together and a very basic sort of backstage out of the box

75
00:08:03,220 --> 00:08:14,380
you'll get some um capabilities that will allow you to um store a software catalog so a software

76
00:08:14,380 --> 00:08:20,060
catalog might describe the catalog of software that you've produced over the years in your organization

77
00:08:20,060 --> 00:08:24,760
so it could refer to say microservices you might have a catalog that's filled with all your

78
00:08:24,760 --> 00:08:30,340
microservices and stuff it also gives you some uh features that allow you to do things like

79
00:08:30,340 --> 00:08:36,400
sharing documentation on those um software components that you've built uh so that other

80
00:08:36,400 --> 00:08:41,280
people can then you know understand how they work and how they um fit together

81
00:08:41,280 --> 00:08:55,120
and then uh also uh you would get things like um oh my mind's gone blank uh all sorts of other

82
00:08:55,120 --> 00:09:02,940
metadata about those uh systems so so things like apis for example you might be able to uh register

83
00:09:02,940 --> 00:09:09,600
components with the backstage software and be able to understand then what are the apis that those

84
00:09:09,600 --> 00:09:17,000
components uh give you and then uh be able to maybe interact with those apis so you can understand more

85
00:09:17,000 --> 00:09:23,180
about uh the software that's available in your organization why you would do all this is because

86
00:09:23,180 --> 00:09:29,380
it's it's for enterprises right so so backstage is for enterprises really it's not something that

87
00:09:29,380 --> 00:09:36,900
a small group of developers i think would gain as much benefit from as a large group of developers so if

88
00:09:36,900 --> 00:09:42,240
you've got a large group of developers or maybe you're geographically split in different locations

89
00:09:42,240 --> 00:09:50,800
then having somewhere where you can congregate is a really useful thing um backstage provides that

90
00:09:50,800 --> 00:09:58,560
through through a ui that um as i said can be can be modified in lots of different ways using a plug-in

91
00:09:58,560 --> 00:10:06,400
architecture so it's very very popular for larger groups of developers to use to be able to share information

92
00:10:06,400 --> 00:10:14,160
about what they're working on but also get visibility into what others have done and and how uh the systems

93
00:10:14,160 --> 00:10:21,360
that the organization is building are integrated together and and uh composed and react to each other

94
00:10:21,360 --> 00:10:31,800
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

95
00:10:31,800 --> 00:10:40,820
you will and and to summarize it to make sure that that i got it right uh essentially you when it's up and

96
00:10:40,820 --> 00:10:47,560
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

97
00:10:47,560 --> 00:10:54,700
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

98
00:10:54,700 --> 00:11:00,740
we'll use this phrase for it the all of the various projects that you might have within an organization

99
00:11:00,740 --> 00:11:09,720
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

100
00:11:09,720 --> 00:11:15,800
to the retail banking unit and in the retail banking unit like you're gonna log you you me i assume you

101
00:11:15,800 --> 00:11:22,740
have a bank maybe you bank at the mattress bank but you know you you and me like uh like we go to our

102
00:11:22,740 --> 00:11:29,660
bank site we log in somehow and then we're presented with like the ledger like you know the here's here's

103
00:11:29,660 --> 00:11:35,220
our account and here's like all the transactions and then we also have like we can depending on what

104
00:11:35,220 --> 00:11:40,640
country and regulations you live in we can pay bills as we would say in the states or you can do

105
00:11:40,640 --> 00:11:47,740
transfers of money as we would say in the union um and you know you those are basic functionalities

106
00:11:47,740 --> 00:11:51,800
you have and there's other stuff but let's just we'll stick with those two basic functions

107
00:11:51,800 --> 00:11:58,360
so if this bank has a backstage thing i've identified you know at least three components

108
00:11:58,360 --> 00:12:05,760
logging into the bank uh looking at my ledger and then we'll just say transfers so i would go to the

109
00:12:05,760 --> 00:12:11,540
backstage instance that i have and there would be in the catalog and again there would be many others

110
00:12:11,540 --> 00:12:16,620
in a properly architected blah blah blah but we'll keep it simple there would be three items in the

111
00:12:16,620 --> 00:12:23,960
catalog login uh ledger is ledger even the right word we'll just keep going with it ledger

112
00:12:23,960 --> 00:12:30,980
transfers right yeah account account or ledger yeah yeah look at your account yeah yeah yeah yeah

113
00:12:30,980 --> 00:12:38,480
that's exactly right yeah you would see uh in in the catalog you would be able to then break that down

114
00:12:38,480 --> 00:12:45,540
into the components and the the parts that are involved in providing let's say it's a microservice

115
00:12:45,540 --> 00:12:51,160
architecture you know maybe there's other microservices as well things like i don't know fraud detection or

116
00:12:51,160 --> 00:12:58,380
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

117
00:12:58,380 --> 00:13:05,800
at it allows you then to explore and discover more about what's going on around you so maybe you didn't

118
00:13:05,800 --> 00:13:12,480
know there was already a fraud um microservice and you're working on something new that requires that

119
00:13:12,480 --> 00:13:17,000
so it'd be a great place to go and discover more information about it you can have a look in the

120
00:13:17,000 --> 00:13:24,900
catalog you can find out um who owns that application perhaps that you you're newly discovering you know

121
00:13:24,900 --> 00:13:30,800
who which which team inside your organization is responsible for it um you might be able to find

122
00:13:30,800 --> 00:13:37,600
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

123
00:13:37,600 --> 00:13:41,540
interrupting here but i want to get to that is so the other you're getting into the other thing you

124
00:13:41,540 --> 00:13:49,060
mentioned which is the metadata uh which is for example who owns this project like and and i i think

125
00:13:49,060 --> 00:13:56,000
also the again the out-of-the-box experience maybe would tell you something like what is the current

126
00:13:56,000 --> 00:14:04,900
production release of the project of of the accounts like right and then uh where where's the documentation

127
00:14:04,900 --> 00:14:11,580
for and then like you're saying who who could i email right like like who who are the the actual

128
00:14:11,580 --> 00:14:17,920
people who are in charge of this thing such that i could talk with them and then you know you could

129
00:14:17,920 --> 00:14:23,460
imagine and and again you know we have our simple three-part thing but just as you know you can

130
00:14:23,460 --> 00:14:27,240
imagine the reality of things like you're saying you would have fraud detection and blah blah blah but

131
00:14:27,240 --> 00:14:35,720
you could imagine another type of metadata would be um doing these transfers the current state of the

132
00:14:35,720 --> 00:14:43,200
transfer project or or or component in the catalog it can pass regulations for running in the uk

133
00:14:43,200 --> 00:14:48,800
and in the european union like that might be other i don't know am i am i going too far that that would

134
00:14:48,800 --> 00:14:55,600
be metadata you would have in there as well it's it's very flexible so you can change a lot of what you

135
00:14:55,600 --> 00:15:02,120
store in these entities so you can you can make them as rich as you want to but um there's also the

136
00:15:02,120 --> 00:15:08,980
flexibility of something like tech docs so tech docs is another part of the backstage application where

137
00:15:08,980 --> 00:15:15,400
you've you've basically got free will you know you can document anything you like about the components

138
00:15:15,400 --> 00:15:21,620
that you're working right you're sharing with others right so that gives you a very rich platform from

139
00:15:21,620 --> 00:15:29,080
which you can do things like explain how how the component works you know or allow people to

140
00:15:29,080 --> 00:15:37,440
um maybe get started with it and learn how to actually use it or maybe it's more about you know what

141
00:15:37,440 --> 00:15:45,000
as you were saying which um regulations it's conformant with and how that conformance was

142
00:15:45,000 --> 00:15:50,180
tested and all that sort of stuff you can have a free reign over what information you provide in a

143
00:15:50,180 --> 00:15:56,320
in a tech doc so i i would assume then the the so you got a catalog we got our three components

144
00:15:56,320 --> 00:16:05,840
and there's also metadata knocking around probably assigned each of the catalog items did it what's the

145
00:16:05,840 --> 00:16:12,380
word they use for that is that called a project or uh uh so catalogs broken down into lots and

146
00:16:12,380 --> 00:16:18,060
lots of sort of categories if you like um categories would include things like overarching

147
00:16:18,060 --> 00:16:26,360
systems individual components apis but also users groups as well so you can model your organization

148
00:16:26,360 --> 00:16:31,860
so you could say oh this belongs to this group or this belongs yeah yeah and there's lots of

149
00:16:31,860 --> 00:16:37,160
flexibility there so there's lots of okay okay well this this this starts to answer you know the

150
00:16:37,160 --> 00:16:42,140
question that that's scurrying around in my head is like well why don't you just have like a well

151
00:16:42,140 --> 00:16:48,180
structured wiki page or i don't really know what ajira is but i think that's a wiki page right i mean

152
00:16:48,180 --> 00:16:54,120
and and like i think in what you were just saying there's another thing that comes with with uh

153
00:16:54,120 --> 00:17:01,240
backstage which is um well it's not just the conventions and the norms of how you use it but

154
00:17:01,240 --> 00:17:09,300
there's actual like entities about here is a person here's a user and here is like uh you know the other

155
00:17:09,300 --> 00:17:15,280
stuff you were saying here is like a system that things might run in so right away a backstage is

156
00:17:15,280 --> 00:17:25,180
making decisions about the nouns in your enterprise architecture right like it's saying you're going

157
00:17:25,180 --> 00:17:29,520
to care about there's going to be teams of people teams of people are composed of i assume it has

158
00:17:29,520 --> 00:17:35,740
groups here's a group a group is composed of people you don't really usually break down people into like

159
00:17:35,740 --> 00:17:40,880
you know their organs and things like that so a person's like a cul-de-sac of an entity but here's

160
00:17:40,880 --> 00:17:47,520
like a person uh and then each of the the catalog items like the project or whatever like they have

161
00:17:47,520 --> 00:17:54,940
people associated with it and then so right away because it has that in its architecture or it's uh

162
00:17:54,940 --> 00:18:00,280
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

163
00:18:00,280 --> 00:18:06,500
kids call this anymore yeah i'm guessing you know in kubernetes for folks used to using kubernetes

164
00:18:06,500 --> 00:18:12,620
it's like kinds right there's all these different kinds of things kinds of entities yeah so uh you

165
00:18:12,620 --> 00:18:17,060
know resource would be another one where you can right and then and then like you're saying apis

166
00:18:17,060 --> 00:18:23,460
or whatever yeah yeah and that's and that may maybe tell me if that's a good example for me to like

167
00:18:23,460 --> 00:18:32,080
like uh overly diagnose or not understand here is so you could imagine if you had quote unquote just a

168
00:18:32,080 --> 00:18:37,780
wiki right like you could establish and every you know you could establish the conventions that use

169
00:18:37,780 --> 00:18:45,480
a wiki every for the um uh the the the login the ledger and the transfer thing they each need a wiki

170
00:18:45,480 --> 00:18:50,380
page that like keeps the following up today about who's working on it what the current version is like

171
00:18:50,380 --> 00:18:54,440
you just go in there and update it right and that's part of your governance process to do that

172
00:18:54,440 --> 00:19:01,880
yeah so now really works right right right no no exactly and that that's what your your your tone

173
00:19:01,880 --> 00:19:09,160
and your sentiment is like exactly is the thing right so then it's like well what we've learned over

174
00:19:09,160 --> 00:19:19,080
the decades is that people will not follow unenforced conventions it's just like it won't happen

175
00:19:19,080 --> 00:19:26,440
so in they won't and instead you want to build into your tool kind of like a compiler doesn't let you

176
00:19:26,440 --> 00:19:34,200
like compile bad code like you enforce you have to do these things in this way right and and for example

177
00:19:34,200 --> 00:19:40,000
because we have a microservice we have a modern day contemporary microservices architecture

178
00:19:40,000 --> 00:19:49,660
which means uh if you if the if the transfer thing wants to check what your current balance is to see

179
00:19:49,660 --> 00:19:55,160
if you can transfer money it's going to need to get an api to your account like that's the only way

180
00:19:55,160 --> 00:20:01,740
it's going to happen so therefore the way that we do our programming is you have to use apis right

181
00:20:01,740 --> 00:20:07,980
which i think everyone kind of takes for granted now maybe but like you don't have to do things that

182
00:20:07,980 --> 00:20:14,300
way right like you could you could interact through different means or whatever right you could connect

183
00:20:14,300 --> 00:20:20,920
directly to a database and look things up instead of going through an api blah blah blah so right there

184
00:20:20,920 --> 00:20:29,440
there's a there's like like that seems like a key very important assumption about reality that

185
00:20:29,440 --> 00:20:35,920
backstage is making and making for you is you will have apis and that will be the way that all of your

186
00:20:35,920 --> 00:20:41,600
different projects communicate with each other and the reason that's good is because like a wiki doesn't

187
00:20:41,600 --> 00:20:49,380
care so like there's no way to kind of like make how you document and find and discover apis all the

188
00:20:49,380 --> 00:20:56,420
same and more or less like enforce that people talk about that yeah there's definitely there's some truth

189
00:20:56,420 --> 00:21:02,060
in that i would i would say backstage is more flexible than that like you can register components that

190
00:21:02,060 --> 00:21:09,320
don't have an api that's fine right no problem with that at all i think where where backstage blows a wiki

191
00:21:09,320 --> 00:21:18,220
out of the water is its ability to integrate with things and display in real time what's going on as

192
00:21:18,220 --> 00:21:23,900
well so that right through right through for example the plugin architecture you know if your platform is

193
00:21:23,900 --> 00:21:30,300
kubernetes then you can have a view of okay which applications do i have currently running in

194
00:21:30,300 --> 00:21:35,760
kubernetes and what sort of status are they in that sort of thing so you'll never you don't get that

195
00:21:35,760 --> 00:21:42,340
from a wiki right right okay so oh go ahead go ahead same with like documentation as code right you can

196
00:21:42,340 --> 00:21:48,900
store the documentation next to the code you could have um a supply chain or a ci chain or whatever that

197
00:21:48,900 --> 00:21:54,280
is essentially building that documentation every time the code gets built so that you're always up

198
00:21:54,280 --> 00:22:00,420
to date with your documentation there's no there's no lag like there is with wikis often where you know

199
00:22:00,420 --> 00:22:05,380
oh yeah it's three years out of date because no one's actually been back to update that recently

200
00:22:05,380 --> 00:22:13,540
right right speaking of updating sounds like you have an incoming update well so so this this gets so

201
00:22:13,540 --> 00:22:20,700
there's two other branches to go there so i guess like like one way of putting it that's not too

202
00:22:20,700 --> 00:22:27,340
helpful is that backstage is custom built around this scenario of as you were saying in a larger

203
00:22:27,340 --> 00:22:35,240
organization we have multiple teams who kind of own some component that the login page the ledger page

204
00:22:35,240 --> 00:22:41,760
the transfer page like the teams uh own this and like you're saying it's optional but they're probably

205
00:22:41,760 --> 00:22:46,500
going to communicate with each other through apis and so therefore they're going to need to look up apis

206
00:22:46,500 --> 00:22:52,540
and know how to integrate with and look at documentation so backstage is just like let's build up a whole

207
00:22:52,540 --> 00:23:00,520
collaboration suite built around that and then also uh and and i'm getting to the plugin thing the other

208
00:23:00,520 --> 00:23:07,000
thing is that like we want to automate updating that information as much as possible right so when a new

209
00:23:07,000 --> 00:23:11,020
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

210
00:23:11,020 --> 00:23:15,120
developer i don't think the senior developers are like i want to go update a wiki that's a good use

211
00:23:15,120 --> 00:23:20,660
of my time like uh you know they probably got something else to do uh and so like you know you

212
00:23:20,660 --> 00:23:24,620
basically go to the junior developer and you're like oh you got to run uh the document generation

213
00:23:24,620 --> 00:23:28,840
thing and hook it up into the wiki thing to make sure it's updated and let's let's do that now

214
00:23:28,840 --> 00:23:33,860
i'm sure someone could argue like oh we have a wiki and you can just run a script and automate all

215
00:23:33,860 --> 00:23:39,400
of that and put it in your your jenkins pipeline or or whatnot because i'm sure they talk like that

216
00:23:39,400 --> 00:23:46,620
but the point being that backstage is like let me just do all that for you like there is this way of

217
00:23:46,620 --> 00:23:51,620
doing cloud native application development where we assume all these things are happening and in the

218
00:23:51,620 --> 00:23:56,700
same way that you might say that like you know if you're using one of our platforms what we're trying

219
00:23:56,700 --> 00:24:04,380
to do is give you out of the box conventions whether it's an opinion or an accelerator or an app

220
00:24:04,380 --> 00:24:10,920
engine or whatever we're like sure you can customize it but how about you don't right like this is just

221
00:24:10,920 --> 00:24:16,100
like the default way of working and thinking about stuff and you should just start using that instead

222
00:24:16,100 --> 00:24:21,560
of coming up with your own like conventions and ways of doing things well yeah i think i think

223
00:24:21,560 --> 00:24:27,060
backstage is you know part of the beauty of backstage is that it models a common need like i said if you

224
00:24:27,060 --> 00:24:34,980
have a large group of developers you always needed some way to be able to share information and collaborate

225
00:24:34,980 --> 00:24:42,200
on the stuff that you're building you can't there's no other way to do it efficiently than to be able to

226
00:24:42,200 --> 00:24:49,320
share all that information so the choice was always you know well what do we do how do we share this

227
00:24:49,320 --> 00:24:55,480
information and that's where you end up with a lot of wikis and jiras and word documents and you know

228
00:24:55,480 --> 00:25:06,020
shared folders on network drives right remember all that stuff yeah holy crap so so you know it's like

229
00:25:06,020 --> 00:25:10,260
that's that's how it used to be done but it was very fragmented it was all over the place it was

230
00:25:10,260 --> 00:25:16,960
never usually up to date it also didn't have that sort of real-time aspect of well you know i want to

231
00:25:16,960 --> 00:25:22,520
integrate it with my monitoring software or i want to integrate it with my platform so i can see what's

232
00:25:22,520 --> 00:25:26,940
running where and it didn't you know it didn't have all of that stuff so rather than everyone

233
00:25:26,940 --> 00:25:32,200
building their own and having their own ideas you know the backstage community has come together to

234
00:25:32,200 --> 00:25:38,500
try and build a representation of what large groups of developers actually want to need

235
00:25:38,500 --> 00:25:46,180
and made it flexible enough that you can then cherry pick which bits you want to use and which bits you

236
00:25:46,180 --> 00:25:55,200
want to offer to your development teams so so okay so so basically it's like like uh maybe not on

237
00:25:55,200 --> 00:26:00,040
purpose at the beginning but this is kind of scurrying around at the moment is there is an attempt

238
00:26:00,040 --> 00:26:10,660
to make a de facto standard for how in in a biggish organization you represent the catalog of all

239
00:26:10,660 --> 00:26:17,600
the the the projects and apis that you have right like unless so so for example let's let's imagine a

240
00:26:17,600 --> 00:26:24,320
world where quote unquote everyone uses backstage to solve this problem right like like unless you try

241
00:26:24,320 --> 00:26:31,260
unless unless the unless you try to like do something different all of the organizations

242
00:26:31,260 --> 00:26:36,700
using it will have a very similar approach to how they do that kind of collaboration among teams

243
00:26:36,700 --> 00:26:41,640
right though if they just use the out-of-the-box way of representing these things in backstage here's

244
00:26:41,640 --> 00:26:46,580
a project here's the people here's like the apis this is the way the documentation works

245
00:26:46,580 --> 00:26:51,640
here's the way you integrate into your automated build process so you always have the most recent

246
00:26:51,640 --> 00:26:58,280
tech docs and things like that and in theory if you went again if you were just using the mostly out

247
00:26:58,280 --> 00:27:02,960
of the box not customizing it if you went from one organization to another organization that was

248
00:27:02,960 --> 00:27:07,660
using backstage you would be like oh yes i know what's going on here like i don't have to learn

249
00:27:07,660 --> 00:27:14,640
a whole new set of conventions it's so forth like in general i think now back when i was programming

250
00:27:14,640 --> 00:27:19,960
and probably also nowadays people don't come up with like crazy exotic ways to do version control

251
00:27:19,960 --> 00:27:25,240
they're sort of like yeah we follow the same conventions and norms we just there's no reason

252
00:27:25,240 --> 00:27:32,340
to have customized version control so you have a similar type of effect um and so then and and i think

253
00:27:32,340 --> 00:27:38,100
this is where things for me get get into that outcome versus capability thing so then you've got the

254
00:27:38,100 --> 00:27:44,520
whole plugin architecture so so so go over that or is or is this older java people would call it maybe

255
00:27:44,520 --> 00:27:50,700
the portlet architecture where you're uh you're plugging things in there but like what is what

256
00:27:50,700 --> 00:27:58,400
what do they even call it and what is this plugin extension sdk like like what's going on with that

257
00:27:58,400 --> 00:28:05,380
that part of the backstage world yeah i think i think you nailed it actually in in the question uh

258
00:28:05,380 --> 00:28:13,680
it is thank you it is very kind of thinking about it it is kind of portlet like uh the way that it's

259
00:28:13,680 --> 00:28:21,740
currently architected um i'll be honest i wish it wasn't architected that way but that's kind of how it

260
00:28:21,740 --> 00:28:31,200
how it feels in that um you do have a lot of freedom you can create a plugin for you know almost anything you

261
00:28:31,200 --> 00:28:39,000
can think of really and and and have that integrated into the backstage gui depending on you know how

262
00:28:39,000 --> 00:28:44,800
how much um how much effort you can put into it how much knowledge you have about how it works and stuff

263
00:28:44,800 --> 00:28:53,900
so it's easy to do you can you can you know grab there's a whole marketplace full of um uh different

264
00:28:53,900 --> 00:28:59,280
uh ready-made plugins which can just go and sort of cherry pick from and integrate them into your

265
00:28:59,280 --> 00:29:05,880
backstage but that's the important bit the minute you sort of have to know how to integrate them into your

266
00:29:05,880 --> 00:29:13,020
backstage and for me that feels like it's a bit of a barrier to entry to sort of cherry picking freely

267
00:29:13,020 --> 00:29:19,860
amongst the different components that are in the in the backstage marketplace for uh for plugins for

268
00:29:19,860 --> 00:29:27,140
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

269
00:29:27,140 --> 00:29:33,700
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

270
00:29:33,700 --> 00:29:39,280
sure that's where the backstage community would like to get to at some point in the future but it's not

271
00:29:39,280 --> 00:29:46,920
like that at the moment however that said still a brilliant system because the rest of the ui has been

272
00:29:46,920 --> 00:29:54,140
thought about and has been standardized so you're not having to build every button bell widget you can

273
00:29:54,140 --> 00:30:01,140
start with a ready-made set of um components that will allow you to you know build up pages and do

274
00:30:01,140 --> 00:30:10,620
various different um you know gui uh things with your with your plugin so if you if you if the plugin that

275
00:30:10,620 --> 00:30:16,460
you want doesn't exist you can create one in order to create one you're probably going to need

276
00:30:16,460 --> 00:30:24,140
uh programmers with some experience of things like um react and typescript for example um in order to

277
00:30:24,140 --> 00:30:30,620
be able to sort of hit the ground uh running on that and then of course lots of vacuum uh docs uh

278
00:30:30,620 --> 00:30:37,340
backstage documentation to be uh to be had which is good you know so it's a nicely documented system

279
00:30:37,340 --> 00:30:40,940
they've done a good job of the documentation there's some great stuff to get you started

280
00:30:41,740 --> 00:30:49,340
um so yeah it's possible and and a lot of people are doing it including ourselves well so so let's

281
00:30:49,340 --> 00:30:56,300
let's pick uh a plugin and and use that to explore like what the deal with plugins is right because i

282
00:30:56,300 --> 00:31:02,780
i think i think the outcome is is pretty open-ended it's like and and and i'll put it in very simple

283
00:31:02,780 --> 00:31:09,020
terms as far as it's open-endedness is like you make a plugin and of course there's probably headless

284
00:31:09,020 --> 00:31:14,300
ones but you make a plugin and now there's a new little component in your ui that does something

285
00:31:14,860 --> 00:31:22,620
and and you know like and so i think i think a very popular type of plugin that maybe even comes

286
00:31:22,620 --> 00:31:29,580
with bundled with backstage now is like metrics of some sort right like and and like i remember you

287
00:31:29,580 --> 00:31:34,300
know when spotify was talking about backstage several years ago there was one presentation

288
00:31:34,300 --> 00:31:39,340
where they had one that i thought was fascinating this is how exciting our enterprise software world

289
00:31:39,340 --> 00:31:47,180
has been that the following is fascinating uh but but they they made i think a plugin that would

290
00:31:47,180 --> 00:31:53,660
on every project page so again just imagine the account the ledger and the transfer project page

291
00:31:53,660 --> 00:31:57,580
it just had a little i don't know what they call this in backstage a little widget a little part of

292
00:31:57,580 --> 00:32:04,540
the ui that either said they were running the most recent version of python or they needed to upgrade

293
00:32:04,540 --> 00:32:10,140
to the most recent version of python so let we can translate this into our world at least a world that

294
00:32:10,140 --> 00:32:15,740
you know more about like there's some new version of spring boot out right or or like or like maybe

295
00:32:15,740 --> 00:32:21,900
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

296
00:32:21,900 --> 00:32:26,700
to set up a compliance thing that we're going to move to uh that great vm that i can buy from the

297
00:32:26,700 --> 00:32:32,940
vmware tons of people and get support for instead so i whoever cares about this thing i'm going to create

298
00:32:32,940 --> 00:32:37,980
a plugin and and i'm going to go over the scenario and tell me if i'm just making up fantasy stuff but

299
00:32:37,980 --> 00:32:45,820
i'm going to make a backstage plugin that will get added to all the projects that that use uh java

300
00:32:45,820 --> 00:32:52,300
and it's going to figure out if the current version of that project is using the oracle vm or the the

301
00:32:52,300 --> 00:32:58,780
vmware vm and it's going to display that on the page so that the people know so you've got an information

302
00:32:58,780 --> 00:33:03,820
radiator and then also i'm going to be able to query that and figure out uh which teams i need

303
00:33:03,820 --> 00:33:09,660
to go talk with when and that would be the whole plugin is that like is that a plugin it could be

304
00:33:09,660 --> 00:33:16,620
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

305
00:33:16,620 --> 00:33:22,620
nothing but a wonderful idea and uh sure i know typescript and react whatever that is that sounds like

306
00:33:22,620 --> 00:33:27,420
a bunch of nonsense that people younger than me have come up with but that's fine and like so

307
00:33:27,420 --> 00:33:34,700
then what what do i do what what like and you don't have to like say then you type x underscore 32

308
00:33:35,260 --> 00:33:39,900
semicolon but like you know like like what what's the general stream of activities that i go through

309
00:33:39,900 --> 00:33:47,580
to get to the point where that that happens where there's a little there's a little red light a little

310
00:33:47,580 --> 00:33:55,820
red yellow or green uh image on each project page and then every monday i'm sent a report that tells

311
00:33:55,820 --> 00:34:02,700
me like what what things are uh on the new vm versus not on the new jvm i guess i guess your first

312
00:34:02,700 --> 00:34:09,100
part of call would be to figure out which apis you need in order to be able to surface that information

313
00:34:09,100 --> 00:34:17,660
right so a couple of choices available i guess um backstage components are very often uh linked

314
00:34:17,660 --> 00:34:24,620
directly to a github um location or a git lab location you know some sort of git location

315
00:34:24,620 --> 00:34:30,620
public or private um maybe you could figure it out from there maybe for a java project you could have

316
00:34:30,620 --> 00:34:36,460
a look at um how it's built is it built with maven or gradle if it's built with those two things

317
00:34:36,460 --> 00:34:43,500
you know grab the palm for the maven for example see if you can figure out okay which version of spring

318
00:34:43,500 --> 00:34:49,500
does this have should it have a different one uh you could then establish in the plugin so so it comes

319
00:34:49,500 --> 00:34:56,940
down to apis i guess if you wanted to know like a runtime what's running where or maybe what containers

320
00:34:56,940 --> 00:35:03,420
have got what maybe you need a container layer so perhaps you'd use some sort of harbor plugin or

321
00:35:03,420 --> 00:35:08,540
something to try and figure out okay what containers have i got what layers do they have in them which

322
00:35:08,540 --> 00:35:15,180
one's got this layer that you know is problematic that i need to improve on so and now now to now to

323
00:35:15,180 --> 00:35:20,860
to interrupt you so this this feels like i'm getting close to the realm of like Coté's making stuff up

324
00:35:20,860 --> 00:35:27,340
because it sounds good but it seems like like my perception of backstage is that like it would already

325
00:35:27,340 --> 00:35:33,500
know all those things or at least there would be a convention and out of the box backstage that said

326
00:35:34,380 --> 00:35:41,500
if the project and tell me if project is the wrong thing if if the the login page the the ledger and

327
00:35:41,500 --> 00:35:50,060
the transfer project that uh it the metadata in it should always know the version of the jvm that it's

328
00:35:50,060 --> 00:35:57,020
running it's just like in there like like it's it's always you don't really have to like do very much

329
00:35:57,020 --> 00:36:03,340
it's just something that gets cataloged in there like is that not true or like i don't think that's

330
00:36:03,340 --> 00:36:09,820
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

331
00:36:09,820 --> 00:36:16,940
catalog entities are basically described using yaml so there's a there's a yaml stanza that describes those

332
00:36:16,940 --> 00:36:22,780
things it's a well-documented uh stanza as well so there's lots of information about that on the

333
00:36:23,660 --> 00:36:31,500
backstage documentation site but i don't remember anything in sort of componentry that that really

334
00:36:31,500 --> 00:36:39,020
goes down to that level of detail about a component but it doesn't necessarily mean that it can't be

335
00:36:39,020 --> 00:36:45,500
could be extensible so it could be that you can extend those stanzas and add other or new types of

336
00:36:45,500 --> 00:36:50,860
stanzas to them again it's all comes down to the amount of customization that you're prepared to

337
00:36:50,860 --> 00:36:57,260
expend and if you are going to go to that sort of level of customization i'd urge you to work

338
00:36:57,260 --> 00:37:04,220
with the community to see if that can be um sent upstream you know so that so that other users can

339
00:37:04,220 --> 00:37:10,220
benefit from it because i'm pretty sure like like you've identified there'd be lots of folks who'd be

340
00:37:10,220 --> 00:37:16,220
interested in that and you should folks out there if i'm getting this wrong just tell us tell us in the

341
00:37:16,220 --> 00:37:21,340
show in the comments tell us uh online if you're online with us now to come and join the chat and

342
00:37:21,340 --> 00:37:27,900
tell us right if i'm getting it wrong just tell me and okay so so then okay so for my little project

343
00:37:28,700 --> 00:37:35,340
which is like i want to know uh basically it's like i want to know which version of the jvm java

344
00:37:35,340 --> 00:37:39,180
projects are using right because that's that's more or less what i'm querying and the reason i want to

345
00:37:39,180 --> 00:37:43,900
know that is because like i don't like the new agreements for the the oracle jvm i want to go to

346
00:37:43,900 --> 00:37:50,300
another one and um so in that instance as you were saying what you need to do

347
00:37:51,340 --> 00:37:57,180
backstage doesn't do the following for you it's not going to tell you inside the project what which

348
00:37:57,180 --> 00:38:05,260
version of the jvm is being used now getting that information can be simple right because in each

349
00:38:05,260 --> 00:38:11,660
project they have to build it so the first thing is you could ask the team to just manually update that

350
00:38:11,660 --> 00:38:17,900
but as we discussed that doesn't work right like they're just the junior developer is needs to go

351
00:38:17,900 --> 00:38:23,180
like pick up their kids and forgets to do that you know three months yeah and i better say straight

352
00:38:23,180 --> 00:38:28,780
away there's no way in a java project to tell exactly which brand of jvm is going to run on the

353
00:38:28,780 --> 00:38:36,540
two are completely separate so then right right right okay that's even better you'd always have to look

354
00:38:36,540 --> 00:38:41,020
at the container that that is a fantastic point right because what you really want to look at for

355
00:38:41,020 --> 00:38:47,180
that is the deployment configuration right like not only and then and then you're bringing in you

356
00:38:47,180 --> 00:38:51,420
want to look at depending on how you run things you want to see what your what your what jvm you're

357
00:38:51,420 --> 00:38:57,100
running in development testing staging and production and then all the various combinations of that

358
00:38:57,100 --> 00:39:02,140
depending on region and department and things like that like you could be whatever so you could be

359
00:39:02,140 --> 00:39:07,100
actually running multiple jvms and maybe the license agreement you know for dev whatever i don't know all

360
00:39:07,100 --> 00:39:12,380
this stuff i think that's it so it would be containers really wouldn't it you'd be you'd be interested in

361
00:39:12,380 --> 00:39:19,260
which container base layers those software those those components are being run on top of so you write

362
00:39:19,260 --> 00:39:25,260
your java project but it's going to run on a base layer container you know what is that container and

363
00:39:25,260 --> 00:39:31,500
and what jvm is included with that container so i think this is a container problem now we've and and so

364
00:39:31,500 --> 00:39:37,180
okay so so then so this is the whole other well whatever i'm going to hold that off for a bit

365
00:39:37,180 --> 00:39:43,100
but like so there's kind of two routes that you go down there depending on how your organization

366
00:39:44,380 --> 00:39:50,380
keeps track of its build artifacts i'm trying to be vague in in in my my language there and my

367
00:39:50,380 --> 00:39:54,220
understanding is if you're doing things in a cloud native way which is to say running on kubernetes or

368
00:39:54,220 --> 00:40:01,740
whatever what you basically do is you build up images container images and probably your developers

369
00:40:01,740 --> 00:40:06,140
don't do that like they do that for development but when it comes to deploying in the production

370
00:40:06,940 --> 00:40:11,820
in theory the developers don't just give you an image and you just run that i i don't know though

371
00:40:11,820 --> 00:40:16,780
like i think this is i don't know if this is established but it's not like the old days where

372
00:40:16,780 --> 00:40:23,260
like you would say like here's a war file just load that up into our production web sphere and maybe

373
00:40:23,260 --> 00:40:29,820
change the the configuration around it a little bit whereas yeah like like for example the cloud

374
00:40:29,820 --> 00:40:35,900
foundry way of doing things is like the developers don't build the binary ever right like yeah and and

375
00:40:35,900 --> 00:40:42,940
so you would have a manifest the developer would basically deliver like a manifest in the not letting

376
00:40:42,940 --> 00:40:48,060
the developers build it up where they say i'd like you to run on this operating system on this

377
00:40:48,060 --> 00:40:53,820
container that we have and put this code in it and give it this configuration so it can access

378
00:40:53,820 --> 00:40:58,380
the network and then you whoever does this can build this stuff right and in that case

379
00:40:59,180 --> 00:41:04,220
to get the version of the v the jvm you are running it's probably in like the manifest somewhere

380
00:41:04,220 --> 00:41:08,860
right like you just know that because the way you built this container it includes this jvm so

381
00:41:08,860 --> 00:41:13,980
now you know the version and then you can go update that in the metadata for the project and then you're

382
00:41:13,980 --> 00:41:20,700
done more or less but like but like knowing how to do that backstage doesn't do any of that

383
00:41:20,700 --> 00:41:27,260
of course right and like you would in fact if you're following a standard way of doing that like

384
00:41:27,260 --> 00:41:32,540
if you're using the tanzu suite of doing things i like the way i pronounced it there right where like

385
00:41:32,540 --> 00:41:37,180
in theory if you're using the tanzu application platform there's all sorts of tools in there that do

386
00:41:37,180 --> 00:41:43,340
everything i just kind of described right like build up your images assemble your images for production

387
00:41:43,340 --> 00:41:48,300
track which version you're using for things blah blah blah and so there's a plug-in in the tanzu

388
00:41:48,300 --> 00:41:53,260
application platform somewhere you know in this world that i'm creating that would just do that for you

389
00:41:53,260 --> 00:41:58,380
because you're following the convention of how you build and configure your deployable artifacts

390
00:41:59,660 --> 00:42:06,300
yeah with tanzu you have the concept of a secure software supply chain you know that's built into

391
00:42:06,300 --> 00:42:14,540
a tanzu application platform to a different extent it's also built into the tanzu application service

392
00:42:14,540 --> 00:42:21,900
as well as you mentioned you know based on uh cloud foundry so you are sure then where you're you have

393
00:42:21,900 --> 00:42:29,420
less mystery meat in in your containers that way right because they follow a prescribed um build route

394
00:42:29,420 --> 00:42:35,340
you know and and you can you can you can trust the manifest i mean if it says it was built this way

395
00:42:35,340 --> 00:42:40,700
then you know there's whatever however many nines of of certainty that it was built that way and then

396
00:42:40,700 --> 00:42:46,780
also because there's um what do you like drift remediation because it tries to enforce this stuff

397
00:42:47,740 --> 00:42:52,700
then you can through a high degree of nines of precision you can trust that it's actually it

398
00:42:52,700 --> 00:42:58,380
hasn't drifted away from that because it's blah blah blah all that usual stuff repaving i think we like to

399
00:42:58,380 --> 00:43:05,100
call it yeah and with the tanzu application platform we do um software bill of materials so we follow a

400
00:43:05,100 --> 00:43:11,820
standard for that bill of materials to produce it and uh store it away in a metadata store so then you

401
00:43:11,820 --> 00:43:17,580
could see backstage being able to benefit from that by having plugins that can then go and have a look in

402
00:43:17,580 --> 00:43:23,260
that metadata store and tell you things about the software that's been built and we have plugins for

403
00:43:23,260 --> 00:43:30,700
that in uh the the we call it the tanzu developer portal is based on backstage so we have uh backstage

404
00:43:30,700 --> 00:43:36,460
plugins for that in in our platform but they're not uh they're not available elsewhere at the moment

405
00:43:36,460 --> 00:43:40,140
right that's that's like something that gets added on and then just to add just to kind of complete

406
00:43:40,140 --> 00:43:45,420
it out in my head because i also like hearing myself think out loud uh like like there's a third thing

407
00:43:45,420 --> 00:43:51,100
you could do and i'm pretty sure you could do this like if if you are using like spring applications

408
00:43:51,100 --> 00:43:57,820
i think they're usually instrumented at runtime you could query what do you call it the actuators on

409
00:43:57,820 --> 00:44:03,180
there and it probably knows the version of the jvm it's running so in in theory you could set up a

410
00:44:03,180 --> 00:44:08,700
script that actually like queries your stuff in production and goes to each of the the running

411
00:44:09,660 --> 00:44:15,260
applications and says like tell me what version of the jvm you're using and you could batch that up to run

412
00:44:15,260 --> 00:44:21,020
once or you could run it on a daily basis and then that would basically just pull in a bunch of stuff

413
00:44:21,020 --> 00:44:28,540
and then your plugin would take that and then use the api i assume there's apis in backstage and then

414
00:44:28,540 --> 00:44:35,260
it would call all the apis in backstage and just like update that or or something or maybe maybe even

415
00:44:35,260 --> 00:44:41,420
your plugin what you have to do is you load up your the the the web page for your backstage project like

416
00:44:41,420 --> 00:44:46,940
the ledger and you press a little button that says go figure out the current version of the vm and it's

417
00:44:46,940 --> 00:44:52,460
just once you click on that button it goes and queries the account i mean again i'm ludicrously

418
00:44:52,460 --> 00:44:57,500
simplifying this but it connects to whatever the the ledger project is running in production and it

419
00:44:57,500 --> 00:45:02,140
finds the spring actuator stuff and it's like hey what version of the jvm are you running and then that

420
00:45:02,140 --> 00:45:08,380
returns back and then it updates that little widget on on yes page i mean that would that would be an

421
00:45:08,380 --> 00:45:15,980
absurd way to do things almost no but but maybe not if you're on spring and if you've added the actuators

422
00:45:15,980 --> 00:45:22,860
then yes you could do that yeah but all right there's also there's also another way a fourth way

423
00:45:22,860 --> 00:45:29,820
i guess i don't kind of lost count of the ways now but a fourth way would be your application monitoring

424
00:45:29,820 --> 00:45:36,220
suite you know if you've got some sort of apm suite then that would be yet another way where

425
00:45:36,220 --> 00:45:43,420
you could maybe find out at runtime because those those um those suites do tend to um

426
00:45:44,540 --> 00:45:48,780
have a lot of metadata about the applications that are running so there's there's yeah there's more

427
00:45:48,780 --> 00:45:54,460
than one way to but so so the takeaway from all the takeaway my my conclusion from all that is

428
00:45:55,340 --> 00:46:03,660
is you could easily do this if you can easily get the information that information being for the ledger

429
00:46:03,660 --> 00:46:10,460
project and we'll simplify it which version of the jvm are you running in production within a 24 hour

430
00:46:10,460 --> 00:46:17,740
window right now or 24 hours ago right and like you're saying you could be using your um your your

431
00:46:17,740 --> 00:46:22,460
monitoring logging observability tools and it could just know like we've got the ledger application running

432
00:46:22,460 --> 00:46:26,940
in production here's all the information that we collected about it right and you could probably

433
00:46:26,940 --> 00:46:33,180
extract that out from the jvm version from log files from querying things whatever right but it's just

434
00:46:33,180 --> 00:46:37,900
something that it knows so your plugin would just like you would give it the credentials to connect to

435
00:46:37,900 --> 00:46:44,140
your your production management system and it would just pull that done right or scenario one was the

436
00:46:44,140 --> 00:46:58,860
you could say uh the way that we we we do our building and deploying of applications there's always like

437
00:46:59,580 --> 00:47:05,020
i imagine it's a yaml file there's always some yaml file somewhere that you can go get that says jvm version

438
00:47:05,980 --> 00:47:12,300
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

439
00:47:12,300 --> 00:47:16,140
and then that's it and then and then you can have have that updated but

440
00:47:17,980 --> 00:47:18,780
going to the

441
00:47:20,780 --> 00:47:28,140
data architecture going to the data architecture of backstage there's nothing in the data architecture that says when you register

442
00:47:29,420 --> 00:47:34,220
the ledger project you have to tell me the version of the jvm you're running

443
00:47:34,860 --> 00:47:38,300
like that that doesn't really like that's not enforced at all

444
00:47:39,820 --> 00:47:47,580
no there there there's very few uh mandatory uh metadata items for a catalog entry actually this is

445
00:47:47,580 --> 00:47:54,540
very flexible uh it gives you a lot of ability to choose not to provide certain amount certain

446
00:47:54,540 --> 00:48:00,780
information if you don't have it or you um you don't use use it you know it's not relevant to your

447
00:48:00,780 --> 00:48:07,180
organization so there are very few i i can't think of the top of my head exactly which ones they are but

448
00:48:07,180 --> 00:48:12,540
they're going to be things like um you know catalog entry name and stuff like that are going to be

449
00:48:12,540 --> 00:48:19,500
mandatory but after that it's very flexible so so okay so to check in at this point with now so

450
00:48:19,500 --> 00:48:27,100
backstage uh it it basically defines like i'm going to use this word again but your your your information

451
00:48:27,100 --> 00:48:33,980
architecture for all the software things in your organization here's like a project page we assume

452
00:48:33,980 --> 00:48:39,500
most all projects have an api so like that's going to be in there it has a name it also has

453
00:48:39,500 --> 00:48:42,780
the team and the people on the team who are associated with this project

454
00:48:43,580 --> 00:48:49,420
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

455
00:48:49,420 --> 00:48:56,460
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

456
00:48:56,460 --> 00:49:03,180
that's very important about at least what i just described is like it's a implemented convention for

457
00:49:03,180 --> 00:49:10,540
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

458
00:49:10,540 --> 00:49:15,580
for like 10 years but like that is an attempt at just a de facto standard of how we represent all

459
00:49:15,580 --> 00:49:20,780
of these things in a similar way that like intentional or not like if you go look at projects

460
00:49:20,780 --> 00:49:26,620
on github they're all kind of comprehensible no no matter what they all right like they all have a

461
00:49:26,620 --> 00:49:32,300
readme file they all tend to have they identify who a person is they identify like the number of commit

462
00:49:32,300 --> 00:49:37,500
like all this kind of which this is a whole other discussion of like so why don't you just use github

463
00:49:37,500 --> 00:49:43,580
but whatever no no so so here's a key difference actually which are not highlighted yet but not only

464
00:49:43,580 --> 00:49:49,740
is this software catalog able to hold information about all those components that you've written in

465
00:49:49,740 --> 00:49:58,620
your um in your organization over the years it can also link them together with linkages and draw that

466
00:49:58,620 --> 00:50:05,100
as a graph ah right right okay so with github you don't get that right you can have a look at a

467
00:50:05,100 --> 00:50:10,540
project but to understand how it relates to other things around it whether those are resources like

468
00:50:10,540 --> 00:50:16,700
databases whether they're groups of people uh or individuals or whether they're other components

469
00:50:16,700 --> 00:50:24,940
and other apis you don't see any of that you just okay so so how how is that achieved in backstage

470
00:50:25,660 --> 00:50:31,020
again through the through the yaml stanza there's the ability to link a component to other components

471
00:50:31,020 --> 00:50:37,660
so you can say okay this component delivers this api and so oh well i've got an api document about

472
00:50:37,660 --> 00:50:44,300
that so those two must be linked together so in the gui you'll see a graph which shows you okay

473
00:50:44,860 --> 00:50:54,700
this software solution offers this api it's written by this group of people it belongs to this system

474
00:50:54,700 --> 00:51:02,780
which also has these other microservices in it oh that so so it actually can so it backstage can do a

475
00:51:02,780 --> 00:51:09,820
lot of that on its own if the the things you're linking to are in backstage right so okay that makes

476
00:51:09,820 --> 00:51:14,700
a lot whereas if you had a project that's not in backstage let's say let's say you've got

477
00:51:14,700 --> 00:51:19,340
some mainframe system that you're using that's for whatever reason doesn't have a backstage project

478
00:51:19,340 --> 00:51:26,060
yet like i'm assuming you would have to like manually add that relationship in there yeah and

479
00:51:26,060 --> 00:51:32,780
it's very useful to do that i i did an exercise recently where i wanted to try and explain all the

480
00:51:32,780 --> 00:51:37,740
different componentry that comes with the tanzo application platform because there are lots of

481
00:51:37,740 --> 00:51:44,540
different running containers when you build the platform out and you have the um application engine

482
00:51:44,540 --> 00:51:51,100
i guess you would call it running in the in the background you've got lots of different pods

483
00:51:51,100 --> 00:51:56,940
running lots of different stuff so i wanted to show how all that stuff relates together and the

484
00:51:56,940 --> 00:52:03,580
fact that it's also built atop the kubernetes api and you can do that with a backstage catalog so i

485
00:52:03,580 --> 00:52:09,900
cataloged the tanzo application platform as a backstage catalog and it works that makes sense so you have

486
00:52:09,900 --> 00:52:15,100
a good you i mean i mean another word you can use is like you can see the dependencies between everything

487
00:52:15,100 --> 00:52:21,020
or yeah what's the positive version of dependency the support like dependency is kind of like a

488
00:52:21,020 --> 00:52:26,860
pejorative word in software development but you know my children are dependent on me and not in a bad way

489
00:52:26,860 --> 00:52:32,460
and and so like there's there's the the support the support and see the help you be awesome and see uh that

490
00:52:32,460 --> 00:52:39,980
that that you have uh yeah the the reliances and alliances um so that is something that like again

491
00:52:39,980 --> 00:52:47,260
is you know whatever there's always like the data has to be there but it is more or less something that

492
00:52:47,260 --> 00:52:53,420
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

493
00:52:53,420 --> 00:52:57,020
saying so that's what's in backstage you're like no no there's all these other things so what are the other

494
00:52:57,020 --> 00:53:06,220
things that my my summary there was missing uh another really good um feature that you can uh add to your

495
00:53:06,220 --> 00:53:12,220
backstage is the idea of having a software template so earlier we were talking about spring in some

496
00:53:12,220 --> 00:53:19,820
details so say you wanted to ensure that when developers start a new spring project they add the

497
00:53:19,820 --> 00:53:27,580
actuators so that you can then go and introspect what's happening inside that particular uh spring

498
00:53:27,580 --> 00:53:34,540
application at runtime then you could create a template that says okay for a spring project

499
00:53:34,540 --> 00:53:40,460
you start with this version of spring and you add these um different um

500
00:53:42,540 --> 00:53:47,900
what do they call them packages to uh to that spring project and it's already built for you so you can

501
00:53:47,900 --> 00:53:53,900
then take that template and all those things have already been brought together and integrated and

502
00:53:53,900 --> 00:53:58,300
you can hit the ground running just start working on your code you're not having to worry about

503
00:53:58,940 --> 00:54:03,900
oh i need to bring in this library and i need to bring in that resource and i need to do

504
00:54:04,780 --> 00:54:09,900
whatever you need to do in your organization to get started with a component you can turn all

505
00:54:09,900 --> 00:54:15,740
that into a template so that or multiple you know many many templates so you can have a template that

506
00:54:15,740 --> 00:54:21,180
can help you get started with practically any project that you want to and we've seen these used in

507
00:54:22,060 --> 00:54:30,620
incredibly inventive ways we've we've seen for example inside vmware folks creating templates to

508
00:54:30,620 --> 00:54:38,940
install tanzu application platform or to um do um machine learning and machine learning operations where

509
00:54:38,940 --> 00:54:45,340
you know you're building out certain items of a pipeline in a machine learning task for example so we've seen

510
00:54:45,740 --> 00:54:52,060
all sorts of all sorts of really inventive ways alongside the regular kind of okay i'm starting

511
00:54:52,060 --> 00:54:58,940
a spring boot rest project you know let's make sure i've got spring boot web and i've got um actuators

512
00:54:58,940 --> 00:55:06,220
and i've got you know database um uh ready to go all in the same template so they can be used for some

513
00:55:06,220 --> 00:55:13,500
very inventive things so so okay that sounds cool and when you say template like

514
00:55:15,980 --> 00:55:22,700
like across what does that mean it actually does like because like you know java is pretty widespread

515
00:55:22,700 --> 00:55:27,980
but let's say like i don't know i'm making an erlang project like does backstage ship with like

516
00:55:28,620 --> 00:55:35,420
now you can have an erlang project or like like is the template just specifying like is it just telling

517
00:55:35,420 --> 00:55:40,780
the developers they should have these things or does it actually like a new developer comes in and it

518
00:55:40,780 --> 00:55:46,780
completely just sets up their development environment and all the files and stuff that they need like

519
00:55:46,780 --> 00:55:54,220
what does the template actually do the template and describes the um coding project in real terms so in in

520
00:55:54,220 --> 00:56:00,140
terms of the the files and the folder structures needed for that particular project to be able to open into

521
00:56:00,140 --> 00:56:07,180
an ide for example they could all be there inside the template plus some customization options so that

522
00:56:07,180 --> 00:56:14,540
the templating system that you get along with backstage allows you to again specify some yaml that will

523
00:56:14,540 --> 00:56:23,980
allow you to customize the project that is spat out by the project generator inside

524
00:56:24,220 --> 00:56:30,380
the backstage system okay okay you can customize you know the name of the project some simple things

525
00:56:30,380 --> 00:56:35,740
of course uh you know the name of the project or which type of database you're going to use or maybe

526
00:56:35,740 --> 00:56:44,460
um uh more complicated things uh you know maybe you want to set up a very specific uh i don't know

527
00:56:45,420 --> 00:56:50,700
static final stuff that should be available in each of these projects right you can do all that

528
00:56:51,340 --> 00:56:55,500
so so there's the uh what what did you call the thing in backstage that does this the project

529
00:56:56,140 --> 00:57:02,780
they they call it software templates yeah but it's got an engine behind it that can customize those

530
00:57:02,780 --> 00:57:09,180
templates based on instructions that you put into your into your templated yaml file so so what you would

531
00:57:09,180 --> 00:57:14,780
be doing again in our and then maybe maybe we'll wrap up part one and then if you'll deign to do it

532
00:57:14,780 --> 00:57:19,580
we'll have a part two where we talk about like how you like install and run all this stuff because we

533
00:57:19,580 --> 00:57:24,700
haven't even gotten to the the part that i'm like a little confused about is like you you run this on

534
00:57:24,700 --> 00:57:29,980
kubernetes yes no or what's the relate you know what's the relation to the kubernetes world there's a

535
00:57:29,980 --> 00:57:35,740
whole other realm of backstagery that i think would be fun to talk about but so coming back uh because

536
00:57:35,740 --> 00:57:42,940
you know this is the thing that we've learned working for pivotal and vmware is the uh the ability to run

537
00:57:42,940 --> 00:57:50,060
your magic infrastructure is sometimes 70 of what's valuable and update it never mind the actual

538
00:57:50,060 --> 00:57:54,940
development stuff but uh i just made up some number there that was you know instead of saying

539
00:57:54,940 --> 00:58:00,540
80 all the time i say 70 have you ever noticed that because that whole that whole like 60 40 80 20

540
00:58:00,540 --> 00:58:06,940
what is it the patro principle i'm just like that ratio ratio there you go so just go down to 70 30

541
00:58:06,940 --> 00:58:12,140
and you can just be sloppy without sounding like you're sloppy because it's like oh you're right

542
00:58:12,140 --> 00:58:17,820
everything occurs 80 20 in the world just like all those smooth curves on charts that i see but anyhow uh

543
00:58:18,700 --> 00:58:24,940
so you have the the the the the project template generator thing which is in in backstage and so what

544
00:58:24,940 --> 00:58:30,540
the outcome you would want to achieve with that is across your three things of login ledger and transfer

545
00:58:30,540 --> 00:58:39,100
um you would be saying i am going to specify what each of these projects looks like what the directory

546
00:58:39,100 --> 00:58:46,860
structure looks like the files that they start with like the you don't have to learn what the project

547
00:58:46,860 --> 00:58:52,700
layout looks like and what the the what components they use if they all started from the same template

548
00:58:52,700 --> 00:59:02,540
because yes whenever we whenever we started to go on it's more than that though it's also codifying your

549
00:59:02,540 --> 00:59:10,540
best practices yeah so if you're in an organization like a bank and you know that you need to include

550
00:59:10,540 --> 00:59:17,580
a particular library for security reasons or whatever it might be you can add that to the template you can

551
00:59:17,580 --> 00:59:24,700
create a golden path for developers so when they're starting a new project they will use that template

552
00:59:24,700 --> 00:59:32,300
and will automatically benefit from you codifying in all those things that they shouldn't forget right

553
00:59:32,300 --> 00:59:38,300
don't forget to do this don't forget to do that right right right that's the that's the beauty of it

554
00:59:38,300 --> 00:59:45,420
it's codifying those best practices into the template that gives you that ability to say this is how we

555
00:59:45,420 --> 00:59:53,100
write software here right right and so it's not it's it's not only not only a a directory structure and

556
00:59:53,100 --> 00:59:58,220
copying files around but it's saying which versions of things to use or as as you're kind of getting

557
00:59:58,220 --> 01:00:04,140
to to use something right like yes like you need to use this thing or for whatever right like you need

558
01:00:04,140 --> 01:00:08,460
to have for the login you should have passkey support right like you've got to have that in there now

559
01:00:09,340 --> 01:00:16,780
now does that like get enforced or does it just establish this metadata for you and then when you

560
01:00:16,780 --> 01:00:23,100
go to like your uh your build automation thing your build automation thing has to actually pay attention

561
01:00:23,100 --> 01:00:31,820
to that metadata and and use it no it's not enforced as such so so in our example from earlier the the

562
01:00:31,820 --> 01:00:40,700
ledger and the uh transfer and you know their existing components already written the templates don't really

563
01:00:41,500 --> 01:00:46,380
help you with that at all so it's for future stuff you know the next thing that i'm going to write is

564
01:00:46,380 --> 01:00:54,460
going to be well templated but it can you know it can and would include all the stuff that you would need

565
01:00:54,460 --> 01:01:01,180
to get started in a good way and possibly to get started with backstage in a good way so for example

566
01:01:01,180 --> 01:01:06,700
one of the things that you might codify into the template might be that it should have an api

567
01:01:06,700 --> 01:01:13,660
description in open api language so that when it goes through a supply chain and ends up in production

568
01:01:13,660 --> 01:01:20,380
you've still got the ability to understand what the api is for that thing using the built-in api viewer

569
01:01:20,380 --> 01:01:27,740
that's in backstage that understands open api for example yeah okay that makes sense well good i i think

570
01:01:27,740 --> 01:01:32,380
so do you think there's anything else we should mention at this kind of like like i i would call

571
01:01:32,380 --> 01:01:39,980
this part the uh what backstage does out of the box and almost and also like how it wants you to think

572
01:01:39,980 --> 01:01:45,580
like there's a certain like to use a jokey phrase for there's a certain like lifestyle that backstage

573
01:01:45,580 --> 01:01:50,860
wants its developers to to be following right in the same way that you could say you know if you're

574
01:01:50,860 --> 01:01:56,140
using we take we take these things for granted but you know if you're using version control your version

575
01:01:56,140 --> 01:02:01,260
control system has a kind of way it wants you to think and a lifestyle that it wants you to follow

576
01:02:01,260 --> 01:02:10,220
right and so like there's a kind of like philosophy of how you do multiple team multi-project

577
01:02:10,220 --> 01:02:14,700
software inside an organization that backstage is kind of like codifying if you will and i think i

578
01:02:14,700 --> 01:02:20,300
think we've kind of gone over that and then we have the basics of of the uh what it does out of the

579
01:02:20,300 --> 01:02:27,180
box you know aside from talking more about plugins or the whole like how you install and the runtime

580
01:02:27,180 --> 01:02:31,260
environment of backstage like is there anything else you think we're missing that's vital

581
01:02:33,260 --> 01:02:39,580
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

582
01:02:39,580 --> 01:02:47,420
talked quite a lot about the sort of core parts of it so yeah i'm very perfect all right well great

583
01:02:47,420 --> 01:02:53,900
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

584
01:02:53,900 --> 01:02:58,460
always reminded of that when i learn something and and then and then the downside of that is like if to

585
01:02:58,460 --> 01:03:02,380
be reminded that i like to learn things would indicate i don't learn things frequently enough

586
01:03:02,380 --> 01:03:10,220
so anyways well can i i think one thing i would add is that if folks want to have a a very sort of

587
01:03:10,220 --> 01:03:19,020
basic taste of what backstage is all about then go to demo.backstage.io because you can instantly see

588
01:03:19,020 --> 01:03:24,620
a very basic version of backstage and have a play around with this with the software catalog there's

589
01:03:24,620 --> 01:03:30,300
already some software added to the catalog you can have a look around the apis that are included with

590
01:03:30,300 --> 01:03:36,860
that and you can get a a feel for the tech docs as well and what they can also add to the experience

591
01:03:36,860 --> 01:03:43,740
so go and have a look at that um and and play about play about with the search as well so we didn't

592
01:03:43,740 --> 01:03:49,420
even mention search but there's a very good search facility in backstage that can search through all

593
01:03:49,420 --> 01:03:55,100
that componentry all those tech docs all those apis for you and surface things up that you're that you're

594
01:03:55,100 --> 01:04:00,140
interested in yeah and and i i guess it is worth detailing a little bit before we wrap up like the

595
01:04:00,140 --> 01:04:08,140
the uh like like a major outcome that backstage wants to deliver is discovery right like yeah browsing and

596
01:04:08,140 --> 01:04:14,940
discovering something which i think i think it's easy not not easy but like you have to know that

597
01:04:14,940 --> 01:04:19,580
that's a problem because if you're just like doing your own development on the public internet like

598
01:04:19,580 --> 01:04:25,820
that's solved like you don't really you can find what you need like through a combination of

599
01:04:25,820 --> 01:04:32,140
google stack exchange and searching on github like it's all there whereas inside a large organization

600
01:04:32,140 --> 01:04:40,060
it is not oh right like like it's it's very hard to just find anything inside of a large organization

601
01:04:40,060 --> 01:04:46,620
uh and so just like having good search and solving that problem is tremendous right like that almost

602
01:04:46,620 --> 01:04:53,420
would be enough uh oh and in and in productivity terms you know the time wasted looking for stuff

603
01:04:53,980 --> 01:04:58,620
is astonishing you know quite often especially if you're trying to pull together

604
01:04:59,500 --> 01:05:05,100
you know api documentation from all sorts of different sources across different business units

605
01:05:05,100 --> 01:05:11,260
or whatever it can be an absolute nightmare so i i really do appreciate what what's being attempted

606
01:05:11,260 --> 01:05:17,740
with backstage to solve many of those problems well if you've listened this far and you don't

607
01:05:17,740 --> 01:05:22,780
subscribe to our podcast tanzu talk you'll definitely be interested in it so you should go to tanzu

608
01:05:22,780 --> 01:05:29,100
talk.com or search around in your uh your podcast app what do they call it in the linux world

609
01:05:29,100 --> 01:05:36,380
what do they call a podcast do they call it a catcher still i'm pretty sure it's just a podcast

610
01:05:36,940 --> 01:05:42,460
uh i'm not sure if no like the actual app that you use that like downloads it for you so you can listen

611
01:05:42,460 --> 01:05:48,460
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

612
01:05:48,460 --> 01:05:54,940
addition to the gnome circle folks if the gnome circle folks are out there uh maybe maybe a podcasting

613
01:05:54,940 --> 01:06:01,020
out would be a good addition i don't know if there is one well there we are just discovering things

614
01:06:01,020 --> 01:06:06,300
right and left bringing value also we uh we live stream we live stream most of these if you subscribe

615
01:06:06,300 --> 01:06:10,540
to our vmware tanzu uh youtube channel and the videos there as well but you can just go to tanzu

616
01:06:10,540 --> 01:06:16,060
talk.com and look this up and find it and then hopefully we'll get around to it parts two and maybe even

617
01:06:16,060 --> 01:06:20,940
three of what's in backstage because i think it would be it'd be fascinating to talk about the world of

618
01:06:20,940 --> 01:06:27,980
plugins not only what they are and how they work and how you do them but also like how they play into

619
01:06:27,980 --> 01:06:33,500
the whole ecosystem of stuff right and in that conversation be fun to talk about like how backstage

620
01:06:33,500 --> 01:06:39,260
fits into like the tanzu application platform and like where the lines are and how it's used and things

621
01:06:39,260 --> 01:06:43,900
like that but then also like i keep alluding to it also be good to know like so if you're a backstage

622
01:06:43,900 --> 01:06:49,980
admin what do you do like what what what does that look like and where does it run and then uh so

623
01:06:49,980 --> 01:06:55,420
forth and so on so hopefully we'll get around to that but uh with that we'll see everyone next time bye bye
