1
00:00:00,000 --> 00:00:06,220
well people are always asking me about uh mainframe modernization and and well let me think about this

2
00:00:06,220 --> 00:00:12,580
always is that true yeah it very frequently comes up i think especially like i was i was realizing

3
00:00:12,580 --> 00:00:17,520
uh in this past year i don't know if you've experienced this but in this past year people i

4
00:00:17,520 --> 00:00:22,680
talked with for years have always been talking about like moving to the cloud and modernizing

5
00:00:22,680 --> 00:00:27,320
their stuff they really wanted to do it but i've noticed in the past year people actually have

6
00:00:27,320 --> 00:00:33,280
numbers around it like like goals and kpis they're supposed to reach which seems like it's it's uh

7
00:00:33,280 --> 00:00:38,460
it's happening more and more so you wrote a uh you wrote a blog post this is actually last year from

8
00:00:38,460 --> 00:00:44,280
may of 2022 when i was uh when i was looking over i don't know well i don't even remember what i was

9
00:00:44,280 --> 00:00:49,920
reading about legacy applications and i came across this on our blog and you had a pretty uh what i

10
00:00:49,920 --> 00:00:56,880
think is a a great in the sense that it's brief and just deep enough to make sense like

11
00:00:56,880 --> 00:01:03,480
overview of of uh i'm sure along with many people like you worked on um helping modernize uh uh you

12
00:01:03,480 --> 00:01:08,620
know a mainframe application uh and it was a good overview of a lot of the practices i've heard we

13
00:01:08,620 --> 00:01:13,680
do in swift and things like that with some uh with some nice diagrams so i thought it'd be fun to uh

14
00:01:13,680 --> 00:01:19,480
to talk to you about that why don't you introduce yourself first so i am i am fwad and i am working

15
00:01:19,480 --> 00:01:27,440
uh in tonsu r&d uh today and uh since a few months ago and before that i was working in tonsu labs

16
00:01:27,440 --> 00:01:35,680
uh in france in paris and i was involved in many engagements where we used to modernize legacy

17
00:01:35,680 --> 00:01:43,080
applications and mainframes are uh some of the kinds of application that that we we are used to

18
00:01:43,080 --> 00:01:47,580
modernize there do you see a lot of this out there like mainframe applications that people

19
00:01:47,580 --> 00:01:53,760
want to and then actually are modernizing or you know does it happen rarely so personally it started

20
00:01:53,760 --> 00:02:00,040
like uh i think i was involved in that kind of engagement like uh in 2019 like already three

21
00:02:00,040 --> 00:02:08,180
or four years ago and and at that time there was not really many mainframe uh engagements going on

22
00:02:08,180 --> 00:02:15,360
but since a couple of years it's i've seen in labs uh uh that there are more and more customers asking

23
00:02:15,360 --> 00:02:22,560
to to to dig into that and to help them modernizing the mainframe so give a give us an overview of like

24
00:02:22,560 --> 00:02:29,240
um both both the example as you say engagement here but like i think it's pretty representative of what

25
00:02:29,240 --> 00:02:34,940
what you see let's call it the business motivations for modernizing a mainframe you actually cover it

26
00:02:34,940 --> 00:02:39,860
yeah pretty well right from the beginning like it's a 30 year old system with 12 000 programs that's

27
00:02:39,860 --> 00:02:44,520
relied on by 3 million users you get into like what the business motivations for doing it are and i

28
00:02:44,520 --> 00:02:51,440
think i think going over this is always very important because like you know for as much as mainframe

29
00:02:51,440 --> 00:02:57,120
people used to call us distributed people might sort of poke fun at mainframes and have them be old

30
00:02:57,120 --> 00:03:03,660
like the thing about a mainframe that's been running 30 years is it works right and it's it's worked very

31
00:03:03,660 --> 00:03:09,680
well for 30 years to survive through all of that when companies have mainframes they usually work fine

32
00:03:09,680 --> 00:03:16,900
uh but but for for this example one of the main issues that the customer had was the that they

33
00:03:16,900 --> 00:03:24,240
the lack of knowledge to maintain and to make the mainframe so that was one of the key key cornerstone

34
00:03:24,240 --> 00:03:31,200
basically that they they they wanted to get rid of to be able to have people who who developers new new

35
00:03:31,200 --> 00:03:37,840
teams that uh who could handle the business that is implemented in the mainframe but using modern modern

36
00:03:37,840 --> 00:03:45,840
technologies uh so that was that was one one of the aspects and and uh the second big one was uh to

37
00:03:45,840 --> 00:03:52,560
reduce infrastructure costs basically because having a mainframe processors running cost them millions of

38
00:03:52,560 --> 00:03:59,920
euros uh and and being able just to move some transactions that were running uh into the mainframe

39
00:04:00,720 --> 00:04:07,040
into new application would make them save a lot of money so they wanted to start to do that the goal

40
00:04:07,040 --> 00:04:13,040
was not to get rid of the whole mainframe like uh uh as fast as possible it was more like to start

41
00:04:13,840 --> 00:04:20,800
extract few a few things step by step and and being able to do like to have quick wins and a quick

42
00:04:20,800 --> 00:04:25,840
money savings by just doing that i wrote this little booklet last year with with our colleague mark

43
00:04:25,840 --> 00:04:32,320
zottner about uh you know about the swift method and and like more broadly like uh we called it the

44
00:04:32,320 --> 00:04:38,720
legacy trap that was our clever name for but more broadly like from a for lack of a better phrase a

45
00:04:38,720 --> 00:04:43,040
business perspective like what the deal with modernization is in doing it like we went over

46
00:04:43,040 --> 00:04:49,120
like what makes software legacy software and i mean you you i think you hit on one of the to kind of

47
00:04:49,120 --> 00:04:54,320
summarize the two of them like with mainframes especially there's the like you it's you've forgotten

48
00:04:54,320 --> 00:05:00,720
about it like you lack knowledge about how to do it and you know i think i think the how that manifests

49
00:05:00,720 --> 00:05:07,760
itself and like something that the organization cares about is that you can no longer really change or add

50
00:05:07,760 --> 00:05:13,920
to the functionality of it or and and sometimes it's also performance right like if you've forgotten how

51
00:05:13,920 --> 00:05:18,880
a system works sometimes when you have different performance needs like you have to serve a whole

52
00:05:18,880 --> 00:05:24,720
bunch of different people or you have to do it in a different medium like you have to go from a desktop

53
00:05:24,720 --> 00:05:30,480
app to like a mobile app or something like it's kind of no longer fit but i think i would imagine the one

54
00:05:30,480 --> 00:05:35,360
that people encounter a lot more is like you just have different features that you want to add and

55
00:05:36,000 --> 00:05:42,960
it's kind of not possible right and because because no one really remembers not only like in this case

56
00:05:42,960 --> 00:05:48,640
like how to program in cobalt and also not only just like how the programming works but like one that's

57
00:05:48,640 --> 00:05:55,600
especially like terrible is like no one remembers how to test it yes to make sure it doesn't break things

58
00:05:55,600 --> 00:06:03,520
which is terrible yeah that's true so so uh they also have to rely on external companies to to maintain

59
00:06:04,320 --> 00:06:10,880
this this knowledge and and that's a big a big danger for for such companies like they move the

60
00:06:10,880 --> 00:06:15,120
the business loader they externalize the externalize that business knowledge that knowledge to external

61
00:06:15,120 --> 00:06:22,080
companies they don't have much more control about on it rather than uh uh in the past they were able to

62
00:06:22,080 --> 00:06:28,480
control the their business inside the company so so that's why that's one issue for for this company

63
00:06:28,480 --> 00:06:33,840
and and uh i saw another thing that uh then another issue that they have is the development life cycle

64
00:06:33,840 --> 00:06:40,880
like you mentioned uh the capability to to deploy new features or to fix existing features uh also takes a

65
00:06:40,880 --> 00:06:48,400
lot of time uh just to deploy new things uh it's a they have heavy process they had heavy processes they

66
00:06:48,400 --> 00:06:55,040
had to set up downtime periods like to to stop the user the users using the application to be able to

67
00:06:55,040 --> 00:06:59,840
deploy your simple feature that was very painful for them their tech debt finally caught up with them

68
00:06:59,840 --> 00:07:04,880
so you mentioned one thing i'm interested in in hearing more about which is um and this is part of

69
00:07:04,880 --> 00:07:10,480
like the the the method that you know tonsu labs and pivotal labs people have developed not only in

70
00:07:10,480 --> 00:07:17,120
legacy modernization but just in apps and platform engineering like in general which is like starting

71
00:07:17,120 --> 00:07:22,080
small basically is is the way i think of it right instead of oh we're going to modernize and move

72
00:07:22,640 --> 00:07:27,760
everything on the mainframe like more so it sounds how you all started was like let's start with one

73
00:07:27,760 --> 00:07:33,840
thing let's start by just to use a word that's common like little slices and slicing away at it was like

74
00:07:33,840 --> 00:07:39,440
the the customer comfortable with that often there's just like well why wouldn't we do everything at

75
00:07:39,440 --> 00:07:46,000
once but i think there's also often like an overly ambitious business case they have to deliver on

76
00:07:46,000 --> 00:07:51,520
like if we're going to take on all this risk and like spend some money on this we need to have a big

77
00:07:51,520 --> 00:07:57,200
payoff at the end of the year whereas when we go again with this start small and slice thing we're

78
00:07:57,200 --> 00:08:04,000
kind of like saying yeah there's not going to be a big payoff for like three to 12 months did you encounter

79
00:08:04,000 --> 00:08:10,000
in this case where you kind of had to sell people on starting small and slices what what was that like

80
00:08:10,880 --> 00:08:16,640
yeah that that's usually uh hard to convince people uh companies about that customers about this but

81
00:08:17,200 --> 00:08:22,160
but in that case for example they already tried it in the past so they already tried to rewrite and

82
00:08:22,160 --> 00:08:27,760
they they and they felt the failure the the pain to do so and and that they they were not happy with

83
00:08:27,760 --> 00:08:35,120
the result so that's why they wanted like uh to experiment our our approach and actually before

84
00:08:35,120 --> 00:08:39,280
before working on the mainframe we had past engagements with them where they trusted us yeah

85
00:08:39,280 --> 00:08:45,760
basically we built a trust relationship with them and and that's why they involve us in try helping

86
00:08:45,760 --> 00:08:51,840
them modernizing the mainframe it was a kind of some kind of challenge right like uh okay uh prove us

87
00:08:51,840 --> 00:08:57,760
that you can use your practices to to start modernize you something in the in the mainframe and see and

88
00:08:57,760 --> 00:09:04,080
see and check if it's better than what we did in the past or is it worse or oh yeah and then to can

89
00:09:04,720 --> 00:09:11,600
to kind of beat some comparison charts between uh uh our approach i guess this is what like you know

90
00:09:12,400 --> 00:09:19,120
labs thinking would say is like well let's let's do a small project or a slice to see if we can also do

91
00:09:19,120 --> 00:09:25,360
this with mainframe stuff right let's prove that that we can do this out uh in kind of like uh it's

92
00:09:25,360 --> 00:09:31,040
not risk-free but a lower risk way when you're looking at the application like how do you start with

93
00:09:31,040 --> 00:09:37,200
that like how do you how do you start like comprehending what this application is kind of like figuring out

94
00:09:37,200 --> 00:09:43,760
what little slice to do kind of kind of walk us through that process yeah sure um so basically we

95
00:09:43,760 --> 00:09:48,640
we we use one of the tools in our swift uh swift uh swift box swift methodology box

96
00:09:49,280 --> 00:09:56,800
that is called event storming basically and and what we do uh is a we run a workshop with uh

97
00:09:57,200 --> 00:10:02,880
uh every everybody uh all the people that are who are involved in the mainframe

98
00:10:03,520 --> 00:10:09,520
who have knowledge on the mainframes and and that can uh imply having people that are

99
00:10:10,400 --> 00:10:15,680
at a high level of the hierarchy of the company who often uh were developers in the company and know

100
00:10:16,480 --> 00:10:19,920
and know about the mainframes but now they've changed their position there are no more developers and

101
00:10:19,920 --> 00:10:23,920
they and are actively promoted and they and they have but they have knowledge of this so

102
00:10:23,920 --> 00:10:29,840
we have to involve those people in in this workshop uh until the develop and also the developers and the

103
00:10:29,840 --> 00:10:38,400
testers we have to gather everybody uh in the same room and and basically build a visual representation of

104
00:10:39,120 --> 00:10:46,480
all the of the events that are flowing through the system like basically like uh uh everyone brings

105
00:10:46,480 --> 00:10:52,720
bringing uh his or her piece of knowledge uh regarding all the things work in the system in the mainframe

106
00:10:53,360 --> 00:10:59,600
and we have to to merge all of this uh uh so it's a sticky notes exercise basically we have gathered in a

107
00:10:59,600 --> 00:11:04,560
piece in the room and we put stickies and people put stickies and then we have to merge all of this to

108
00:11:04,560 --> 00:11:14,000
make sense of all the the flows that are uh that we have in the system and and from them and from there we

109
00:11:14,560 --> 00:11:22,800
we can we start to to draw boundaries like uh identify subdomains like uh the comp the like uh okay this

110
00:11:22,800 --> 00:11:30,000
makes sense to gather those events together and to call that uh i don't know like the the accountability

111
00:11:30,000 --> 00:11:38,880
subdomain and together and and and build that kind of uh um identify that kind of subdomains and and

112
00:11:39,600 --> 00:11:46,640
from there we can also we also uh we can also have a an exercise where we with the uh where the people

113
00:11:46,640 --> 00:11:53,920
in the room can uh set the value uh of each of these demands right right sort of like the business

114
00:11:53,920 --> 00:12:00,880
value like how much does this matter exactly how important is it exactly and also try to identify

115
00:12:00,880 --> 00:12:05,520
the pain points where where they have the most the pain points maybe we we would like to start there

116
00:12:05,520 --> 00:12:11,200
or not depending on the context because uh depending on where you are in your mainframe modernization

117
00:12:11,200 --> 00:12:15,760
modernization journey maybe you want to start with something that is small not too hard to implement

118
00:12:15,760 --> 00:12:22,160
to validate the the process that you have in place but it has some some business rules so so the selection

119
00:12:22,160 --> 00:12:28,400
itself depends i would say depends on the context but the tools uh that we are using as are basically

120
00:12:28,400 --> 00:12:34,400
the same put some values on the thing uh identify the complexity identify the the business value and try to

121
00:12:34,400 --> 00:12:38,320
and prioritize based on the context where you are working what what are you looking what what is your

122
00:12:38,320 --> 00:12:46,240
goal with your modernization and then right select the appropriate uh let's say context or subdomain

123
00:12:46,240 --> 00:12:54,160
context and then and then from there identify uh user journeys and and the slices that we could start with

124
00:12:54,960 --> 00:13:04,240
and so so that gives you a list of just as you're saying like here are technically feasible and important

125
00:13:04,240 --> 00:13:10,160
enough like components we could work on modernizing because again that as you're saying the goal is to

126
00:13:10,160 --> 00:13:16,160
let's let's find something we can modernize that takes i mean i think the standard is like 12 weeks or

127
00:13:16,160 --> 00:13:22,560
whatever but that takes a small amount of time yes uh so that we can as you know just to summarize again that that

128
00:13:23,440 --> 00:13:30,480
we can figure out if we can do this right and at the same time actually do some of it and and also like

129
00:13:30,480 --> 00:13:35,920
learn how it's done i'm interested to like test out some of my theories uh you know with you about

130
00:13:35,920 --> 00:13:41,600
that is i feel like that exercise that you went over the kind of like you know the event storming

131
00:13:41,600 --> 00:13:46,800
doing like the the finding the domains all of that workshopping stuff like well i mean there's

132
00:13:47,840 --> 00:13:53,920
not not an assumption but the kind of the unstated thing in doing that exercise is that it doesn't

133
00:13:53,920 --> 00:14:01,600
that that that system view doesn't exist right like that like like while while each of those individuals

134
00:14:01,600 --> 00:14:08,240
might like have their own view of what their part of the system does that very often especially with

135
00:14:08,240 --> 00:14:15,440
like in this case like a 30 year old application um no one really knows the whole let alone everyone

136
00:14:15,440 --> 00:14:21,440
knowing the whole and like what the handoffs are between them um so i imagine that's a huge part

137
00:14:21,440 --> 00:14:29,120
of it it's just like as as mark will call it it's like architectural uh archaeology yes like discovering

138
00:14:29,120 --> 00:14:34,320
the system exactly yeah that's a huge outcome of the of this workshop indeed like uh having

139
00:14:35,040 --> 00:14:42,640
this view that probably nobody's at the beginning of the workshop had in mind and and align also all the

140
00:14:42,640 --> 00:14:49,760
stakeholders on the on this knowledge so of course the what we get at the end is not exhaustive like

141
00:14:49,760 --> 00:14:56,400
we sure you know we don't go deep very deep in the details of every demand but at least big picture

142
00:14:56,400 --> 00:15:02,400
everyone has a view of the big picture and that is uh that is very i'd say people when they they after

143
00:15:02,400 --> 00:15:08,240
this this workshop they felt like wow i understand what i'm working on now like yeah well i didn't

144
00:15:08,240 --> 00:15:14,320
imagine that there was so much complexity in this part oh like uh there are many uh that cannot we had a

145
00:15:14,320 --> 00:15:19,680
a lot of feedback like this like after the it must it must feel nice on both sides to actually like

146
00:15:19,680 --> 00:15:26,160
i mean you know in our trade learning is always fun and so like like like to have helped you know the

147
00:15:26,160 --> 00:15:30,240
the group as a whole to like have learned some new things especially about something you're so close

148
00:15:30,240 --> 00:15:34,960
to like your own systems right and you know the the other thing that like i think and and you know in

149
00:15:34,960 --> 00:15:41,200
general this this methodology i've i i shouldn't say seen because i just record things and make slides

150
00:15:41,200 --> 00:15:45,840
but like you know i've i've i've heard secondhand from labs people that whether it's new applications

151
00:15:45,840 --> 00:15:50,800
or existing ones right like the other i think the other thing that's valuable about it and and to your

152
00:15:50,800 --> 00:15:56,000
point of not to your point but like the positive side about of it not being too detailed is that

153
00:15:56,720 --> 00:16:02,880
that's by design because the purpose is also to capture like again to use the phrase like the

154
00:16:02,880 --> 00:16:07,440
the business flow of it like the purpose of this application right which is often like

155
00:16:08,240 --> 00:16:13,920
not fully reflected in all the technical systems like you know and and i think by by doing that

156
00:16:13,920 --> 00:16:17,920
event storming where there's like one event that you trace through the entire system like

157
00:16:17,920 --> 00:16:24,240
i don't know just to pick something like uh you know authorizing that something happens whether

158
00:16:24,240 --> 00:16:29,360
you're authorizing a prescription or authorizing like some forms being filled out like that whole

159
00:16:29,360 --> 00:16:35,920
authorization thing is an event that goes through the whole system and like i always joke that like

160
00:16:35,920 --> 00:16:41,360
everyone most people know the boxes but it's those arrows that people lose out on like like the

161
00:16:41,360 --> 00:16:47,120
connection between the two of them is like where a lot of lost uh knowledge uh typically is so you get

162
00:16:47,120 --> 00:16:52,960
the slices in front of you and so like what uh like like what slice do y'all pick like how what do you

163
00:16:52,960 --> 00:16:59,280
start with as you document in the uh in the blog post in the in this example we started by uh uh using

164
00:16:59,280 --> 00:17:08,080
like uh by working on a a slice uh a simple slice basically to to to be able to build something very

165
00:17:08,080 --> 00:17:15,680
very fast and see if we could deploy it in production uh very quick and evaluate um and identify all the

166
00:17:15,680 --> 00:17:22,080
trouble that we could have uh as fast as as quick as possible instead of waiting to build something

167
00:17:22,080 --> 00:17:30,480
more more more much more ready for the for the users the goal uh so so basically we we use the read

168
00:17:30,480 --> 00:17:35,920
read transaction written actually even before that sorry even before that what we did is we wanted to

169
00:17:36,560 --> 00:17:44,960
to start uh uh experimenting on what we call strangling the the mainframe legacy system to be to be sure

170
00:17:44,960 --> 00:17:54,160
that um so the strangling uh an application is one pattern uh where we try to basically to capture the

171
00:17:54,160 --> 00:17:59,520
calls like the requests that are done to the legacy system we try to capture them in our new the new

172
00:17:59,520 --> 00:18:06,000
system that we want to build to see if we can then uh if we could then uh rewrite them like uh modernize

173
00:18:06,000 --> 00:18:12,720
them in our right system and so basically it's kind of uh adding a proxy a gateway between yeah legacy

174
00:18:12,720 --> 00:18:19,440
system and our system uh so we we had to start with that because because there were a lot of uncertainty

175
00:18:19,440 --> 00:18:25,920
about the architecture uh at our customers because our uh so if you if you look into the article there was

176
00:18:25,920 --> 00:18:30,800
this schema where we have a like a front end a system and then the back end system and then the bus

177
00:18:31,360 --> 00:18:36,560
that that redirects the calls from the back end to the mainframe and we want i don't know if you

178
00:18:36,560 --> 00:18:44,000
remember that part and we wanted to to basically to integrate a proxy gateway uh between the bus system

179
00:18:44,000 --> 00:18:49,600
and the mainframe basically like uh uh we wanted to see if we could capture the calls from the bus to our

180
00:18:49,600 --> 00:18:56,080
gateway and then redirect the the calls coming to our gateway to the bus again that would call

181
00:18:56,080 --> 00:19:02,400
the mainframe just basically to see if we could capture things there and yeah i mean it's essentially

182
00:19:02,400 --> 00:19:07,600
a uh like a yeah i guess you could call it a person in the middle right like exactly you just add a layer

183
00:19:07,600 --> 00:19:13,840
there and then at that point well i guess one like you experiment with like we can actually connect to a

184
00:19:13,840 --> 00:19:19,440
mainframe and just be a pipe right exactly and and just getting to that point with authorization and

185
00:19:19,440 --> 00:19:23,760
figuring out how to do that like and making sure you have the right character and coding and all that

186
00:19:23,760 --> 00:19:31,520
stuff is probably plenty of work basically to do quote unquote nothing right exactly and it is very

187
00:19:31,520 --> 00:19:37,200
important also to it was very important to do it first because uh because we realized that it failed

188
00:19:37,200 --> 00:19:43,280
basically we were not able we were able to build the gateway and to to think but but the thing is that

189
00:19:44,000 --> 00:19:52,080
the bus the bus uh configuration was was maintained by another team uh all right yeah we didn't have the

190
00:19:52,080 --> 00:19:57,520
the bandwidth to work with us basically to to configure things to road direct to our gateway because

191
00:19:58,160 --> 00:20:04,240
um if they had to do that we would have to write like specification and it would take six months to

192
00:20:04,240 --> 00:20:12,160
implement this just to reconfigure the bus uh to so so that was a uh a very important experimentation to

193
00:20:12,160 --> 00:20:18,000
have to to validate that to be sure that we could not do that so uh and it forced us to pivot and to

194
00:20:18,000 --> 00:20:24,160
and to find another way to to stronger the mainframe and basically we uh i think i explained it in the

195
00:20:24,160 --> 00:20:32,400
article basically we there there was a ldap in this architecture that that is used to to to uh by the

196
00:20:32,400 --> 00:20:40,960
backend to to know where uh to know the routes that can to call on the on the bus when they want to

197
00:20:40,960 --> 00:20:48,160
call a mainframe transaction so we changed these routes to rather yeah let's get it to to a new uh to our

198
00:20:48,160 --> 00:20:53,520
system let's say to simply yeah it was it was fortunate that that but the that bus was in place right like

199
00:20:53,520 --> 00:21:00,000
that that that was kind of already a uh uh uh sort of already as you're saying a proxy or a gateway or

200
00:21:00,000 --> 00:21:04,160
whatever that you could have been so we were lucky that's why the context where you are modernizing

201
00:21:04,160 --> 00:21:08,480
the application is very important because yeah something that works in one context might not work

202
00:21:09,120 --> 00:21:15,200
in another one and uh and uh yeah we don't try to come with uh at labs at least we don't try to come

203
00:21:15,200 --> 00:21:22,880
with already keyed solutions like okay we're going to to do in your context and study the problems that we're going to meet

204
00:21:22,880 --> 00:21:29,840
to face by doing the things uh rather than just diagramming things so you so you start off so

205
00:21:29,840 --> 00:21:35,360
basically you're fortunate that there's a like call it an enterprise bus but a bus in place that's

206
00:21:35,360 --> 00:21:40,720
already like and and was that like was that like web sphere connected to the mainframe or like what what

207
00:21:40,720 --> 00:21:46,640
was the the bus i forget i think the bus was oracle esb and yeah the front-end and backend stuff were

208
00:21:47,280 --> 00:21:53,280
deployed on weblogic if i remember yeah yeah that would make sense good old j2ee stuff back when there

209
00:21:53,280 --> 00:21:59,600
was a two yeah and and so so essentially you put that uh you put that gateway in there we'll call it

210
00:22:00,240 --> 00:22:07,760
that is again putting it kind of sarcastically does nothing like like all it is is to make sure

211
00:22:07,760 --> 00:22:11,840
that you can have this pass through and then i imagine you know the goal of that is that as you

212
00:22:11,840 --> 00:22:17,760
have new applications or applications that that want to talk with the mainframe or existing ones you just

213
00:22:17,760 --> 00:22:23,120
shift them over to using that gateway right exactly and which should more or less be the same so what

214
00:22:23,120 --> 00:22:28,000
what's like the next step after that you get the gateway in place and then and then how do you uh how

215
00:22:28,000 --> 00:22:34,800
do you do further slicing so the next step was the next step sorry was to um to to work on the one of the

216
00:22:34,800 --> 00:22:42,240
uh one of the business transactions that was um responsible of reading information from from the uh

217
00:22:42,240 --> 00:22:50,800
mainframe databases from db2 and dl1 databases and so basically we start to we started to write

218
00:22:50,800 --> 00:22:57,680
uh a new a new microservice let's say let's call it like this because it's a fancy word that contained uh

219
00:22:58,320 --> 00:23:07,600
an endpoint to to read basically uh information from the legacy database and and so uh if i try to describe

220
00:23:07,600 --> 00:23:15,040
the flow so the front end will call the the back end that will code our getaway and our getaway will

221
00:23:15,040 --> 00:23:22,080
call our new uh yeah new endpoints and return the result to the front end instead of calling the back

222
00:23:22,080 --> 00:23:29,920
the the mainframe to our to our uh application new application the other thing that i think is worth

223
00:23:29,920 --> 00:23:36,640
pointing out or i mean you said it but calling out even more is that it was just a read-only operation

224
00:23:36,640 --> 00:23:44,400
so it's like again minimal risk right like like like most risk comes from writing or changing the data

225
00:23:44,400 --> 00:23:50,480
versus just like yeah seeing what it is is not that big of a deal yeah yeah and uh it also helped to

226
00:23:50,480 --> 00:23:55,520
build confidence within the team like uh right because we didn't have much knowledge on mainframe

227
00:23:55,520 --> 00:24:02,240
stuff and that's what to learn to have learnings because for example uh uh in the they were using

228
00:24:02,240 --> 00:24:07,440
db2 as a database but they are they were also using another database that is called dl1 which is quite

229
00:24:08,160 --> 00:24:14,720
old and it that uh uh that is a hierarchical database uh not a relational database and that uh

230
00:24:15,440 --> 00:24:21,600
there was no no tool to access the database for modern applications like to be able to read uh okay

231
00:24:21,600 --> 00:24:28,640
directly in this kind of database actually it's not really true there was one tool uh uh not open

232
00:24:28,640 --> 00:24:36,400
sourced like and and there was a uh a team who were studying the ability of this tool to to be used in

233
00:24:36,400 --> 00:24:43,920
modern application to read in this legacy database so so uh that allowed us to learn things like that even even a

234
00:24:43,920 --> 00:24:51,360
a simple a simple slice like this was very beneficial for for the team so then you know uh eventually

235
00:24:51,360 --> 00:24:56,000
you want to actually like change the data and write to it so what what how do you all get to that

236
00:24:57,040 --> 00:25:02,000
so uh so this is yeah this was the moment where we introduced this is the moment where we introduced

237
00:25:02,000 --> 00:25:07,200
a new database for our new application to give it the responsibility to be the owner of its own data let's

238
00:25:07,200 --> 00:25:15,840
say and and basically it started the same way than the read slices like we we we configured the ldap to

239
00:25:15,840 --> 00:25:23,280
route uh to the new to a new one endpoint that is responsible to write uh yeah that in the database

240
00:25:23,840 --> 00:25:33,360
and and what we did first is to um so is to to set up this new database and to and to basically to trigger

241
00:25:34,000 --> 00:25:40,240
to uh to to to parallelize the the function the fit let's say the functionality i mean by that like we

242
00:25:41,040 --> 00:25:44,880
we are saving the data in the new system but we are also saving the data in the old system we also

243
00:25:44,880 --> 00:25:49,840
calling the the all the transaction that we are rewriting in the old system so it's about it's a

244
00:25:49,840 --> 00:25:58,400
parallel right like uh we are writing in uh both in the old and the new system uh why we did that is

245
00:25:58,400 --> 00:26:04,640
because uh uh we wanted to um because there are a lot of data that are that have to be written let's say

246
00:26:05,440 --> 00:26:11,760
and uh and a lot of business rules uh in the old system that are used to to write data and we wanted

247
00:26:11,760 --> 00:26:17,120
to implement those business rules incrementally because they are uh this is the way we usually work

248
00:26:17,120 --> 00:26:25,120
we don't want to to do a big big bang rewriting uh and and so uh basically the the source of truth

249
00:26:25,120 --> 00:26:31,040
remains the old database while we build uh while we incrementally build uh implement the new the

250
00:26:31,040 --> 00:26:35,600
business rules to write that time right going back to the beginning you've got 30 years of business

251
00:26:35,600 --> 00:26:42,880
rules yes and and like and like you know who knows what they are really yes yes there we find surprises

252
00:26:42,880 --> 00:26:49,200
we have surprises when we dig into those things that are not used think that nobody knows what they

253
00:26:49,200 --> 00:26:55,840
are for and that can happen yeah yeah and and then essentially with that that uh like that comparator

254
00:26:55,840 --> 00:27:03,200
pattern you have i mean well you are like testing in production which is always a scary phrase to use

255
00:27:03,200 --> 00:27:07,920
with people but like you're you're making you know as long as you're really good at accounting for this

256
00:27:07,920 --> 00:27:14,640
as you implement those new business rules um like in your new database you actually can track if your

257
00:27:14,640 --> 00:27:20,000
assumptions about them are correct by like what the the comparison looks like and and then also i would

258
00:27:20,000 --> 00:27:26,400
imagine you also i mean it's annoying to have two copies of the same data like eventually i imagine

259
00:27:26,400 --> 00:27:32,800
you have to consolidate them but then also ongoing uh other systems that are using that data that have

260
00:27:32,800 --> 00:27:39,040
not been modernized they can go on functioning right like they they can use that old data which which

261
00:27:39,040 --> 00:27:44,400
again it fixed into this notion of like let's do the smallest amount possible without without without

262
00:27:44,400 --> 00:27:50,560
without uh having to mess with the rest of the system you are right you're right um totally um

263
00:27:51,200 --> 00:27:56,320
so yeah this comparator that we built uh to to validate that what we are writing in the new system

264
00:27:56,320 --> 00:28:01,520
is the same as the same meaning that what we are right than what we are writing the old system

265
00:28:01,520 --> 00:28:08,400
uh also helps build a lot of confidence uh um in the team but that's when the whole company because

266
00:28:08,400 --> 00:28:15,120
is a very sensitive subject to touch to modernize mainframes there uh because we are touching 30 years

267
00:28:15,120 --> 00:28:21,840
of yeah like you said business rules and yeah things might break and and and having this comparator

268
00:28:22,800 --> 00:28:28,000
mechanism even if it's complexify a bit the architecture uh helps to build that confidence in

269
00:28:28,000 --> 00:28:35,840
the company that we are not uh doing uh we are not introducing uh too many i want to say i don't want to

270
00:28:35,840 --> 00:28:42,640
say no bug because they are they can bugs can happen anytime but it's just the risk of things the risk

271
00:28:42,640 --> 00:28:48,880
exactly yeah and and like you said after this step when this confidence is built the next step would

272
00:28:48,880 --> 00:28:56,880
be like to to check to swap the the the source of truth for the data yeah to to give the the source of

273
00:28:56,880 --> 00:29:04,400
truth to the new application and then to to synchronize the whole system database with the new one to make

274
00:29:04,400 --> 00:29:09,760
the other application that use the same data still more and that would be the next step after building

275
00:29:09,760 --> 00:29:16,240
that the confidence path how long do you think that takes like do you think that's like like three

276
00:29:16,240 --> 00:29:23,520
months or is it like two years that that you kind of just like let let those two databases kind of like

277
00:29:23,520 --> 00:29:29,920
simmer and merge together yeah i think it take months uh and years just for this example it took two

278
00:29:29,920 --> 00:29:34,320
years for them to rewrite the transactions like and to have this coffee and to be able to

279
00:29:35,040 --> 00:29:41,440
to move things to change the source of truth so it depends on yeah the complexity of the transaction and

280
00:29:42,320 --> 00:29:47,040
uh but uh yeah it can i will not evaluate that in weeks that's really interesting to me because i

281
00:29:47,040 --> 00:29:52,880
haven't thought about i haven't thought about like this kind of scenario but in general the other thing

282
00:29:52,880 --> 00:29:58,240
like when i talk with large organizations about modernizing or doing anything is one of the other

283
00:29:58,240 --> 00:30:03,680
first things in addition is starting small that that i try to emphasize is like however long you think

284
00:30:03,680 --> 00:30:08,480
this is going to take you should probably double it and and it's it's not just the usual like

285
00:30:08,480 --> 00:30:14,320
programmers can't estimate and it takes a long time but it's it's more of i think a lot of the best

286
00:30:14,320 --> 00:30:20,640
practices and knowledge we have about programming comes from organizations that are building new

287
00:30:20,640 --> 00:30:26,960
applications or at least very young applications right like and especially like consumer applications all

288
00:30:26,960 --> 00:30:32,000
the social media applications and things like that versus like one of the things that that's different

289
00:30:32,000 --> 00:30:39,040
at a large older organization is like you're saying or we're saying is they have a 30 year old application

290
00:30:39,760 --> 00:30:47,200
and just migrating all those business rules is going to take a long time and so you have to have

291
00:30:47,200 --> 00:30:54,400
this realistic expectation of like yeah it's going to take like two years and that's not bad it's fine

292
00:30:54,400 --> 00:31:01,760
and in fact it's good to be slow and steady and careful when you're doing this because it's important

293
00:31:01,760 --> 00:31:07,600
right like it's not like i don't know i'm just making something up if you're doing like a photo management

294
00:31:07,600 --> 00:31:15,440
app like it is a bummer if you lose someone's photos but it's not that big of a deal in the grand scheme

295
00:31:15,440 --> 00:31:21,120
of the thing where like for these kind of applications across like you know banks and governments and

296
00:31:21,120 --> 00:31:27,200
other things like that like it is a big deal if you if you like mess up the business rules like it causes

297
00:31:27,200 --> 00:31:34,320
like the scale of problems it can cause is much more than like yeah we lost photos from when my kid was

298
00:31:34,320 --> 00:31:40,000
six which is a big bummer for me personally but it doesn't like bring down the banking system

299
00:31:40,720 --> 00:31:46,000
yeah you're right you're right that was uh that was indeed the case that was working on that kind

300
00:31:46,000 --> 00:31:52,640
of modernization is always sensitive i would say like uh compared to more classical legacy system

301
00:31:52,640 --> 00:32:01,200
uh right because they are yeah they are we are touching the core of the of the company but yeah

302
00:32:01,200 --> 00:32:05,600
like for example for the concerning this example like it was very important to do it because they

303
00:32:05,600 --> 00:32:11,360
outsourced a lot of things and and right they still did they were not controlling this corn anymore now

304
00:32:12,000 --> 00:32:19,920
uh but that's it it's a long journey so then finally so like uh well as as i always joke it worked

305
00:32:19,920 --> 00:32:24,480
otherwise you probably wouldn't have written it up like like what were the results the outcomes at the

306
00:32:24,480 --> 00:32:30,400
end a big outcome but that is not really technical it's more like the trust like people people are not

307
00:32:30,400 --> 00:32:36,960
sure that it will work often we are used to to try to anticipate a lot of things uh beforehand

308
00:32:37,600 --> 00:32:44,080
and and that can be that can feel very scary to try to discover things uh little by little and solve

309
00:32:44,080 --> 00:32:49,360
problems as soon as when when they arrive rather than trying to solve problems that maybe we will not

310
00:32:49,360 --> 00:32:57,040
have and and maybe that yeah that so so building this trust this uh um giving confidence that our

311
00:32:57,040 --> 00:33:03,600
approach can help them modernizing uh demand frames was one of the big outcomes uh for this engagement

312
00:33:04,160 --> 00:33:10,000
another one was like uh also uh but we also have in other engagements not specific to mainframe but

313
00:33:10,000 --> 00:33:16,080
mainframe but uh the capability to deploy new features very fast like building a pipeline and and being

314
00:33:16,080 --> 00:33:22,080
able to to deploy new features without downtime and stuff like that that was a key learning for them

315
00:33:22,800 --> 00:33:32,480
of course uh our practices they left like uh being able to to pair to do tdd and and uh having a lean

316
00:33:32,480 --> 00:33:39,200
approach to order the way they are working was also very very key to come back to the pipeline and to

317
00:33:39,200 --> 00:33:43,680
give some numbers that i have in mind i think uh before like i said that it was taking weekends to

318
00:33:43,680 --> 00:33:49,280
deploy new features uh now you just take 30 minutes like to deploy a new feature so that's that's a big

319
00:33:49,280 --> 00:33:56,880
huge that's basically uh the bigger comes that we had you know i i don't really know what sociotechnical

320
00:33:56,880 --> 00:34:01,360
systems means i should learn that phrase one day i think i think as with all academic things it's

321
00:34:01,360 --> 00:34:07,040
probably too precise for me to use correctly and and fully know one of the things that you know you've

322
00:34:07,040 --> 00:34:12,240
gotten over several times is like when you're when you're looking at modernizing something like this

323
00:34:12,800 --> 00:34:20,400
you have to not only think about the application or even like no this the hardware system or whatever

324
00:34:20,400 --> 00:34:26,480
involved but you've got to like treat the whole organization as the application right the way that

325
00:34:26,480 --> 00:34:32,080
people work together the knowledge that they have and then and then also like it's well it's easy to say

326
00:34:32,080 --> 00:34:38,080
and maybe a little weird to think of but like your your trust and confidence in the process is part of

327
00:34:38,080 --> 00:34:45,040
it as well right like it's almost like a form of qa or quality that like you have to maintain

328
00:34:45,600 --> 00:34:51,520
confidence in it and and instill that before you people can execute all right and uh yeah regarding

329
00:34:51,520 --> 00:34:57,280
also the you mentioned the the and indirectly the conway conway's law like about the organization

330
00:34:57,280 --> 00:35:03,840
communication structures yeah that was also uh something that we bring uh like uh building these

331
00:35:03,840 --> 00:35:09,200
teams that who has uh don't know the capability to take decisions regarding where they want to go to

332
00:35:09,200 --> 00:35:16,640
implement the things that was also something uh uh very a bit new for the for the team because there

333
00:35:17,440 --> 00:35:23,360
uh it's hard it can be hard when you you you have said you are responsible of the decision you are

334
00:35:23,360 --> 00:35:28,320
going to take as a team uh it's not someone else who will take will explain to you what you have to do

335
00:35:28,320 --> 00:35:35,680
anymore uh and and building that kind of mindset also is a it's part of the of the engagement it was uh

336
00:35:35,680 --> 00:35:43,440
it's very important to to to instill uh to to adopt another culture let's say you know yeah

337
00:35:43,440 --> 00:35:48,720
such companies yeah yeah well great well i that was fun talking through that and i think um you know

338
00:35:48,720 --> 00:35:54,960
i'll definitely put a link to the blog overview overview the the blog uh which which i think like

339
00:35:54,960 --> 00:36:00,720
it'll definitely it has a lot of visuals about each step uh that that y'all went through and i think uh

340
00:36:00,720 --> 00:36:05,520
i think it'll help people flesh out the details there do you do you have any any like uh any

341
00:36:06,160 --> 00:36:10,720
websites or places you would send people if they're interested in uh following you seeing what else

342
00:36:10,720 --> 00:36:16,560
you're up to yeah there's my blog uh my blog i had in a little bit but i i'm going to do that soon

343
00:36:17,280 --> 00:36:23,520
yeah so my blog for them d.com basically but it's in french i might try to post some english

344
00:36:23,520 --> 00:36:28,320
articles as well well good well i'll i'll put a link to that as well and uh yeah it was it was it

345
00:36:28,320 --> 00:36:33,440
was fun uh talking with you about this as always this has been tanzu talk if you're listening to

346
00:36:33,440 --> 00:36:39,200
the podcast version of this and you want to get the the show notes you can go to tanzu talk.com and uh

347
00:36:39,200 --> 00:36:43,760
find them and hopefully if you've listened this far and you don't subscribe to the podcast you should

348
00:36:43,760 --> 00:36:49,120
definitely subscribe for for interviews and news in the space and things like that and you can also find

349
00:36:49,120 --> 00:36:54,720
out how to see watch the videos of interviews that we do uh for things like this if you go to tanzu

350
00:36:54,720 --> 00:36:58,960
talk.com videos and with that we'll see everyone next time bye bye
