1
00:00:01,000 --> 00:00:04,759
How'd you like to listen to dot
net Rocks with no ads? Easy?

2
00:00:05,320 --> 00:00:09,880
Become a patron For just five dollars
a month you get access to a private

3
00:00:10,000 --> 00:00:14,400
RSS feed where all the shows have
no ads. Twenty dollars a month will

4
00:00:14,400 --> 00:00:18,800
get you that and a special dot
net Rocks patron mug. Sign up now

5
00:00:18,839 --> 00:00:24,199
at Patreon dot dot net rocks dot
com. Hey Carlin Richard here. As

6
00:00:24,239 --> 00:00:29,519
you may have heard, NDC is
back offering their incredible in person conferences around

7
00:00:29,559 --> 00:00:33,960
the world, and we'd like to
tell you about them. NDC Copenhagen is

8
00:00:34,000 --> 00:00:39,600
happening August twenty seventh through the thirty
first. Go to NDC Copenhagen dot com

9
00:00:39,799 --> 00:00:45,039
for more information. NDC Porto is
happening October sixteenth through the twentieth. Go

10
00:00:45,159 --> 00:00:50,119
to Dcporto dot com to register and
check out the full lineup of conferences at

11
00:00:50,200 --> 00:00:54,840
NDC Conferences dot com. Hey there, this is Jeff Fritz, the purple

12
00:00:54,880 --> 00:00:59,280
blazer guy from Microsoft, letting you
in on a little secret about my friend

13
00:00:59,439 --> 00:01:03,560
Carl Franklin. You know, the
guy who started dot net Rocks, the

14
00:01:03,640 --> 00:01:07,439
first podcast about dot net in two
thousand and two. The guy who's been

15
00:01:07,480 --> 00:01:14,599
teaching Blazer on YouTube since twenty twenty. Yeah that Carl Franklin. Well,

16
00:01:14,959 --> 00:01:18,640
Carl's joined up with the folks from
Code in a Castle to teach a week

17
00:01:18,760 --> 00:01:23,120
long hands on Blazer class at Are
you ready to get this? At a

18
00:01:23,239 --> 00:01:30,200
castle slash villa in Tuscany. It's
sort of a luxury vacation with Blazer learning

19
00:01:30,280 --> 00:01:37,359
built in. Carl's calling it the
Blazer master Class. You'll learn Blazer from

20
00:01:37,359 --> 00:01:41,680
the ground up, finishing the week
with the ability to build and deploy Blazer

21
00:01:41,719 --> 00:01:47,120
applications. Since the training happens for
only four hours in the morning over six

22
00:01:47,200 --> 00:01:51,680
days, you can bring your significant
other, your partner with you and you

23
00:01:51,719 --> 00:01:57,319
should right This part of Italy is
absolutely beautiful. There's so much to see

24
00:01:57,400 --> 00:02:02,159
and do and in Larry and Marco
from Code into Castle are organizing daily activities

25
00:02:02,200 --> 00:02:07,760
both at the castle and in the
area. The castle is in the Marema,

26
00:02:07,840 --> 00:02:13,319
a less touristed region of Tuscany,
offering both classic Tuscan hill country as

27
00:02:13,319 --> 00:02:17,759
well as easy access to the Etruscan
Riviera, with sublime local food, wine

28
00:02:19,039 --> 00:02:23,120
and olive oil around every corner.
Breakfast is included every day. There will

29
00:02:23,120 --> 00:02:28,919
be two communal dinners at the Castle
book ending the experience and most other meals

30
00:02:29,080 --> 00:02:34,439
and all activities are included. And
did I mention you'll learn Blazer in person

31
00:02:34,520 --> 00:02:38,159
from Carl Franklin. Listen, space
is limited and for very good reason.

32
00:02:38,439 --> 00:02:45,000
This is quality training in a beautiful
setting. Go to code in Acastle dot

33
00:02:45,000 --> 00:02:52,240
com slash Blazer twenty twenty three.
That's bla z o R two zero two

34
00:02:52,400 --> 00:02:57,759
three to take advantage of this amazing
opportunity to join Carl in Tuscany for an

35
00:02:57,840 --> 00:03:04,080
unforgettable week of led dulce vita while
advancing your programming skills in this important new

36
00:03:04,159 --> 00:03:22,159
technology. Hey guess what it's doing
at Rocks. I'm Carl Franklin and I'mmateur

37
00:03:22,199 --> 00:03:25,199
Campbell, And you're here again.
Isn't that cool? They're here again?

38
00:03:25,840 --> 00:03:30,039
They show up. This keeps happening. I don't know, I don't know

39
00:03:30,120 --> 00:03:35,080
why. I'm beginning to get an
idea why. Yeah, maybe how you

40
00:03:35,120 --> 00:03:38,680
been, mister Campbell? How's how's
moving going? I'm packing mostly right,

41
00:03:39,560 --> 00:03:43,199
And the problem, of course,
is that we're not moving into a new

42
00:03:43,280 --> 00:03:49,080
place. We're moving into a place
that we've already furnished. So we have

43
00:03:49,319 --> 00:03:53,240
entirely too much of everything. Not
the least of which is a downsize.

44
00:03:53,280 --> 00:03:57,199
So twenty something years have been in
this house. It's a lot of purging.

45
00:03:57,759 --> 00:04:00,960
Yard sale. Um no, not
a yard sale kind of guy.

46
00:04:00,159 --> 00:04:04,000
You know. That's the thing.
I admit. I will Facebook Marketplace like

47
00:04:04,039 --> 00:04:09,639
good bits of electronics and things that
we but it's only good for free.

48
00:04:09,759 --> 00:04:12,240
Yeah, if you as soon as
there's a price forget it, you're wasting

49
00:04:12,280 --> 00:04:14,400
your time. Yeah. But if
you want to get rid of something on

50
00:04:14,439 --> 00:04:16,519
a weekend quickly, you can stick
it in the driveway and throw it on

51
00:04:16,560 --> 00:04:18,920
Facebook Marketplace. It will be gone
in an hour. And if you say

52
00:04:19,040 --> 00:04:21,639
you want ten bucks for it,
somebody's going to offer you too. Well,

53
00:04:21,680 --> 00:04:26,120
they won't even do that. All
they'll do is waste time after that.

54
00:04:26,199 --> 00:04:29,759
If you give it away, it's
gone and that's fine unless there's something

55
00:04:29,879 --> 00:04:32,079
nice, in which case they go, oh it's a scam. So is

56
00:04:32,120 --> 00:04:35,600
there any if there are any dot
net rocks listeners in your area, can

57
00:04:35,639 --> 00:04:39,360
they contact you and see what you
got? Do you have a list somewhere?

58
00:04:39,480 --> 00:04:41,879
I don't really have a list.
Which kind of stuff comes along and

59
00:04:42,720 --> 00:04:45,800
it goes out the door pretty quickly, but yeah, okay, yeah,

60
00:04:45,800 --> 00:04:48,040
it's not that organized. Too much
stuff, man, too much stop and

61
00:04:48,399 --> 00:04:51,680
but a lot of what's happening right
now is and you know, my wife

62
00:04:51,720 --> 00:04:56,959
will enough to know that she purchased
a particular size of plastic bin with locking

63
00:04:57,040 --> 00:05:00,160
lids and stacking mounts. Oh yeah. And so we are our packaging up

64
00:05:00,199 --> 00:05:03,360
the things that need to stay into
these bins. We have measured off the

65
00:05:03,399 --> 00:05:06,879
space in the garage up on the
coast, and so we know how many

66
00:05:06,920 --> 00:05:11,120
bins were allowed to have and we're
sort of making it fit to the space.

67
00:05:11,160 --> 00:05:15,000
And so I keep doing runs in
the truck up there and continuing to

68
00:05:15,040 --> 00:05:18,040
pile up a monolith, you know, something out of pink floids the wall,

69
00:05:18,759 --> 00:05:23,040
and eventually will be done. Wait
a minute, that's part of what

70
00:05:23,079 --> 00:05:30,240
we're talking about monoliths today, right
with Leila? You like that? All

71
00:05:30,360 --> 00:05:33,120
right? Well, before we get
Leila on, let's uh do better,

72
00:05:33,120 --> 00:05:36,800
no framework, because I got something
really kind of interesting to share, all

73
00:05:36,879 --> 00:05:51,079
right. So this is a story
reported by the verge right. Millions in

74
00:05:51,199 --> 00:06:00,240
quotes of sensitive US military emails were
reportedly sent to the country of Mali to

75
00:06:00,279 --> 00:06:03,439
a typo right for over ten years, millions of I won't read the whole

76
00:06:03,439 --> 00:06:06,480
thing but here's the gist. For
over ten years, millions of emails associated

77
00:06:06,519 --> 00:06:11,759
with the US military having getting sent
to Molly, a West African country allied

78
00:06:11,759 --> 00:06:15,639
with Russia, due to a typo. According to a report from The Financial

79
00:06:15,680 --> 00:06:20,279
Times, instead of appending the military's
dot mil domain to their recipient's email address,

80
00:06:20,879 --> 00:06:28,319
people frequently type dot mL, the
country identifier for Mali. I mean,

81
00:06:28,360 --> 00:06:31,839
presumably all these emails bounce. Well, here's the story. So this

82
00:06:31,879 --> 00:06:39,519
guy, a Dutch entrepreneur, Johannes
Zubier probably something like that, contracted to

83
00:06:39,600 --> 00:06:43,480
manage Molly's domain, tells the Financial
Times. This has been happening for over

84
00:06:43,560 --> 00:06:47,800
a decade, despite his repeated attempts
to warn the US government, and when

85
00:06:47,800 --> 00:06:54,000
he began noticing requests for non existent
domains like Army dot mL and Navy dot

86
00:06:54,120 --> 00:06:58,600
mL, he set up a system
to catch the misdirected emails, which was

87
00:06:58,759 --> 00:07:06,680
quote rapidly overwhelmed and stopped collecting messages. He reportedly intercepted a hundred and seventeen

88
00:07:06,720 --> 00:07:14,040
thousand misdirected emails, some of which
contained sensitive information. Oh my goodness,

89
00:07:14,519 --> 00:07:17,319
yep, that's a good one.
Attention to detail, kids, it's really

90
00:07:17,319 --> 00:07:20,720
important. Well, and any I
mean again, I guess they mostly bounced.

91
00:07:21,000 --> 00:07:24,240
Yeah, but the real the real
point, I think he's at the

92
00:07:24,319 --> 00:07:28,160
end of this story where it's like
that now the Defense Department has set it

93
00:07:28,240 --> 00:07:31,920
up so that when any dot mL
domain email address tries to said to dot

94
00:07:32,040 --> 00:07:35,160
mL, they get a message that
says, you need to verify this.

95
00:07:35,519 --> 00:07:42,680
Right. Yeah, I just don't
understand why somebody would send army to Army

96
00:07:42,759 --> 00:07:46,519
dot m IL and then get a
bounce notice and then keep sending it.

97
00:07:46,639 --> 00:07:47,920
Well, who knows what they did? Well, who knows they did.

98
00:07:47,959 --> 00:07:50,360
There's a lot of people working in
the military. Yeah, you're right,

99
00:07:50,639 --> 00:07:54,560
right, and and I me I
mentioned some of those emails are, hey,

100
00:07:54,839 --> 00:07:58,360
want to meet for lunch? Right? Could be yeah, I'm just

101
00:07:58,439 --> 00:08:01,160
guessing, yeah, but there was
some sensitive stuff. Anyway, It's very

102
00:08:01,199 --> 00:08:07,759
important to pay attention to details,
sanitize your inputs. That's the moral of

103
00:08:07,800 --> 00:08:11,319
the story. Pretty funny, all
right, So who's talking to us today?

104
00:08:11,399 --> 00:08:15,160
Richard Grabby comment to show seventeen seventy, which is back in December twenty

105
00:08:15,199 --> 00:08:18,199
one, when we talk to our
friend Paul you can do it's about building

106
00:08:18,240 --> 00:08:24,120
microservices with Dapper Ye and Sean Kieran
wrote this great comment and literally DAPR dapper,

107
00:08:24,360 --> 00:08:28,160
dapr. Yes, because too many
product names. Life's hard. Yeah.

108
00:08:28,240 --> 00:08:31,399
Yeah, so it's about eighteen months
ago. Sean wrote this great comedy

109
00:08:31,399 --> 00:08:33,399
says thanks for another great show.
I don't know how you managed to keep

110
00:08:33,399 --> 00:08:37,759
coming up with them awesome work.
I enjoyed listening to Paul talk about Dapper.

111
00:08:37,799 --> 00:08:41,679
It's a really interesting technology and it
seems to have great hosting support too.

112
00:08:41,879 --> 00:08:45,440
And Paul mentioned a Dapper makes service
discovery easier, which is great to

113
00:08:45,480 --> 00:08:48,799
hear. But the words service discovery
in quotes also makes me shy away a

114
00:08:48,799 --> 00:08:54,240
little, as it seems to be
a bag full of unnecessary complexity that comes

115
00:08:54,240 --> 00:08:58,240
along with the modern approach to microservices. And I'm with him, Like Jeffry

116
00:08:58,240 --> 00:09:01,600
speaking, I think discovery seems vaguely
silly. It's like I kind of know

117
00:09:01,679 --> 00:09:05,440
where I want to call, Why
do I need to discover it? Until

118
00:09:05,559 --> 00:09:11,519
you're dealing with uncoupled failover solutions,
right. The whole idea that rather than

119
00:09:11,600 --> 00:09:16,000
saying, hey, when you need
this service, call here, it's like,

120
00:09:16,159 --> 00:09:18,960
when you need the service, ask
for this most of the time would

121
00:09:18,960 --> 00:09:22,200
be the thing we always thought it
would be. But I could also have

122
00:09:22,240 --> 00:09:24,879
a backup one there and I can
upgrade, I could you know, change

123
00:09:24,919 --> 00:09:30,440
things around without having to recompile other
code. Right. This is all that

124
00:09:30,559 --> 00:09:35,639
sort of uncoupling approach, which but
I agree that service discovery could be easily

125
00:09:35,639 --> 00:09:39,360
abused. They're used to. It
reminds me of the old XML web services

126
00:09:39,440 --> 00:09:43,720
days. Didn't wasn't there a discovery
Yeah, but protocol I mean even going

127
00:09:43,759 --> 00:09:48,399
back to ASMX right for crying out
loud, like we've always had this idea

128
00:09:48,559 --> 00:09:52,720
of we want to ask by name
for something, not by location. I

129
00:09:52,799 --> 00:09:56,440
just remember they did a demo where
you could search like zip code services and

130
00:09:56,480 --> 00:10:01,159
all the web code, all the
web services that provide zip codes would come

131
00:10:01,240 --> 00:10:03,639
up with endpoints, right. And
that was the silly one. That the

132
00:10:03,679 --> 00:10:07,720
one where it's like I just want
to call out into the Internet for a

133
00:10:07,759 --> 00:10:11,840
service to do something, and it's
like, I'm pretty sure you should never

134
00:10:11,879 --> 00:10:15,399
do that. Never ever do that. It's just not a good idea.

135
00:10:15,879 --> 00:10:18,600
The Internet is not filled with your
friends. That's that's what's out there.

136
00:10:20,039 --> 00:10:22,600
That was just you know, to
prove prove it could be done, I

137
00:10:22,639 --> 00:10:26,600
suppose, yeah, and again didn't
make it a good idea, But within

138
00:10:26,759 --> 00:10:33,600
a service architecture, to be able
to be to request a particular class of

139
00:10:33,679 --> 00:10:37,519
service and not care that it's any
given instance in any given location. It's

140
00:10:37,679 --> 00:10:43,360
kind of like the Swagger idea,
right, that's all insane uncoupling. Yeah,

141
00:10:43,440 --> 00:10:48,240
yeah, now A Shan does gone
to say he got involved with service

142
00:10:48,240 --> 00:10:50,720
buses back in two thousand and eight, so he's obviously an old schooler when

143
00:10:50,759 --> 00:10:54,399
he started with end Service Bush,
which we know and love well. But

144
00:10:54,440 --> 00:10:58,679
he also switched over to Rebus,
which I don't think we've ever talked about,

145
00:10:58,799 --> 00:11:01,360
developed by mog Heller Chrys No,
we have none, I don't think

146
00:11:01,440 --> 00:11:07,240
no. And but then also mentions
things like mass Transit, easynet QE Brighter,

147
00:11:07,480 --> 00:11:09,440
like there is a bunch of solutions
there. There's no two ways about

148
00:11:09,480 --> 00:11:15,159
it. It makes this key point
he says, when you build with these

149
00:11:15,200 --> 00:11:18,840
systems, you're making true He calls
them true Microsoft services, which I think

150
00:11:18,919 --> 00:11:22,960
is a bit optimistic. But it
is the idea that here is a platform

151
00:11:24,039 --> 00:11:28,919
that encourages you go down the path
of separate services that could be worked together

152
00:11:28,960 --> 00:11:35,600
by it worked on different developers,
deployed independently, can support multiple versions running

153
00:11:35,600 --> 00:11:39,200
on the same service. At the
same time in production without having to worry

154
00:11:39,200 --> 00:11:41,720
about it, and that the way
they do communication is schema base like it's

155
00:11:41,720 --> 00:11:46,759
all those sort of core ideas and
today's Then then you have the abstraction of

156
00:11:46,799 --> 00:11:52,320
transport, so it might be Rabbit
MQ or SMS or a service bus today

157
00:11:52,679 --> 00:11:56,799
or even Amazons SQS like, there's
lots of different ways to do stuff,

158
00:11:56,840 --> 00:12:01,440
and that's the key to the power
of all these service bus architectures that you

159
00:12:01,480 --> 00:12:05,399
don't have to commit to any given
stack in changing those things is not that

160
00:12:05,480 --> 00:12:11,679
big of a deal anyway. I
thought it was a nice love letter about

161
00:12:11,720 --> 00:12:16,320
service buses, but it's also I
think a luxury for a lot of folks,

162
00:12:16,360 --> 00:12:20,000
Like it takes a very significant set
of decision making to decide we're going

163
00:12:20,039 --> 00:12:24,480
to implement a set of applications.
Is really what we're talking about, an

164
00:12:24,480 --> 00:12:28,480
overall solution suite in a service boss
model, And I don't think we're going

165
00:12:28,519 --> 00:12:31,000
to talk about that today because I
think most people don't start there. I

166
00:12:31,000 --> 00:12:35,440
think most folks build an application and
get to a place where they now are

167
00:12:35,519 --> 00:12:39,320
told, you know, if only
we'd build this as microservice as everything will

168
00:12:39,360 --> 00:12:43,559
be good. Tear it all down
start over, which I've come to appreciate

169
00:12:43,600 --> 00:12:46,320
the main advantage of that approach is
that it means you'll be left alone for

170
00:12:46,360 --> 00:12:52,320
six months while you admired your reartic. All I really want to do is

171
00:12:52,360 --> 00:12:56,440
stop coming to this meeting. If
I say this, can I stop coming

172
00:12:56,440 --> 00:12:58,759
to this meeting? See in six
months? That's what it works. Hey,

173
00:13:00,039 --> 00:13:01,480
John, thank you so much for
your comment I thought was super relevant

174
00:13:01,480 --> 00:13:05,440
to our show today. And a
copy of music cobuy is on its way

175
00:13:05,440 --> 00:13:07,480
to you. And if you'd like
a copy of music Code Buy, write

176
00:13:07,480 --> 00:13:09,879
a comment on the website at dot
at rocks dot com or on the facebooks.

177
00:13:09,879 --> 00:13:13,080
We publish every show there and if
you comment there and I ready on

178
00:13:13,120 --> 00:13:15,559
the show, we'll send you a
copy of music Go Buy. And you

179
00:13:15,600 --> 00:13:18,559
know you can follow us on Twitter. That's fine. But the real fun

180
00:13:18,720 --> 00:13:22,320
is happening over on Mastodon right now. I'm Carl Franklin at Techup dot social

181
00:13:22,399 --> 00:13:26,960
and I'm Rich Campbell at Mastodon dot
social. And it's the real fun happening

182
00:13:26,960 --> 00:13:30,600
at Mastadon. I think it's or
is it now happening at threads? No,

183
00:13:30,879 --> 00:13:33,480
it's happening at Macedon right now.
For me, anyway. Yeah,

184
00:13:33,519 --> 00:13:37,480
I don't know. Are you on
threads yet? I had to sign up

185
00:13:37,519 --> 00:13:39,240
with it. I'm one of the
hundred million in five days. Yeah,

186
00:13:39,320 --> 00:13:41,879
me too. It's because we all
had Instagram accounts, right, so it's

187
00:13:41,919 --> 00:13:46,279
not a big deal to flip across. I never had all that many Instagram

188
00:13:46,320 --> 00:13:50,360
followers anyway. Yeah, so we'll
see. If your Instagram grids, then

189
00:13:50,360 --> 00:13:52,679
your thread's gonna be good. And
you're Instagram not good, Your threads are

190
00:13:52,679 --> 00:13:54,840
not going to be so good.
And yeah, are we really trying to

191
00:13:54,840 --> 00:13:56,919
Are we really looking to Zuckerberg to
be the safe here of anything? No?

192
00:13:58,360 --> 00:14:01,559
Actually, no, thanks, No, not at all. Yeah,

193
00:14:01,679 --> 00:14:05,559
I've already given her on all.
I got a blue Sky account to me,

194
00:14:05,639 --> 00:14:09,840
and I'm gonna try that with my
friends. Yeah. Yeah, all

195
00:14:09,960 --> 00:14:13,559
right, Well, anyway, let's
bring on Layla Porter. Laila is a

196
00:14:13,600 --> 00:14:18,559
developer advocate of VMware serving the dot
net community. She makes videos and live

197
00:14:18,600 --> 00:14:24,600
codes on YouTube. She's a Microsoft
MVP, a GitHub Star Progress Ninja,

198
00:14:24,799 --> 00:14:31,080
and the founder of the hashtag Women
of dot Net initiative. Layla loves sharing

199
00:14:31,120 --> 00:14:37,200
knowledge whilst having fun. No question
is stupid and beginners are always welcome and

200
00:14:37,279 --> 00:14:39,440
you are always welcome here on dot
net Rocks Laylah, welcome back. Hello,

201
00:14:39,759 --> 00:14:43,399
thank you for having me back.
Yeah, you know it's English.

202
00:14:43,399 --> 00:14:46,919
When you hear the word whilst,
you can pull that word off. Nobody

203
00:14:46,919 --> 00:14:52,159
else can put can drop a whilst
and mean it. I can't say just

204
00:14:52,399 --> 00:14:58,000
while unless I'm whiling away the time. Otherwise it's that's a while without an

205
00:14:58,120 --> 00:15:03,519
h that's a whole other w that's
it. So you know that's the only

206
00:15:03,559 --> 00:15:07,240
time you'll hear me say while.
Ye fair, fair enough, appreciate it.

207
00:15:07,399 --> 00:15:11,039
The last time we talked was at
NDC somewhere, wasn't it. I

208
00:15:11,039 --> 00:15:13,200
don't know. This is my third
appearance like that. Oh we did the

209
00:15:13,320 --> 00:15:18,720
dot net Foundation show, all right, Yeah, that was just an interesting

210
00:15:18,840 --> 00:15:24,639
time, as I recall. Quite
yes, interesting, I have not.

211
00:15:24,399 --> 00:15:28,240
I mean, I the Foundation is
still out there. Things seem a little

212
00:15:28,279 --> 00:15:35,559
more peaceful, which not much of
an achievement, but I I mean,

213
00:15:35,559 --> 00:15:37,879
if there's anything I can say about
the Foundations, like, I appreciate the

214
00:15:37,919 --> 00:15:43,639
focus on the open source leaders project
leaders these days. I think it's wise

215
00:15:43,159 --> 00:15:48,000
and uh and something really and something
important going on in our industry right now.

216
00:15:48,360 --> 00:15:52,759
But we'll that was womanly man like
over almost three years ago, so

217
00:15:52,080 --> 00:15:58,559
we'll probably due for dragon some foundation
folks in it a loop and having a

218
00:15:58,600 --> 00:16:02,960
conversation. Well, I just got
some new directors, three new directors now,

219
00:16:03,000 --> 00:16:10,279
so now as did I. So
what's on your mind today, Leila?

220
00:16:11,799 --> 00:16:15,960
Wow, there's a lot of things
on my mind. But I guess

221
00:16:15,960 --> 00:16:21,120
the past two years, because it's
been two years now since I joined VMware,

222
00:16:21,720 --> 00:16:26,879
it's been thinking about micro services.
So you're talking about all of that

223
00:16:26,960 --> 00:16:33,600
just now was very relevant and that
was a really steep learning curve and I

224
00:16:33,639 --> 00:16:37,440
can only imagine how steep it is
for folks who are actually doing the thing

225
00:16:37,840 --> 00:16:44,799
and moving across to microservices. So
I thought we could have a little chat

226
00:16:44,799 --> 00:16:51,080
about that and how I don't like
microservices and would urge people to shy away

227
00:16:51,200 --> 00:16:53,879
unless they absolutely, really really have
to. You are not alone. In

228
00:16:55,000 --> 00:17:00,720
fact, the sentiment from our most
recent guests is do you really need this?

229
00:17:00,399 --> 00:17:04,160
Yeah? Yeah, it is sort
of the I'm not gonna say it's

230
00:17:04,200 --> 00:17:10,839
a lashback, but anything that it
falls into that one right way category gets

231
00:17:10,839 --> 00:17:15,640
pushed back on and with good reason. Yeah, and usually by the people

232
00:17:15,680 --> 00:17:19,839
that try it, and it just
seems to complicate things and slow things down

233
00:17:21,200 --> 00:17:23,400
and that it does. Yeah,
the question is does it get you anything?

234
00:17:23,480 --> 00:17:30,000
Like I have certainly worked on service
bus architectured applications because they were complex

235
00:17:30,119 --> 00:17:33,640
enough, with enough different stacks and
enough different development teams that that conscious up

236
00:17:33,680 --> 00:17:40,480
coupling to work on the work through
a bus became essential. Otherwise this gigantic

237
00:17:41,000 --> 00:17:44,720
multimodal app resonated with each other.
We couldn't ship anything. But not that

238
00:17:44,759 --> 00:17:48,599
many applications are like that. Well, buses incus are a good idea even

239
00:17:48,640 --> 00:17:52,279
if you don't have a big or
complex thing. I mean, that's just

240
00:17:52,359 --> 00:17:56,960
a it's an asynchronous tool. Yeah, if that if that's if that's something

241
00:17:57,000 --> 00:18:00,640
you need. Yeah, but where
are you coming at this from? Laila?

242
00:18:00,720 --> 00:18:04,960
Who are the frustrated devs? I
found that at work a lot of

243
00:18:04,960 --> 00:18:11,359
the people I was speaking to were
advocating hard for microservices. So it's something

244
00:18:11,359 --> 00:18:15,720
that I really had to look into
and learn more about architecting. And the

245
00:18:15,759 --> 00:18:19,400
more I looked into it and the
more I spoke to people, the more

246
00:18:19,440 --> 00:18:25,039
I saw that people were getting really
drowned in the complexity of it. All

247
00:18:25,480 --> 00:18:30,640
right, And I think, as
you say, there were some loud voices

248
00:18:30,680 --> 00:18:34,759
saying there's a particular way of doing
something and it's a one size fits all,

249
00:18:34,839 --> 00:18:38,480
But really, when you're getting up
to that scale and that type of

250
00:18:40,480 --> 00:18:47,559
enterprise application, it's really bespoke and
I think it has to be a pragmatic

251
00:18:47,599 --> 00:18:52,119
approach. And there was far too
much dogma for my liking. Yeah,

252
00:18:52,200 --> 00:18:55,480
yeah, it isn't that a double
whammy. It's not only that microservices the

253
00:18:55,480 --> 00:19:03,079
way, but this form of microservices
is the way. And most of the

254
00:19:03,359 --> 00:19:07,799
customers that I speak to are if
we're lucky, they're on dot Net framework

255
00:19:08,039 --> 00:19:15,920
with a spaghetti tangle of code.
A lot of them are still on Classic

256
00:19:15,960 --> 00:19:25,440
ASP and yeah, they have hundreds
of applications, internal applications running on Classic

257
00:19:26,160 --> 00:19:32,039
And how do you get them from
going from that mindset to this big deal

258
00:19:32,119 --> 00:19:36,599
of microservices? And do they need
it? That's the big question. Yeah,

259
00:19:36,720 --> 00:19:40,000
is there a litmus test? Is
there a few questions you can ask

260
00:19:40,039 --> 00:19:42,480
yourself to determine whether this is a
good idea or not. My general thing

261
00:19:42,599 --> 00:19:48,279
is if you can't answer yes straight
away, then the answer is no.

262
00:19:48,599 --> 00:19:52,960
That's kind of my going on it. If I say do you think you

263
00:19:53,039 --> 00:19:56,119
need microservices and they go, well, we heard it's a good idea.

264
00:19:56,119 --> 00:20:03,079
Blah blah. I stop them there
because we heard or my CTO thinks it's

265
00:20:03,079 --> 00:20:07,200
a good idea, we want it, or the worst thing is resume development,

266
00:20:07,880 --> 00:20:11,839
resume driven development. I hear that
a lot. We want to try

267
00:20:11,880 --> 00:20:19,160
it, and then the complexity that
it adds is just not worth it.

268
00:20:21,279 --> 00:20:25,599
Also, if the teams aren't big
enough, that's a big issue. I

269
00:20:25,640 --> 00:20:30,039
think you need to have a big
enough development team to be able to pull

270
00:20:30,079 --> 00:20:34,839
it off. Otherwise everyone's going to
be run ragged trying to manage this service

271
00:20:34,920 --> 00:20:40,880
or that service. I've seen customers
layla that feel that they need to do

272
00:20:40,960 --> 00:20:47,480
it to sort of be ready for
the inevitability that their application is going to

273
00:20:47,480 --> 00:20:52,240
become the next Facebook or the next
Twitter or some sort of like Uber popular,

274
00:20:52,960 --> 00:20:56,559
you know, when in fact it's
it's just another company, you know.

275
00:20:56,359 --> 00:21:00,519
Yeah, and I hear that a
lot as well. We want to

276
00:21:00,519 --> 00:21:03,240
be read a funny thing and being
that the Twitters and the facebooks didn't do

277
00:21:03,279 --> 00:21:07,839
that and were successful and then retro
fitted into it, which is far more

278
00:21:07,880 --> 00:21:14,319
realistic. Yeah, And I think
there's really good design decisions that one can

279
00:21:14,440 --> 00:21:21,440
make at the beginning of application development
or through application development that will enable that

280
00:21:21,559 --> 00:21:26,559
transition at a later date, and
that's what I advocate for. I think

281
00:21:26,799 --> 00:21:33,119
architecting your applications in a way such
as that when you need to if way

282
00:21:33,240 --> 00:21:40,599
down the road that you actually need
to go distributed or part distributed, it

283
00:21:40,640 --> 00:21:47,559
will be easier. And that's what
I've try to sort of teach. Nowadays,

284
00:21:47,799 --> 00:21:52,519
I think you've sort of dropped a
yagny on me yet another he ain't

285
00:21:52,559 --> 00:21:56,279
gonna need it. Oh, you
ain't gonna ye, It's right, you

286
00:21:56,319 --> 00:22:00,880
ain't gonna need it. I remember
that one. Yeah, yeah, hey,

287
00:22:00,079 --> 00:22:06,160
you know I had to double check. But Classic ESP only when out

288
00:22:06,200 --> 00:22:11,119
of long term support in December of
twenty one. Really yeah, wow.

289
00:22:11,599 --> 00:22:15,200
Now the original version was nineteen ninety
six, so it's twenty That was twenty

290
00:22:15,200 --> 00:22:18,519
five years. But you know,
to me, and I think to all

291
00:22:18,519 --> 00:22:22,400
of us, when you said that, it's like, it's crazy that anybody's

292
00:22:22,400 --> 00:22:25,920
still be using Classic ESP. But
it's like it's only JET. I mean,

293
00:22:25,920 --> 00:22:27,960
it's only it's been it's fully out
of support for the past almost two

294
00:22:29,039 --> 00:22:37,079
years. But still okay, talk
about spaghetti code wow man, and nightmares

295
00:22:37,119 --> 00:22:41,119
about that stuff. I mean,
the enterprise architect in me thinks about that

296
00:22:41,160 --> 00:22:45,000
for a moment and would point them
at power apps because odds are that's the

297
00:22:45,119 --> 00:22:51,799
kind of software they're building internally,
our forms over data apps, and and

298
00:22:51,839 --> 00:22:55,039
I would want to go to the
domain experts and say, hey, you're

299
00:22:55,079 --> 00:22:57,119
tired of using this, let me
set you up with this tool and sort

300
00:22:57,160 --> 00:23:02,720
of go from there. I certainly
don't think microservices from there. The idea

301
00:23:02,720 --> 00:23:03,920
of looking at classic ASP app and
going, you know, when it fix

302
00:23:04,039 --> 00:23:11,440
this microservices, Oh my god,
that's like the new title of a horror

303
00:23:11,480 --> 00:23:15,559
movie. Honestly, that's awful,
and that I do hear it. It's

304
00:23:15,599 --> 00:23:22,240
such a Titanic leaps. It's just
stunning. You're literally talking about nothing but

305
00:23:22,359 --> 00:23:26,039
code behind Yeah, right, Like
one of ISP's big limitations was the lack

306
00:23:26,079 --> 00:23:32,039
of architecture, Like it was so
hard to separate concerns at all in there.

307
00:23:32,480 --> 00:23:36,839
And now you're going into something that
you've already pointed this out. Microservices

308
00:23:36,839 --> 00:23:40,519
serves lay well when the teams are
big and plentiful, and that we need

309
00:23:40,559 --> 00:23:45,319
a lot of architecture so these folks
can work together. That makes a lot

310
00:23:45,359 --> 00:23:49,799
of sense. Odds are the folks
operating maintaining these ASP apps are one or

311
00:23:49,839 --> 00:23:55,440
two people that have ever touched that
app probably ever. Yeah, we heard

312
00:23:55,480 --> 00:24:00,599
horror stories, didn't we, Richard, about people who followed a particular like

313
00:24:00,000 --> 00:24:07,359
very granular architecture for services. Everything
was a service. And this was a

314
00:24:07,480 --> 00:24:12,119
very well known author that had this
book and was consulting and they ended up

315
00:24:12,119 --> 00:24:17,680
but it ended up costing them millions
of dollars because it was not only a

316
00:24:17,720 --> 00:24:19,920
waste of time, but it slowed
everything down and there was no way to

317
00:24:21,000 --> 00:24:26,519
make it go faster, just completely
over architected. Yeah, and I've heard

318
00:24:26,559 --> 00:24:36,160
stories now of companies going backwards that
they're taking out their microservices and reconsolidating applications

319
00:24:36,279 --> 00:24:42,240
just because it's it's just wildly out
of control, right, And I think

320
00:24:42,279 --> 00:24:48,359
it's just the developer experience when you
start going into these these big systems that

321
00:24:48,400 --> 00:24:53,519
are distributed is awful. You don't
always know where the errors are coming from

322
00:24:53,640 --> 00:25:00,519
unless you've put in great documentation that
your testing is up to scratch. And

323
00:25:00,640 --> 00:25:07,400
I mean we all know that when
you've got a PM or a CTO breathing

324
00:25:07,440 --> 00:25:11,480
down your neck and saying we need
this yesterday, right, that some of

325
00:25:11,519 --> 00:25:15,759
those things are I'll put on a
back burner and oh, I'll get to

326
00:25:15,880 --> 00:25:21,680
that and I'll implement that at some
stage when it all quietens down, and

327
00:25:21,720 --> 00:25:26,319
then it never advocates implemented. Yeah, and you need all that. The

328
00:25:26,640 --> 00:25:30,359
point here is that the ceremony around
all of this is important to it.

329
00:25:30,359 --> 00:25:33,039
It is it can't be can't be
optional. And I don't hear you saying

330
00:25:33,079 --> 00:25:37,400
that there should be no separation of
concerns, because there clearly has to be.

331
00:25:37,079 --> 00:25:44,119
But you need just enough to make
it work and and don't you know,

332
00:25:44,480 --> 00:25:48,599
don't go overboard. That's it.
And then finding that balance is kind

333
00:25:48,599 --> 00:25:51,000
of hard. But it seems like, you know, I can think of

334
00:25:51,039 --> 00:25:56,079
maybe three or four silos that a
big application would want to be in,

335
00:25:56,039 --> 00:26:02,200
right, you know, reporting services
is maybe you know, communication, email,

336
00:26:02,279 --> 00:26:07,759
that kind of stuff that. Yeah, But then I also find that

337
00:26:07,160 --> 00:26:10,319
I don't know if I'm going to
get hate mail over this, But some

338
00:26:10,400 --> 00:26:15,759
of the DDD people have sort of
contributed to this, you know, but

339
00:26:15,319 --> 00:26:19,400
domain driven meaning you know, all
right, let's you know, find our

340
00:26:19,480 --> 00:26:23,759
domains and circle them out and these
are going to map to services. What

341
00:26:23,920 --> 00:26:27,039
do you what do you think of
that? Am I crazy? Well?

342
00:26:27,039 --> 00:26:32,920
I'm really glad you brought that up, Carl, because one of the things

343
00:26:33,039 --> 00:26:37,400
I keep coming up against is everything
to do with micro services seems to lead

344
00:26:37,440 --> 00:26:45,000
you to DDD, and I think
that is a completely different way of thinking.

345
00:26:45,200 --> 00:26:52,640
And I like to say I steal
just enough DDD to be dangerous,

346
00:26:52,880 --> 00:26:57,519
but I actually think I still just
enough DDD to get on and code what

347
00:26:57,599 --> 00:27:03,200
I need to code. And the
main thing I take away from DDD is

348
00:27:03,240 --> 00:27:07,519
just high cohesion lease coupling. That's
the main thing I take away, which

349
00:27:07,519 --> 00:27:11,839
I think is any sort of principle, well, is the main principle that

350
00:27:11,880 --> 00:27:18,759
you want to think about when you
are designing your application and thinking about that

351
00:27:18,839 --> 00:27:22,400
separation of concerns? And again you're
you're talking about a certain threshold of complexity

352
00:27:22,480 --> 00:27:26,599
to even be concerned about that.
The app is big enough that it needs

353
00:27:26,640 --> 00:27:30,759
a separation of concerns. Yes,
I would say it has to have that

354
00:27:30,839 --> 00:27:37,960
critical mass for you to actually be
worried about modularizing it and going down the

355
00:27:37,119 --> 00:27:42,720
modular monolith, which I'm a big
fan of and it's a great term it

356
00:27:45,559 --> 00:27:52,880
and that really does feel like the
wild West when I've been researching the right

357
00:27:52,920 --> 00:27:57,920
way, and I do that in
finger quotes. To do a modular monolith.

358
00:27:59,440 --> 00:28:06,359
There are so many different opinions,
there's no real guidelines. I found

359
00:28:06,359 --> 00:28:12,960
that was a really under talked about
area. There was very little information on

360
00:28:14,000 --> 00:28:17,640
that, a few YouTube videos,
a few people speaking loudly about it,

361
00:28:17,680 --> 00:28:23,240
but then it always had that DDD
overtone or DDD undertone, I should say,

362
00:28:25,000 --> 00:28:30,279
And I didn't want to go that
way. So the past I don't

363
00:28:30,319 --> 00:28:33,680
know, eight months, I've been
researching on how to do that, trial

364
00:28:33,720 --> 00:28:41,200
and error and coming up with an
interesting way to architect it. And it's

365
00:28:41,559 --> 00:28:45,920
all just big chunks, And I
think that's trying to keep the complexity as

366
00:28:47,039 --> 00:28:51,240
low as possible, but make it
in such a way that you can break

367
00:28:51,279 --> 00:28:56,119
off these little satellites of applications if
you need to, if you need that

368
00:28:56,240 --> 00:28:59,880
scale. Well, I appreciate the
term that you're breaking off. So you're

369
00:29:00,200 --> 00:29:03,519
already coming from the angle of you
have built a monolith, because that's the

370
00:29:03,599 --> 00:29:08,279
default, right that we tend to
just keep adding things to that our applications

371
00:29:08,359 --> 00:29:12,640
need over time, and eventually eventually
you have a problem. But the always

372
00:29:12,680 --> 00:29:18,480
question is like, what's the problem. Is it resonance, Like it's a

373
00:29:18,519 --> 00:29:21,119
big deal to make a change to
anything. Is it affects so many other

374
00:29:21,160 --> 00:29:25,640
things. Or I often being the
scaling guy, ran into the scaling problem

375
00:29:25,680 --> 00:29:29,680
where it's like, it is very
costly to scale this monolith just because one

376
00:29:29,720 --> 00:29:33,319
set of services and it needs to
run many more instances. That makes sense.

377
00:29:33,279 --> 00:29:38,640
You know, your asynchronous things becomes
services and they those things can scale

378
00:29:38,720 --> 00:29:44,440
up and down. That's needed.
That makes sense to me. So chipping

379
00:29:44,519 --> 00:29:48,640
pieces out of the monolith is that
the fair term I would say. So

380
00:29:49,519 --> 00:29:55,960
I really like to think of them
as satellites. And the one I always

381
00:29:56,039 --> 00:30:00,480
use as an example is like a
notification service. You can have that in

382
00:30:00,519 --> 00:30:04,759
your monolith. But let's just say
you're you want to bulks and emails or

383
00:30:04,799 --> 00:30:11,240
something like that. You may have
that sporadically and you don't need it all

384
00:30:11,279 --> 00:30:15,079
the time. So it's a perfect
thing to shove onto and as your function

385
00:30:15,279 --> 00:30:18,480
or an aw as lambda and just
have that scale as and when you need

386
00:30:18,519 --> 00:30:22,759
it. But if you have that
as a module in your modular monolith,

387
00:30:23,079 --> 00:30:26,839
it's just so easy to as you
say, Richard, chip that off,

388
00:30:27,240 --> 00:30:34,920
throw it into something else and connect
to that with ease and have your system

389
00:30:36,000 --> 00:30:41,000
still a monolith. You haven't got
that added complexity of everything's distributed, and

390
00:30:41,039 --> 00:30:45,599
I think that's the middle ground where
I think most companies and most applications need

391
00:30:45,680 --> 00:30:49,920
to sit. But there seems to
be these this polar divide, and these

392
00:30:49,960 --> 00:30:55,880
two camps know we're sitting in this
big ball of mud monolith over here because

393
00:30:56,119 --> 00:31:00,559
we don't want to go that route, and we love it. That's it

394
00:31:00,599 --> 00:31:11,599
in a mud pick, so happy
right here. And then we have the

395
00:31:11,079 --> 00:31:18,279
distribute distribute everything camp over there where
every little tiny thing is a service and

396
00:31:18,319 --> 00:31:25,799
now we've got minimal APIs and there's
like a million minimal API applications and are

397
00:31:26,119 --> 00:31:30,000
both of these lies? I mean, really, nobody has one monolith.

398
00:31:30,079 --> 00:31:34,680
There's always some services extraneous, and
nobody has a perfect set of micro services.

399
00:31:34,759 --> 00:31:40,480
There's always at least some ball of
mud somewhere. Oh it's hidden,

400
00:31:41,200 --> 00:31:45,200
calling a ball of go. Yes, more than mud, it's like and

401
00:31:45,200 --> 00:31:48,039
it's it's you shouldn't be embarrassed that
you have one. The only question is

402
00:31:48,079 --> 00:31:53,319
do you know where yours is?
Right? Do you know where your ball

403
00:31:53,359 --> 00:31:57,400
of go is? Because if you
don't, that's a concern, that's a

404
00:31:57,400 --> 00:32:02,440
big problem, right right. All
the reason this world is people who have

405
00:32:02,640 --> 00:32:08,200
who know where their balls of mud
are and people who are lying. Hey,

406
00:32:08,240 --> 00:32:13,000
guys, let's take a break.
We'll continue this great discussion with Lalah

407
00:32:13,039 --> 00:32:21,920
Porter after these very important messages,
and we're back. It's doting at Rocks.

408
00:32:21,960 --> 00:32:24,440
I'm Carl Franklin. That's my friend
Richard Campbell, and this is our

409
00:32:24,480 --> 00:32:32,079
friend Lala Porter and she's she's quoting
blasphemy here, blasphemy. I'm shocked,

410
00:32:34,119 --> 00:32:45,559
get shocked and awed and horrified.
No microservices or maybe only one. Yeah,

411
00:32:45,640 --> 00:32:49,640
just a couple of couples. Fine, you know, microservices the word

412
00:32:49,680 --> 00:32:57,240
itself implies that the whole thing just
get split up into all these little pieces.

413
00:32:57,640 --> 00:33:00,160
And that's you know, when you
say, oh, we have a

414
00:33:00,240 --> 00:33:02,599
couple of microservices, then people look
at your crosside. What do you mean

415
00:33:02,640 --> 00:33:08,920
a couple of microservices? Call them
Bob and Doug. Yeah, and they

416
00:33:08,920 --> 00:33:13,839
sit in the corner. Yeah,
I like your satellites. We have these

417
00:33:13,880 --> 00:33:19,279
satellites. That's that is a good
term specific things. And I know that

418
00:33:19,319 --> 00:33:24,759
there is an architecture term that they
call it a citadel, but I don't.

419
00:33:24,799 --> 00:33:30,279
That doesn't resonate with me. And
so I've really hung onto this for

420
00:33:30,559 --> 00:33:36,599
the past few years, this idea
of the satellites orbiting my monolith. And

421
00:33:37,519 --> 00:33:42,400
I do want to say that when
I say monolith, people think it's like

422
00:33:42,640 --> 00:33:45,279
a negative thing, right, right. They get really touchy about it,

423
00:33:45,359 --> 00:33:49,279
like we've got a monolith, but
you know, we're looking to distribute it.

424
00:33:49,319 --> 00:33:52,559
We want to spread it out,
like people are going to judge them

425
00:33:52,640 --> 00:33:58,799
because they've got a monolith, or
that they're outdated. Yeah, yeah,

426
00:33:58,839 --> 00:34:01,960
And I don't. It's like the
word legacy. There's nothing wrong with a

427
00:34:02,119 --> 00:34:07,960
well architected and well maintained legacy applications, especially if it's making money. Oh

428
00:34:08,039 --> 00:34:14,800
yeah, yeah, crying all the
way to the bank. Yep, it's

429
00:34:14,840 --> 00:34:22,679
written in VB. Shut up.
So I just I think there's all this

430
00:34:23,000 --> 00:34:30,079
negativity around this space and there doesn't
need to be. And I think monoliths

431
00:34:30,159 --> 00:34:37,480
are definitely where every application should start, and I think there needs to be

432
00:34:37,199 --> 00:34:44,440
a well considered, good plan for
how that application is going to grow.

433
00:34:45,199 --> 00:34:49,760
And I think it comes down to
people, and it's not the code,

434
00:34:49,840 --> 00:34:53,039
it's always the people. And what
I mean by that is you have the

435
00:34:53,159 --> 00:34:59,599
visionary, the architect, and they
do it all or beautifully and the application

436
00:34:59,679 --> 00:35:04,800
is st with best intentions. Because
I'm sure no one out there has gone

437
00:35:04,800 --> 00:35:08,599
out to architect a big ball of
mud or a spaghetti tangle. I can't

438
00:35:08,599 --> 00:35:15,559
think of anyone who would intentionally architect
something like that. So I believe people

439
00:35:15,599 --> 00:35:20,159
are going with good intentions. But
how does one but keeping all the services

440
00:35:20,199 --> 00:35:24,039
together in a deployment is actually efficient. Yes, it's fast, it interrupts

441
00:35:24,039 --> 00:35:28,639
well, it deploys easily. Like
there's a lot of reasons to do that.

442
00:35:29,400 --> 00:35:32,639
I didn't make a mistake. That
was the sensible thing to do until

443
00:35:32,800 --> 00:35:42,239
something changes, absolutely, And I
think it's where things go wrong is when

444
00:35:42,239 --> 00:35:47,000
that architect leaves or they retire,
or you get the new hires in and

445
00:35:47,039 --> 00:35:52,880
they're not on boarded correctly, or
there is no design document or style guide.

446
00:35:53,480 --> 00:35:57,679
And I think that's very when too
much of that architecture was in that

447
00:35:57,760 --> 00:36:02,719
person's head. That's it, and
it's that what is it the bus prevention

448
00:36:04,000 --> 00:36:07,480
theory, hit by a bus thing
for some term, or can't take a

449
00:36:07,599 --> 00:36:12,280
vacation, or when you take two
weeks off, a whole bunch of stuff

450
00:36:12,280 --> 00:36:16,960
just stops until you get back,
or worse, it carries on without your

451
00:36:17,039 --> 00:36:22,840
vision and oversight. And now you've
got whole new services that are duplicating things.

452
00:36:23,760 --> 00:36:28,559
You've got this, and I'm talking
about service services within an application,

453
00:36:28,599 --> 00:36:34,880
not microservices. So you've maybe got
some different new interfaces, or people are

454
00:36:35,360 --> 00:36:42,239
doing weird things with dependencies, and
you just get this this. Well,

455
00:36:42,679 --> 00:36:46,039
concerns are getting tangled, there's no
separation. We're getting this cross contamination of

456
00:36:46,519 --> 00:36:52,440
those clear boundaries that should be in
place. And I think this comes down

457
00:36:52,480 --> 00:37:00,159
to something I only recently discovered,
and that that's like architecture tests. I

458
00:37:00,159 --> 00:37:05,280
don't know that was a thing until
I started researching this, and it seems

459
00:37:06,079 --> 00:37:09,280
like a silly thing not to realize
that it was there. But you can

460
00:37:09,480 --> 00:37:16,639
put in a whole load of architecture
tests that makes sure that the architecture you

461
00:37:17,039 --> 00:37:22,880
put into your application as being adhered
to, and that can be like different

462
00:37:22,880 --> 00:37:29,199
projects aren't referencing projects they shouldn't be. And it just seems so logical to

463
00:37:29,239 --> 00:37:32,639
me. In all the years I've
done TDD and testing, this has never

464
00:37:32,719 --> 00:37:37,840
come up. If you never once
unit tests to validate your adhering to an

465
00:37:37,880 --> 00:37:42,159
architectural press, Yeah, well it's
a good idea and I'd never heard of

466
00:37:42,159 --> 00:37:45,360
it. I'm trying to conceptualize how
that even works. Well, there's a

467
00:37:45,400 --> 00:37:50,519
framework coworld architecture dot net. I
believe, I think that's the name of

468
00:37:50,519 --> 00:37:53,760
it. I could be wrong,
don't quote me on that, but it

469
00:37:53,840 --> 00:38:01,960
is a series of unit tests that
check for architecture parents and I had never

470
00:38:02,000 --> 00:38:06,599
seen it, And when you start
looking into it, it makes perfect sense.

471
00:38:07,039 --> 00:38:13,000
And how what assembly can reference what
assembly? You can get quite in

472
00:38:13,119 --> 00:38:15,519
depth with it. Okay, I
get it. So you're using reflection a

473
00:38:15,559 --> 00:38:20,599
lot to figure out how these things
are coupled or decoupled or not coupled,

474
00:38:20,599 --> 00:38:24,599
and what calls what and making a
code map and yeah, okay, yeah,

475
00:38:24,679 --> 00:38:29,079
that makes sense. And it doesn't
seem like something that you would write

476
00:38:29,119 --> 00:38:31,960
tests for. Maybe you would just
tell it what the guidelines are, what

477
00:38:32,519 --> 00:38:37,760
are and it would run a test
and say, okay, here are your

478
00:38:37,760 --> 00:38:43,280
problems as I see them. Yeah. Cool. I thought it was pretty

479
00:38:43,320 --> 00:38:47,639
cool because something that I've come up
against when I was in engineering was that

480
00:38:49,679 --> 00:38:52,039
there was so many different places to
do the same thing. I worked on

481
00:38:52,079 --> 00:39:00,079
a dot net framework app that was
fifteen years old, and you didn't know

482
00:39:00,239 --> 00:39:04,719
where to add something in because it
could be in one of a number of

483
00:39:04,760 --> 00:39:12,000
places, and there were I don't
know ten twelve different projects within this application,

484
00:39:13,320 --> 00:39:15,480
and you didn't know where anything was
going to go. And that is

485
00:39:15,920 --> 00:39:22,920
where so many applications are because they
all sort of grow over time. And

486
00:39:22,960 --> 00:39:28,679
that's the whole point. It's a
development process. It doesn't just magic up

487
00:39:28,760 --> 00:39:32,440
overnight. So you know, people
don't hang around jobs that long. So

488
00:39:32,519 --> 00:39:37,119
how do you do this and how
do you keep that? And it's I

489
00:39:37,119 --> 00:39:42,639
think there's three places that you can. You can start looking at adherence to

490
00:39:42,760 --> 00:39:47,760
your architecture, and that's visual looks, so getting someone to do a code

491
00:39:47,800 --> 00:39:54,719
review and going to check it.
You can have sort of tests in place,

492
00:39:57,480 --> 00:40:00,239
and you can also have you know, compar wild time testing on that.

493
00:40:00,320 --> 00:40:06,159
So there's all these different levels that
you can have to make sure that

494
00:40:06,199 --> 00:40:12,039
adherence is being met. And it
just made sense to me, but I've

495
00:40:12,079 --> 00:40:15,719
never seen it done in practice.
I'd love to know who's doing this in

496
00:40:15,840 --> 00:40:20,360
practice. Yeah, something something to
fall around on. I did find the

497
00:40:20,719 --> 00:40:25,039
GitHub repository for net arc test.
That's the one, yeah, based on

498
00:40:25,079 --> 00:40:30,039
the Java art test. Yeah.
Yeah, and just that exactly idea of

499
00:40:30,199 --> 00:40:35,920
essentially writing assertions that say here's our
architectural rules. I mean, I don't

500
00:40:35,960 --> 00:40:38,800
want to say that you just want
to pop warnings, but certainly when you're

501
00:40:38,880 --> 00:40:42,800
writing code, especially new to a
project, to have it come back and

502
00:40:42,840 --> 00:40:46,000
say, hey, we have an
architectural requirement around this, and this code

503
00:40:46,079 --> 00:40:51,679
violates it. So at least you
know you're pressing against edges that nobody wants

504
00:40:51,719 --> 00:40:55,880
your press against. And it's also
documentation because someone can come and read those

505
00:40:55,920 --> 00:41:02,079
tests, and you know that's the
first step of a documentation for your application

506
00:41:02,159 --> 00:41:07,559
and your style guide. You're describing
intent at that point. And even the

507
00:41:07,599 --> 00:41:09,960
best part is when your architect goes
on vacation, they could be sitting on

508
00:41:10,000 --> 00:41:15,119
a beach and looking at the results
of these tests and then send an email

509
00:41:15,159 --> 00:41:17,760
that says, hey, what are
you guys doing? Stop it? Yeah.

510
00:41:22,840 --> 00:41:28,360
Yeah. So it was really interesting
to start delving into this world and

511
00:41:28,440 --> 00:41:36,039
it really felt like the wild West. And my teammates they're all Spring advocates,

512
00:41:36,280 --> 00:41:43,079
so they're very into the distributed systems, very into all of this enterprise

513
00:41:43,199 --> 00:41:49,519
architecture. I think Spring has been
far ahead of dot net in that respect

514
00:41:49,760 --> 00:41:53,559
of pushing that and offering the libraries
that support that kind of architecture. So

515
00:41:54,039 --> 00:41:58,400
learning from them, and some of
them are really big DDD advocates, so

516
00:41:58,800 --> 00:42:04,880
trying to to dissect what I want
from from what they say and the stuff

517
00:42:04,920 --> 00:42:09,599
that I don't which is too far
in the DDD realm um. It has

518
00:42:09,679 --> 00:42:15,079
been really interesting, but it's something
I don't hear spoken about. It is

519
00:42:15,119 --> 00:42:21,679
the tea camps stay away from monoliths
or stay away from distributed systems, and

520
00:42:21,719 --> 00:42:24,559
there's never this in between, which
I think is why people should be.

521
00:42:24,760 --> 00:42:30,800
I really really strongly feel that it's
I mean, ultimately just to try and

522
00:42:30,840 --> 00:42:34,719
make more maintainable projects. Yeah,
you have to have a new acronym here

523
00:42:34,840 --> 00:42:40,199
jed jeed just enough distribution, that's
it. That's a great acronym. I

524
00:42:40,280 --> 00:42:47,079
like that. Oh okay, I
don't like it so much now, No,

525
00:42:47,159 --> 00:42:53,880
not my favorite. To join my
foundation, it's fifty acronym right there.

526
00:42:54,159 --> 00:43:00,599
But it was interesting going through the
modular monoliths and how you can start

527
00:43:00,639 --> 00:43:07,199
implementing so many of these good patterns
such as the asynchronous communication. You can

528
00:43:07,280 --> 00:43:14,599
have all of this message brokers implemented
into your modular monoliths, so you can

529
00:43:14,639 --> 00:43:20,519
have all these modules and how are
they speaking to each other by a service

530
00:43:20,559 --> 00:43:23,360
bus. So it's interesting that you
were bringing up that because that was something

531
00:43:23,400 --> 00:43:30,719
that I worked really hard when I
was building out a workshop on that used

532
00:43:30,719 --> 00:43:37,519
a modular monolith to get them messaging
in that sublayer really really clearly defined so

533
00:43:37,559 --> 00:43:45,760
that people coming into those modules knew
that each module could only communicate a cross

534
00:43:45,760 --> 00:43:53,199
a module via the asynchronous messaging,
which was really a fun challenge to architect

535
00:43:53,239 --> 00:44:00,000
and think about how things were going
to go and getting away from that synchronous

536
00:44:00,079 --> 00:44:02,639
I am waiting for a response mindset, yeah, yeah, and just trying

537
00:44:02,679 --> 00:44:07,440
to think, well, what does
need immediate response? Well, anything user

538
00:44:07,519 --> 00:44:14,440
related and that's all going to be
external, and basically anything internal doesn't need

539
00:44:14,559 --> 00:44:19,079
an immediate response, so you can
offload all of that. Even though that

540
00:44:19,480 --> 00:44:23,400
even though the difference between immediate and
this is milliseconds, it's perception, it's

541
00:44:23,960 --> 00:44:29,519
it's yeah's yeah, And it's also
an architectural uncompelling yeah, that the returns

542
00:44:29,599 --> 00:44:34,360
come from a separate stream than the
outputs. Um. I am deeply disturbed

543
00:44:35,280 --> 00:44:39,480
that we've spoken in this launched and
you have not said Kubernetes, like,

544
00:44:39,519 --> 00:44:45,559
what's up? I did, but
I try to avoid that very serious,

545
00:44:45,760 --> 00:44:52,920
right, I mean, there's another
angle to this microservices push, which is

546
00:44:52,920 --> 00:44:57,920
it is also soling product right,
and that's annoying too, Like there's other

547
00:44:57,960 --> 00:45:00,440
set of motivations around this and I
and I mean as much as I'm making

548
00:45:00,440 --> 00:45:06,079
fun on the whole Kubernetes angles,
like I am talking to more folks who

549
00:45:06,199 --> 00:45:13,119
are rehabilitating brownfield monoliths with Kubernetes,
that that's a form of encapsulation. It's

550
00:45:13,360 --> 00:45:16,760
creating new security parameters, it's making
them clean up messy bits of the code.

551
00:45:17,000 --> 00:45:22,079
The process of getting it to run
well in a container tends to make

552
00:45:22,159 --> 00:45:24,920
the product better. They act better
in the long run because it does start

553
00:45:24,920 --> 00:45:29,559
to separate out how we do state
management, how we do storage, like

554
00:45:30,079 --> 00:45:34,480
all of those things are good,
but it doesn't You're doing it because you

555
00:45:34,559 --> 00:45:37,960
want the software to be more reliable, not because somebody told you containers would

556
00:45:37,960 --> 00:45:45,119
save your life. And I've recently
been shown this cool architecture by one of

557
00:45:45,119 --> 00:45:52,119
the solution engineers at work because VMware
Tanzu the bit but I wipe for is

558
00:45:52,159 --> 00:45:59,360
all about cubanetis and that kind of
system. I don't really delve that deep

559
00:45:59,440 --> 00:46:05,960
into it. I'm very much still
on the code site. But the type

560
00:46:06,000 --> 00:46:09,519
of thing that you can do with
CUBANETI, especially with the edge, is

561
00:46:10,079 --> 00:46:17,840
fascinating. So I learned a whole
new way of architecting systems that is still

562
00:46:17,880 --> 00:46:27,920
monolithic but relies on Cubanetis as a
way for engineers to easily distribute their code

563
00:46:27,920 --> 00:46:34,880
to edge locations and manage it centrally. And I've recently learned about a customer

564
00:46:34,960 --> 00:46:39,960
that has thousands of edge locations all
running on VMS and they have to manually

565
00:46:40,079 --> 00:46:47,159
go and update each release on that, And I'd never thought about that aspect

566
00:46:47,280 --> 00:46:53,360
of it and coming background to how
you can centrally manage that and get things

567
00:46:53,440 --> 00:47:00,199
that are low to no code locally
because a lot of these edge locations don't

568
00:47:00,280 --> 00:47:06,760
have people who are technical at them, and they may not have constant Internet,

569
00:47:07,440 --> 00:47:12,320
so having something that can self heal
and manage itself is really really important.

570
00:47:12,519 --> 00:47:15,639
And I've never appreciated that aspect of
kubernetties. I always thought it was

571
00:47:16,159 --> 00:47:21,679
the oh, let's go to microservices, let's do this, it's the latest

572
00:47:21,679 --> 00:47:25,360
buzzword. But to see how it
can work in that type of situation and

573
00:47:27,039 --> 00:47:34,320
make a DevOps engineer's life that much
easier and automated had never occurred. To

574
00:47:34,360 --> 00:47:37,039
me. So that was a fascinating
thing to learn. And I feel like

575
00:47:37,079 --> 00:47:42,800
I'm learning so much these past two
years from a difference from being an API

576
00:47:42,880 --> 00:47:49,280
developer coming over to this whole new
world of really big enterprise development. It's

577
00:47:49,320 --> 00:47:54,840
been a steep learning curven and I
really appreciate people who are in those engineering

578
00:47:54,840 --> 00:47:59,679
teams trying to figure this out.
Well. I think important part here is

579
00:47:59,719 --> 00:48:05,239
reckonizing EDGE doesn't mean the client machine. EDGE might be the CDN closest to

580
00:48:05,280 --> 00:48:07,480
the client machine, absolutely, Like
that's just to getting into this idea that

581
00:48:07,480 --> 00:48:12,599
there's more places than the client and
the server to deploy software too, and

582
00:48:12,760 --> 00:48:15,079
that you want to sort of unified
strategy for saying, Okay, I'm going

583
00:48:15,159 --> 00:48:21,440
to push this compute closer to the
customer, but not on the customer's machine.

584
00:48:21,599 --> 00:48:23,079
And I think it's a it's a
hard idea to deal with. And

585
00:48:23,480 --> 00:48:28,400
you know, folks who've only ever
thought about CDNs, think about static images

586
00:48:28,840 --> 00:48:32,519
and files that way, and now
you're talking about units of compute that could

587
00:48:32,559 --> 00:48:35,760
be there where you don't know necessarily
what you're going to do, but you

588
00:48:36,119 --> 00:48:39,280
they havent you have control over it. It's it's not exposed to as much

589
00:48:39,360 --> 00:48:45,679
security risk, but it is performant. Making changes is inconsequential, right,

590
00:48:45,760 --> 00:48:52,360
I mean simple, Well, the
mockery of containers has been Hey, I

591
00:48:52,440 --> 00:48:55,320
took a fairly complicated set of services
in the back end of my server and

592
00:48:55,440 --> 00:49:00,039
made them far more complicated, right, Like, just broke them into so

593
00:49:00,119 --> 00:49:04,119
many more pieces. So it's just
so much more to manage not getting into

594
00:49:04,159 --> 00:49:06,880
this. Hey, it's not all
sitting in the same server anymore. It's

595
00:49:06,880 --> 00:49:09,760
pushed to all these other places as
well, and that was impossible when it

596
00:49:09,880 --> 00:49:16,880
was stuck in one location. These
are very much opts problems that a lot

597
00:49:16,880 --> 00:49:20,880
of developers. I don't think you
spend enough time just being aware of what

598
00:49:20,920 --> 00:49:25,880
we're trying to do to create good
performance for customers those asynchronous bits, because

599
00:49:25,920 --> 00:49:30,119
the customers is not directly affected by
them, mean it doesn't matter that we

600
00:49:30,159 --> 00:49:32,800
added latency by pushing that stuff to
the edge, and the data is going

601
00:49:32,840 --> 00:49:37,199
to sink later because the customer's done, they feel they've entered their order,

602
00:49:37,239 --> 00:49:40,719
they've done their workload, whatever they
wanted to do, and eventually, again

603
00:49:42,000 --> 00:49:45,679
measured in seconds, the data sink
back to the primary repository, wherever that

604
00:49:45,800 --> 00:49:52,559
may be. These are complicated problems
and you don't get to decide of an

605
00:49:52,559 --> 00:49:57,679
advance. Which you're doing here is
building architecture to make those options possible.

606
00:49:58,440 --> 00:50:00,559
But don't do it if it's not
going to happened, because it's not simple.

607
00:50:01,199 --> 00:50:08,360
No, it's that complexity versus the
outcome. And it's something that I

608
00:50:08,559 --> 00:50:15,039
always try to stress is everything you
add to your application is going to add

609
00:50:15,400 --> 00:50:21,480
complexity. You were talking about service
discovery. I speak about service discovery.

610
00:50:21,639 --> 00:50:28,559
I've got it in workshops. It's
good because you know your applications can self

611
00:50:28,599 --> 00:50:32,679
register. You don't have to worry
about it. It's all dynamic and it's

612
00:50:32,760 --> 00:50:38,239
hands off. But hey, it's
an added layer of complexity. And it's

613
00:50:38,400 --> 00:50:43,800
very easy just to go out Willie
Nearly and add all these new services,

614
00:50:43,840 --> 00:50:49,199
these funky things, these features do
all your resume driven development. And then

615
00:50:49,800 --> 00:50:58,639
now you have this horrifically complex application
that even the architects don't know what's going

616
00:50:58,679 --> 00:51:01,440
on, and it just gets less
and less and you get that distributed big

617
00:51:01,480 --> 00:51:05,920
bowl of mud. I mean,
I wonder if you have to have a

618
00:51:05,960 --> 00:51:10,440
service failure right where the app's been
deployed with this is the service we call

619
00:51:10,840 --> 00:51:14,599
and then for whatever reason, that
service is down and the back of one

620
00:51:15,159 --> 00:51:17,000
is up. But because we didn't
use the service discovery, we didn't even

621
00:51:17,039 --> 00:51:22,159
know it was there, so we're
out. Before you finally justify adding that

622
00:51:22,280 --> 00:51:27,960
overall ongoing cost and complexity of service
discovery, yes, yeah, it's like

623
00:51:28,000 --> 00:51:32,320
you need to feel the pain and
have that experience before we value that complexity.

624
00:51:32,360 --> 00:51:37,639
Right, So if we now got
pain driven developed, we've always had

625
00:51:37,679 --> 00:51:44,679
that, Yeah, well you know
your resume driven models. They I've always

626
00:51:44,679 --> 00:51:47,199
wanted to build one of these,
not that we need one of these.

627
00:51:47,960 --> 00:51:52,400
So part of that, you know, that pain piece is recognizing this can

628
00:51:52,440 --> 00:51:58,039
cause outages, and so we're going
to incur this cost willingly you think about

629
00:51:58,039 --> 00:52:00,480
all the people that are affected by
that. Right, It's not the developments

630
00:52:00,480 --> 00:52:05,119
more difficult. The deployment's more complicated. OPTS needs to know about it,

631
00:52:05,199 --> 00:52:07,719
to know when these services shift,
make sure the security contexts are right,

632
00:52:07,800 --> 00:52:13,760
like, it's a lot of people
involved going forward. Testings more complicated like

633
00:52:14,320 --> 00:52:20,119
that, nothing's free for adding that
capability in exchange for avoiding a possible outage

634
00:52:20,119 --> 00:52:24,119
effectively. But also the other one, the other scenario that I've seen is

635
00:52:24,519 --> 00:52:30,400
we can't deploy because we need those
other guys to update to this new version,

636
00:52:30,800 --> 00:52:35,079
to this new service too, before
we can deploy where what we did

637
00:52:35,119 --> 00:52:38,199
bus is properly. We don't need
to and that's why you have no Well,

638
00:52:38,320 --> 00:52:42,960
that's the worst case scenario which you
see people do, which is that

639
00:52:43,119 --> 00:52:47,280
distributed big ball of mud. Yes, so they go from the monolith to

640
00:52:47,440 --> 00:52:53,800
that rather than the monolith to the
modular monolith to the micro services, and

641
00:52:53,920 --> 00:52:58,679
it's the worst place to be.
I have the distributed ball of mud.

642
00:52:58,760 --> 00:53:00,000
It's not just a ball of mud, it's all of mudd, and multiple

643
00:53:00,000 --> 00:53:07,280
times that. Leila, what is
next for you? What's in your inbox?

644
00:53:08,239 --> 00:53:13,119
Ah? Well, I've got quite
a lot of events coming up.

645
00:53:14,440 --> 00:53:20,599
I can't imagine. Yeah, just
hanging out with people like you two in

646
00:53:20,800 --> 00:53:24,519
the meat space, which is always
fun. There's quite a few events.

647
00:53:24,599 --> 00:53:30,039
Are we all doing INDC Porto,
I think we are, Yes, Copenhagen,

648
00:53:30,280 --> 00:53:34,360
we're all doing Copenhagen, Yeah.
And we're all doing dev Intersection yeah,

649
00:53:34,440 --> 00:53:42,599
yes, and that Richard and I
are at dev Reach and Poland I'm

650
00:53:42,639 --> 00:53:45,760
basically doing a world tool with you. Richard. I think you're bombing around

651
00:53:45,760 --> 00:53:50,960
together pretty much. Are you going
to run down to dev Reach after after

652
00:53:51,000 --> 00:53:53,559
Poland as well. Yeah, you'll
probably get on the same flights. Oh

653
00:53:53,599 --> 00:53:57,679
yeah, because there's already three of
us on that flight. Yeah, and

654
00:53:57,679 --> 00:54:00,800
we're yeah, we're splitting with like
splitting shows like this. But you know,

655
00:54:01,039 --> 00:54:07,519
you get into situations you do.
So yeah, I'm I'm working on

656
00:54:07,119 --> 00:54:12,320
the old YouTube content. I've just
been on some cool courses learning how to

657
00:54:12,400 --> 00:54:17,559
do new awesome stuff with video streaming
keeps getting cooler. That's great. Yes,

658
00:54:19,199 --> 00:54:22,199
that streaming is a weird place.
I've sort of put a pause on

659
00:54:22,239 --> 00:54:27,440
that for a little while, but
I do love it. I love just

660
00:54:27,840 --> 00:54:30,679
the live coding. So yeah,
just doing a whole lot of load of

661
00:54:30,719 --> 00:54:37,719
stuff and always learning, was trying
to cram more knowledge into this cranium.

662
00:54:37,719 --> 00:54:42,199
Awesome. Well that's great, Layla, thanks so much for spending this hour

663
00:54:42,239 --> 00:54:45,079
with us. It's been fantastic.
Thank you for having me. All Right,

664
00:54:45,119 --> 00:55:09,079
We'll see you next time. I'm
dot net Racks. Dot net Rocks

665
00:55:09,199 --> 00:55:14,760
is brought to you by Franklin's Net
and produced by Pop Studios, a full

666
00:55:14,800 --> 00:55:20,360
service audio, video and post production
facility located physically in New London, Connecticut,

667
00:55:20,400 --> 00:55:24,880
and of course in the cloud online
at pwop dot com. Visit our

668
00:55:24,880 --> 00:55:30,840
website at dt n et r ocks
dot com for RSS feeds, downloads,

669
00:55:31,000 --> 00:55:36,239
mobile apps, comments, and access
to the full archives going back to show

670
00:55:36,320 --> 00:55:39,599
number one, recorded in September two
thousand and two. And make sure you

671
00:55:39,679 --> 00:55:44,239
check out our sponsors. They keep
us in business. Now, go write

672
00:55:44,239 --> 00:56:01,159
some code CNX time, got amcoring
