1
00:00:00,000 --> 00:00:02,960
So I was thinking earlier today, I was just walking up here.

2
00:00:03,040 --> 00:00:05,960
I was trying to get my daughter out of my home office.

3
00:00:06,200 --> 00:00:09,720
She's about, well, she's going to be free next month.

4
00:00:09,960 --> 00:00:12,680
In a few weeks, we better get started planning her birthday.

5
00:00:13,080 --> 00:00:14,940
Just that's a pro tip right there.

6
00:00:15,200 --> 00:00:19,600
But I was thinking, you know, she's at that stage where almost everything she does, she announces.

7
00:00:19,600 --> 00:00:22,480
Like, I'm going to go get my book, watching Frozen.

8
00:00:23,040 --> 00:00:24,660
You know, like, I've got poop.

9
00:00:25,480 --> 00:00:29,180
And I was thinking, you know, there's a lot of computer services like that.

10
00:00:29,240 --> 00:00:32,360
I mean, that's basically how, like, UDP and multicast works, right?

11
00:00:32,420 --> 00:00:38,260
Is you've got all these things in your big distributed system, and they just tell you every time they have poop in their diaper and everything that's going on.

12
00:00:38,760 --> 00:00:42,380
And there must be some name for that, like, broadcast everything style.

13
00:00:42,600 --> 00:00:47,660
More interestingly, there must be a name for the, I guess it would be a pull mechanism.

14
00:00:47,660 --> 00:00:49,760
It only tells you something if you want to know.

15
00:00:49,860 --> 00:00:51,140
I guess that would be SNMP.

16
00:00:51,520 --> 00:00:55,060
You've got the traps in SNMP, which broadcast everything out.

17
00:00:55,220 --> 00:00:57,380
But you do have to explicitly subscribe to them.

18
00:00:57,420 --> 00:01:04,120
Whereas with my daughter, there was no message sent about subscribing to her diaper notification service.

19
00:01:04,260 --> 00:01:06,080
I guess that's implicit in being a parent.

20
00:01:06,220 --> 00:01:08,140
It's kind of defaults that are set in your configuration.

21
00:01:08,760 --> 00:01:13,540
But there must be some name for the situation where broadcasting is not done.

22
00:01:13,540 --> 00:01:17,640
The mum broadcast paradox or something.

23
00:01:18,300 --> 00:01:18,700
That's right.

24
00:01:18,760 --> 00:01:19,740
It's like big kid data.

25
00:01:20,000 --> 00:01:21,040
You're just a lot of volume.

26
00:01:21,360 --> 00:01:21,840
That's right.

27
00:01:22,060 --> 00:01:23,400
And a variety coming in there.

28
00:01:23,480 --> 00:01:27,760
I know there's no filtering out this, you know, we ask our systems now to tell us more and more.

29
00:01:27,860 --> 00:01:32,980
And unless you have systems on the other end reading it, you just get, you know, dumped this way too much data.

30
00:01:33,080 --> 00:01:34,040
It's like, not now, Slack.

31
00:01:34,140 --> 00:01:35,560
Stop telling me so many things.

32
00:01:35,680 --> 00:01:36,800
Just relax.

33
00:01:37,040 --> 00:01:39,840
So I know our systems are very chatty, just like our children.

34
00:01:40,260 --> 00:01:47,240
Slack has this one thing that drives me crazy, which is like, there's no way to turn off the at here, at channel thing.

35
00:01:47,240 --> 00:02:09,100
And like any system where it's – I think there's probably some rule that also has some principle law or theory behind it that if there is a mechanism in a group listening situation by which you can get everyone's attention, it will be abused.

36
00:02:09,480 --> 00:02:11,020
It's just like, that'll happen.

37
00:02:11,700 --> 00:02:19,120
So it almost seems like that channel in here thing is a – it's a misguided feature to have.

38
00:02:19,360 --> 00:02:20,540
It's the opposite of what you want.

39
00:02:21,100 --> 00:02:27,460
I saw you mentioning on Twitter this morning that if – boy, maybe you could just do one thing at a time versus 50, maybe you'd be more productive.

40
00:02:27,560 --> 00:02:31,560
But I think we just accept the fact that continuous partial attention is our reality.

41
00:02:31,800 --> 00:02:32,200
That's right.

42
00:02:32,400 --> 00:02:33,780
You've got to learn how to cope with it.

43
00:02:34,120 --> 00:02:34,520
That's right.

44
00:02:34,740 --> 00:02:37,860
You know, this reminds me of another highly related thing.

45
00:02:37,860 --> 00:02:39,680
I remember I was reading that – how do you say it?

46
00:02:39,700 --> 00:02:40,960
Nassim Taleb guy.

47
00:02:41,420 --> 00:02:44,520
And he said two paradoxical things, which I'm sure delighted to him.

48
00:02:44,680 --> 00:02:47,500
He likes to be in a quad paradox situation constantly.

49
00:02:48,040 --> 00:02:56,820
But he's essentially saying, you know, hey, I made a lot of money with arbitrage, so the following I am lucky enough to be able to experience.

50
00:02:57,080 --> 00:03:04,100
Just like, you know, you should just wander around and like eat really good meals and only like work about an hour a day, and that'll work out better.

51
00:03:04,180 --> 00:03:10,320
And yet, paradoxically, he said he reads like 10 or 15 books at a time because he gets bored with them and he's got to bounce between them.

52
00:03:10,920 --> 00:03:14,520
So there's silos of focus, I guess.

53
00:03:14,620 --> 00:03:16,360
You just got to figure out your situation.

54
00:03:16,560 --> 00:03:21,240
So, you know, I was thinking of all this distributed stuff, and we'll get to this after our brief news thing.

55
00:03:21,320 --> 00:03:32,360
But our topic today was another part in our Circle of Code exhibition, going over the Spring Cloud services, which are based on the Netflix OSS stuff.

56
00:03:32,480 --> 00:03:41,340
But it seems like what's becoming the industry-leading way to do microservices and all of the, as we would say, sort of day two operational stuff, or even day one.

57
00:03:41,500 --> 00:03:47,320
But all of the operation stuff around it as well, which we'll get to in the second half.

58
00:03:47,420 --> 00:03:51,900
At your suggestion, you're doing a good job driving our Circle of Code agenda here.

59
00:03:52,420 --> 00:03:53,580
I'm just behind the scenes.

60
00:03:53,840 --> 00:03:54,760
You know, you're the face of us.

61
00:03:56,340 --> 00:03:58,100
On the audio-only podcast.

62
00:03:58,900 --> 00:03:59,300
Yes.

63
00:04:01,860 --> 00:04:08,880
So with that, you know, I think the VM world is actually going on at the moment, like, as we speak.

64
00:04:09,020 --> 00:04:10,980
I think it's the first day as we're recording.

65
00:04:11,160 --> 00:04:12,720
I really haven't caught up on it.

66
00:04:12,800 --> 00:04:20,420
It's not, you know, some people think that we're all in this federation, and we have some sort of conspiratorial, like, Richard Ailes memo that's sent out every day.

67
00:04:20,860 --> 00:04:23,000
But it's not the case.

68
00:04:23,340 --> 00:04:26,460
So we'll have to, I'll have to catch up on the news that's coming out of there.

69
00:04:26,820 --> 00:04:30,480
But, you know, that's kind of interesting that it's happening.

70
00:04:30,680 --> 00:04:46,360
And then I was reminded of this because of another item we have in here is, I think it was last week, the second half of last week, or something, that Microsoft is getting PowerShell to run on Linux, which is a, speaking of circles, that's a fascinating full circle.

71
00:04:47,080 --> 00:04:47,220
Yeah.

72
00:04:47,720 --> 00:04:49,140
Yeah, it's wild stuff.

73
00:04:49,200 --> 00:04:49,560
It's good.

74
00:04:49,560 --> 00:04:56,660
And, you know, Amazon, I think, gave some PowerShell modules, kind of their plug-in components and, you know, donating that.

75
00:04:56,740 --> 00:04:59,800
And putting that in, so it's open sourcing, it's widely available.

76
00:04:59,800 --> 00:05:02,680
And you could ask, if I'm a Linux developer, why would I pick this up?

77
00:05:02,700 --> 00:05:03,860
And the answer may be, you won't.

78
00:05:04,120 --> 00:05:10,020
It may be, you know, live with your Bash shell, and, you know, you're scripting, and you're fine, and you wouldn't use PowerShell, if anything.

79
00:05:10,540 --> 00:05:21,400
I was reading something else where Microsoft got asked to change the name of a couple packages, because back when it was only Microsoft World, they used things like WGET and other terms that were Linux-based, but who cares?

80
00:05:21,480 --> 00:05:23,020
Because this was never going to overlap.

81
00:05:23,520 --> 00:05:27,940
Now it does, and now you have these packages with the same name that shouldn't be using that name.

82
00:05:28,100 --> 00:05:33,640
So it's just very funny now when you build systems and never expecting worlds to collide and probably joke about it.

83
00:05:33,900 --> 00:05:36,820
Now when they do, you actually have a little bit of a mess on your hands.

84
00:05:37,200 --> 00:05:39,200
So amusing, but it's a good trend.

85
00:05:39,380 --> 00:05:45,160
I forget what year it was that, I guess it was called Monad a long time ago that that came out.

86
00:05:45,160 --> 00:05:53,520
But I remember this was back when I was at RedMonk, and I think I even did a video here and there, which has probably, like, disappeared into the nothingness of the Internet.

87
00:05:54,180 --> 00:05:59,180
But it was Jeffrey Snover who was architecting that, and he had been working at Tivoli for a long time.

88
00:05:59,700 --> 00:06:11,000
And I remember the story that he had is he basically, you know, among other things, well, I think he's kind of like the head architect of their server business or something now, or some highfalutin position.

89
00:06:11,940 --> 00:06:20,180
But, you know, it was basically, like, part of what he was hired over is to, like, do this, sort of like, hey, we should make Windows more Linux and Unix-like.

90
00:06:20,380 --> 00:06:28,900
And I remember him telling me that the first thing that he spent a lot of time saying is that in the Linux world, people use the command line.

91
00:06:30,400 --> 00:06:31,120
There we go.

92
00:06:31,280 --> 00:06:38,260
Which, you know, speaking of, like, a Zen presentation, that would have been a good single-slide presentation for, like, a multi-day meeting, right?

93
00:06:38,340 --> 00:06:41,280
Like, you know, like, what does it mean to use the command line?

94
00:06:41,380 --> 00:06:49,920
And naturally, I think what, if you think about, at least the way that I think about PowerShell is sort of, like, the implementation of that in Windows land.

95
00:06:50,160 --> 00:07:04,000
And I remember some of the first things were, like, you know, you could basically do batch changes over multiple machines with PowerShell things and configure everything that you were sort of used to bucking around in a GUI for.

96
00:07:04,320 --> 00:07:15,340
And before that, like, right around that time, thankfully, I'd just been, well, I mean, for this story at least, and I guess also for myself, but I'd been working at BMC on their, like, some of their Windows monitoring stuff.

97
00:07:15,420 --> 00:07:26,840
So I had this weird passing understanding of, like, WMI and Windows internals, and it was basically exposing all those Windows internals to a command line interface, which is pretty interesting.

98
00:07:26,960 --> 00:07:33,340
And I think, I mean, you probably know better than I do at this point, being more in Microsoft land and stack stuff.

99
00:07:33,500 --> 00:07:41,160
But, like, yeah, I mean, it seems like PowerShell is, like, a full-on, like, shell and scripting language.

100
00:07:41,360 --> 00:07:52,720
Like, way beyond even what, I mean, if you were to think about what the command line in the shell in Unix and Linux are, and how, like, anything that's successful in decades old, they're kind of bound to the past.

101
00:07:53,220 --> 00:07:59,500
Like, PowerShell is probably one of the newer, like, complete reinventing of what that idea is and what you would want to do.

102
00:08:00,060 --> 00:08:02,840
Yeah, they've done a nice job with it, a super powerful platform.

103
00:08:02,960 --> 00:08:11,860
That's where, again, I think the benefit you'll see is if I'm a Windows admin who now has these sort of Linux boxes in my purview, I don't have to necessarily completely shift my thinking.

104
00:08:11,980 --> 00:08:16,420
I can actually start pointing this at Linux boxes and doing things in my entire environment.

105
00:08:16,420 --> 00:08:25,720
So, you know, PowerShell is a first-class citizen by Microsoft, but as you say, you're also dealing with an OS on a platform that traditionally has not been very CLI-centric.

106
00:08:25,920 --> 00:08:27,200
It's been more point-and-click.

107
00:08:27,480 --> 00:08:35,620
So, a new way of thinking, I guess I'll also promote the blog post that we put out last week around Bosch for Windows and treating Windows as immutable servers.

108
00:08:35,780 --> 00:08:46,520
This is novel stuff, treating a Windows box as something that you stand up, you tear down, and everything's cool, versus stand it up, apply all these group policies, do all these other things.

109
00:08:47,340 --> 00:08:48,720
That's a very new way of thinking.

110
00:08:48,820 --> 00:08:56,400
It was actually a really good blog post and goes into our thinking about what does it mean to do immutable Windows, which most people have thought was pretty tough to do.

111
00:08:56,900 --> 00:08:58,160
Hmm, immutable Windows.

112
00:08:58,520 --> 00:09:03,080
That sounds like those Windows we used to have in the co-op I lived in college that you could never open.

113
00:09:03,800 --> 00:09:08,020
And you might have to be careful that you paid the extra for the AC if you were in one of those rooms.

114
00:09:08,260 --> 00:09:15,680
Can you imagine, like in the 90s, you could actually rent a college room in Austin, Texas without AC?

115
00:09:16,080 --> 00:09:17,460
I was thinking about that the other day.

116
00:09:17,540 --> 00:09:18,400
That's just insanity.

117
00:09:18,900 --> 00:09:26,380
No, I try to think of how my parents had jobs with cars with no air conditioning and how did they possibly not get to work as a sopping mess.

118
00:09:26,600 --> 00:09:28,160
And it's just a different world back then.

119
00:09:28,460 --> 00:09:28,680
Yeah.

120
00:09:29,200 --> 00:09:35,100
Clearly, clearly, you know, aside from the last 30 years, humanity was suffering for the eons before that.

121
00:09:35,240 --> 00:09:36,740
I have no idea how it worked out.

122
00:09:36,860 --> 00:09:37,940
Just all dumb luck.

123
00:09:37,940 --> 00:09:42,000
It proves that UFOs must have exist because they had to come down and help us.

124
00:09:44,020 --> 00:09:47,260
So, you know, related nothing to that, I guess.

125
00:09:48,220 --> 00:09:52,620
What's this item about Salesforce having an AI called Einstein?

126
00:09:53,560 --> 00:09:57,500
Yeah, I mean, they're apparently going to announce something coming up at their upcoming conference.

127
00:09:57,700 --> 00:09:59,160
I think, you know, this jumped out at me.

128
00:09:59,240 --> 00:10:00,720
It's an AI product called Einstein.

129
00:10:01,140 --> 00:10:04,380
You can imagine, you know, it was light on details in terms of the stories.

130
00:10:04,480 --> 00:10:08,820
But you can think about it as you're doing complex CRM and sales managing campaigns,

131
00:10:08,920 --> 00:10:14,180
that there could be some value in doing machine learning or AI or bots or something as you're interacting with customers.

132
00:10:14,620 --> 00:10:21,660
But this just seems to be this constant drumbeat that AI is starting to hit the masses among tech companies.

133
00:10:21,660 --> 00:10:23,580
You're seeing some of these things come in real life.

134
00:10:23,660 --> 00:10:30,200
Microsoft just bought some natural language and AI-type company last week that they might try to mix into office-based stuff.

135
00:10:30,440 --> 00:10:35,680
And, again, if I'll plug something that I've enjoyed reading, Jack Clark, former journalist for Bloomberg and Register,

136
00:10:35,860 --> 00:10:38,280
has an AI newsletter, which is really good.

137
00:10:38,340 --> 00:10:40,100
It has some really good stories in there every week.

138
00:10:40,600 --> 00:10:45,140
And even if you're not in that space, I can understand if you're deep in the bowels of an insurance company,

139
00:10:45,140 --> 00:10:46,400
you might not think about AI.

140
00:10:47,340 --> 00:10:54,360
But these are areas where it's probably good to just know what things are going on because this might be one of these things that bum rushes us.

141
00:10:54,400 --> 00:11:00,260
And all of a sudden it's embedded into a lot of tech and a lot of libraries are available that all of a sudden you might want to know what's going on.

142
00:11:00,300 --> 00:11:01,660
So it's a fun thing to keep an eye on.

143
00:11:02,060 --> 00:11:03,640
Watch out for the cyber bums.

144
00:11:04,180 --> 00:11:04,700
That's what you got.

145
00:11:05,120 --> 00:11:05,360
Yeah.

146
00:11:05,460 --> 00:11:13,840
You know, I'm always, I don't know, I guess a skeptic on AI stuff, mostly just not that it's not possible,

147
00:11:14,060 --> 00:11:17,140
but I'm always just curious what the applications are.

148
00:11:17,240 --> 00:11:19,980
And it's like a lot of stuff that I'm skeptical on the tech world.

149
00:11:20,060 --> 00:11:25,700
It's like I'm more skeptical as a forcing function for like, why don't you talk about the practical things?

150
00:11:25,700 --> 00:11:27,640
And like, I can think of one thing.

151
00:11:27,700 --> 00:11:34,800
I remember there's, I think it's like AI.x and it's some service you can sign up for, for like scheduling meetings.

152
00:11:35,020 --> 00:11:37,720
And you just like CC them and they've got cutesy names.

153
00:11:37,900 --> 00:11:40,160
You can either get like Jane or John or something.

154
00:11:40,320 --> 00:11:43,020
And you can, if we were to have a meeting, right?

155
00:11:43,060 --> 00:11:44,840
Someone's like, hey, Coté, we should have lunch.

156
00:11:45,320 --> 00:11:51,140
And, and then I, I would, I would reply back to them and CC Jane or John and be like, Jane, can you schedule us lunch?

157
00:11:51,480 --> 00:11:58,000
And then it would like the AI thing or it would sort of figure out like emailing back and forth to figure out where to go and when and everything.

158
00:11:58,000 --> 00:11:59,580
And like that, that would be kind of nice.

159
00:11:59,580 --> 00:12:08,080
And so, you know, I tried it a little bit and it's, it's, uh, it might be my problem, but it's the equivalent of like, I never want to use like a travel agent to book my travel.

160
00:12:08,180 --> 00:12:08,540
Right.

161
00:12:08,560 --> 00:12:11,560
Like, it's just like, I have too many opinions and I want to tweak it too much.

162
00:12:11,560 --> 00:12:14,240
So maybe that's the issue, but just like, yeah.

163
00:12:14,240 --> 00:12:17,140
And we have one of those, uh, those Amazon echo things.

164
00:12:17,140 --> 00:12:20,500
So every now and then we're telling Alexa stuff, but Alexa is not too bright.

165
00:12:20,680 --> 00:12:22,260
That's more like speech recognition.

166
00:12:22,560 --> 00:12:23,100
No, I know.

167
00:12:23,120 --> 00:12:28,540
That's the thing is I don't think we all, I finished a good book recently was talking about the complexity of technology.

168
00:12:28,540 --> 00:12:35,080
And one of these things that you can either fall into multiple camps, either you are just in awe of technology, which is a dangerous place to be.

169
00:12:35,140 --> 00:12:37,440
You need to understand what things are, or you can fear it.

170
00:12:37,440 --> 00:12:39,120
Like you have to be Skynet and that's not good.

171
00:12:39,500 --> 00:12:42,340
You need to have this sort of like healthy respect for tech.

172
00:12:42,340 --> 00:12:45,660
And even with AI, I think a lot of people just don't trust algorithms yet.

173
00:12:45,740 --> 00:12:54,500
I mean, I drove to Vancouver, British Columbia this last weekend from Seattle and, you know, I used my mapping technology and there still be times where you take some ridiculous looking route.

174
00:12:54,760 --> 00:12:57,840
And it's just like a stupid algorithm, you know, you just yell at it.

175
00:12:58,160 --> 00:13:00,160
I just don't think we have a lot of faith yet.

176
00:13:00,800 --> 00:13:05,460
If we really had to put our entire trust in these things, that it's making all the right decisions.

177
00:13:05,460 --> 00:13:09,040
And maybe we're getting there when we have self-driving cars and planes with no pilots.

178
00:13:09,040 --> 00:13:14,400
But right now, you know, I still can't trust, you know, my hand going under the sink that it'll actually turn the water on.

179
00:13:14,600 --> 00:13:16,600
I'm not ready to have a driverless car.

180
00:13:16,820 --> 00:13:19,160
Yeah, maybe like mapping stuff.

181
00:13:19,260 --> 00:13:24,180
I'm sure some highly nerded out AI person would say that's not AI.

182
00:13:24,440 --> 00:13:25,700
But like that feels like AI.

183
00:13:25,880 --> 00:13:30,600
Like I was, to fill more anecdotes in here, I was using Waze the other day.

184
00:13:30,940 --> 00:13:34,700
And, you know, I was going from one highway to the other that I drive all the time.

185
00:13:35,160 --> 00:13:37,840
And it told me to go on the frontage road instead of the flyover.

186
00:13:38,920 --> 00:13:40,340
And I was like, well, that's stupid.

187
00:13:40,460 --> 00:13:41,320
So I went on the flyover.

188
00:13:41,380 --> 00:13:43,060
And sure enough, there was a wreck on the flyover.

189
00:13:43,180 --> 00:13:44,820
So I just sat there for a long time.

190
00:13:45,540 --> 00:13:45,860
Right?

191
00:13:45,960 --> 00:13:56,100
And it was, it's, again, like that's, that's not really like complicated AI that's going to go and like, you know, read about enlightenment and go sequester themselves off somewhere to talk with each other.

192
00:13:56,400 --> 00:13:59,280
But like, like it's, it's, it's, it's pretty nice.

193
00:14:00,580 --> 00:14:00,940
Right?

194
00:14:00,940 --> 00:14:11,100
Like that, even that level of, of, of AI, we could call it artificial compute conclusions, just like helping me make conclusions would be nice that.

195
00:14:11,440 --> 00:14:13,700
Yeah, we'll, we'll keep seeing more machine learning.

196
00:14:13,820 --> 00:14:20,660
I think if you're any enterprise, this just drives an importance on making sure you're collecting good data, you're having figuring out ways to ask questions of it.

197
00:14:20,700 --> 00:14:24,560
And at some point, maybe you can have things that make decisions based on it.

198
00:14:24,560 --> 00:14:27,460
But, you know, step one is if you don't have data, you can't train a model.

199
00:14:27,820 --> 00:14:28,980
AI is meaningless to you.

200
00:14:29,020 --> 00:14:30,720
Same with machine learning, those sorts of things.

201
00:14:30,940 --> 00:14:32,720
Yeah, you got to edumacate them.

202
00:14:32,780 --> 00:14:32,960
Right.

203
00:14:33,080 --> 00:14:33,900
Get them learned up.

204
00:14:34,260 --> 00:14:42,920
Well, also this week, to close out our new stuff a little bit, or this is last week, actually, the, there was finally an announcement that Rackspace was going to be acquired.

205
00:14:42,920 --> 00:14:44,520
That, which is to say, go private.

206
00:14:44,620 --> 00:14:48,820
I don't know much about the Apollo Global Management LLC.

207
00:14:49,680 --> 00:14:58,960
In some article I read, they said that they also had bought the security company ADT, which, you know, not, not, not to be all, you know, a scan side.

208
00:14:59,020 --> 00:15:05,940
But that sounds like the kind of thing that you write when you search in a database and you just plop that in a paragraph, like, of all the coverage.

209
00:15:06,020 --> 00:15:10,200
So I think it's like, was it 4.3 billion that they're being sold for?

210
00:15:10,240 --> 00:15:12,120
And of course, it's got to close and all that stuff.

211
00:15:12,240 --> 00:15:16,700
But, you know, that was the thing I was most curious about is like, who are these Apollo people?

212
00:15:16,800 --> 00:15:26,240
Like, I know they can play a liar really good, but other than that, and they get really upset if you try to, like, you know, try to compete against them, they might skin you and hang you upside down on a tree.

213
00:15:26,400 --> 00:15:27,480
You got to watch out for that.

214
00:15:27,880 --> 00:15:29,800
But other than that, what's their deal?

215
00:15:30,520 --> 00:15:30,720
Yeah.

216
00:15:30,980 --> 00:15:35,940
I don't know if it is a shadowy finance group or they've all just have tons of good finance stuff.

217
00:15:36,020 --> 00:15:39,460
I think it was, you know, 4.3 billion is not selling for spare parts.

218
00:15:39,740 --> 00:15:43,960
So you are clearly identifying this as a very good asset that you plan on doing something with.

219
00:15:44,220 --> 00:15:51,740
I think that's going to be the interesting part is when it's great they're private, they can probably be more focused on certain things now, but they've already shed some parts of the business.

220
00:15:52,000 --> 00:15:54,320
And the question is, how much of a leash do you have?

221
00:15:54,740 --> 00:15:56,920
You know, I think you and I have been through acquisitions.

222
00:15:57,600 --> 00:16:01,440
You know, many things sound great until certain things start to hit the fan.

223
00:16:01,800 --> 00:16:08,040
So hopefully things go fantastic for them as they double down on being a managed service provider across clouds and things like that.

224
00:16:08,880 --> 00:16:17,180
So from my experience, you don't typically get a long leash or a lot of time to show value when you have an impatient parent.

225
00:16:17,620 --> 00:16:17,740
Yeah.

226
00:16:17,920 --> 00:16:18,140
Yeah.

227
00:16:18,280 --> 00:16:24,480
Well, we on my other podcast, Software Defined Talk podcast, we talked about this at length last week.

228
00:16:24,720 --> 00:16:29,580
And I also wrote up some little highlights over on my blog that I'll put in the show notes over at Coté.io.

229
00:16:29,680 --> 00:16:33,860
But I think, you know, the only other notable thing I would say is, well, there's two things.

230
00:16:33,860 --> 00:16:44,320
One, you know, we talked about the IaaS magic quadrant a while ago, where Rackspace is in the, they're high up in it, but they're kind of in the dreaded lower left-hand quadrant.

231
00:16:44,520 --> 00:16:49,040
Now, that said, there's a managed cloud magic quadrant that they're the leader in.

232
00:16:49,220 --> 00:16:51,980
So I think that's the way they've been repositioning themselves.

233
00:16:52,220 --> 00:16:55,620
So it depends what glasses you look at them through.

234
00:16:56,240 --> 00:17:00,960
And also, I mean, it's, I think, I think pursuing that strategy seems to be interesting.

235
00:17:00,960 --> 00:17:09,800
And I think if you look at our, our customer base, like the idea of having a managed cloud seems to be very appealing, right?

236
00:17:09,820 --> 00:17:12,460
Like, like having someone take care of that for them.

237
00:17:12,460 --> 00:17:18,840
Like, I think most of the customers we have, or at least that I talk with, would be quite interested in that in the preceding years.

238
00:17:19,500 --> 00:17:26,620
Yeah, the hard part is, yeah, you like when it's managed, but then you don't like the lack of agility of, I just want to do stuff.

239
00:17:26,700 --> 00:17:28,600
I don't want to open a ticket with a managed provider.

240
00:17:28,760 --> 00:17:37,460
So there's always this weird place of, look, I'm trying to be more agile, but I'm still giving the keys to the kingdom, to someone who has great processes to operate lots of different customers.

241
00:17:38,040 --> 00:17:39,560
So, yeah, I don't know.

242
00:17:39,600 --> 00:17:40,360
The jury will be out there.

243
00:17:40,440 --> 00:17:43,000
Clearly, they make good money there, as do other managed providers.

244
00:17:43,000 --> 00:17:47,620
But is that the future in this sort of self-service, automation-driven world?

245
00:17:47,720 --> 00:17:48,500
I don't know.

246
00:17:48,860 --> 00:17:49,060
Yeah.

247
00:17:49,080 --> 00:17:49,960
It'll be interesting to see.

248
00:17:50,260 --> 00:17:50,460
Yeah.

249
00:17:50,580 --> 00:17:52,520
You've got to have a really fast ticket desk.

250
00:17:53,040 --> 00:17:54,640
That's the innovation that needs to happen.

251
00:17:55,020 --> 00:18:04,880
So just as a pointer, so I, last week I also point, I've been working on trying to, we get asked about return on investment a lot, as you can imagine, being an enterprise software vendor.

252
00:18:05,160 --> 00:18:09,660
And I took a first drafty kind of rambly pass at writing up something there.

253
00:18:09,800 --> 00:18:19,580
I'll put a link to it, but I have it over on my Medium blog, and hopefully sometime I'll write some, what you might call, professional versions of that, instead of me kind of ranting about it.

254
00:18:19,620 --> 00:18:22,260
But I would be curious for listeners for this.

255
00:18:22,340 --> 00:18:31,040
Like, when it comes to, and as I define it in that piece, ROI basically usually means a lot of different things, not just a straight-up return on investment.

256
00:18:31,040 --> 00:18:41,000
And it's usually when someone asks for ROI to do Agile or DevOps or Cloud Native or use a platform, what they're saying is, help me justify spending money on this.

257
00:18:41,780 --> 00:18:41,860
Right?

258
00:18:41,980 --> 00:18:49,840
Like, and one way of doing that is to show that if I spend this amount of money in time, I will get a return on that investment and we will make profit from it.

259
00:18:49,840 --> 00:18:54,480
Which, for something like Agile, is kind of weird to think about how you would do that.

260
00:18:54,720 --> 00:18:58,360
It's sort of like, you know, what's the ROI on brushing my teeth every day?

261
00:18:58,840 --> 00:19:03,640
It's sort of a long-term, there's no pivot table for that, that has a short time horizon.

262
00:19:04,540 --> 00:19:07,300
And that's, let me take a note, pivot table for brushing teeth.

263
00:19:08,180 --> 00:19:17,780
Anyways, I'm always curious to have people's realistic input on how they, in their own business justifications, have done ROI and things like that.

264
00:19:17,880 --> 00:19:31,820
Because despite the fact that people are always asking for a spreadsheet to do it, my theory is that every single time it's something slightly different for something like for Agile and higher-level stuff up the stack.

265
00:19:33,040 --> 00:19:33,720
Fair enough.

266
00:19:34,020 --> 00:19:44,620
So, with that, what's the topic we have this week, like I was saying at the beginning, is to go over, basically, Spring Cloud services and Netflix OSS and all those things.

267
00:19:44,700 --> 00:19:46,160
So, why don't you tee that up?

268
00:19:46,420 --> 00:19:48,600
Yeah, I mean, this is, to some extent, self-serving.

269
00:19:48,720 --> 00:19:56,660
Since I've signed up to write a white paper on Spring Cloud and Netflix OSS for Pivotal, I thought I'm going to road test some ideas with Coté and our illustrious audience.

270
00:19:56,660 --> 00:20:01,080
So, but it also fits, clearly, into our circle of code discussion.

271
00:20:01,200 --> 00:20:08,060
We talked, what, last week, two weeks ago, about, last week, about project management or, you know, using Pivotal Tracker.

272
00:20:08,180 --> 00:20:11,920
And this idea of how do you start to collect stories that drive your Agile work.

273
00:20:12,140 --> 00:20:18,380
And, you know, the next part of this circle, and if you get a chance to view Ansi, he's our VP of engineering.

274
00:20:18,500 --> 00:20:23,380
This video on YouTube from the Pivotal kickoff earlier this year or the one from SpringOne, which was great.

275
00:20:23,720 --> 00:20:27,100
This idea of saying software development happens in a rhythm.

276
00:20:27,360 --> 00:20:28,700
It's not a one-and-done exercise.

277
00:20:28,700 --> 00:20:35,720
It's often about the idea through development, through testing and deployment, to collecting feedback, to incorporating that feedback.

278
00:20:36,020 --> 00:20:39,680
And you're constantly iterating in, like, a circle, as we love circle shapes.

279
00:20:40,100 --> 00:20:46,400
So, one of the pieces of development is, you know, how am I accelerating what I'm building here?

280
00:20:46,400 --> 00:20:54,080
And so, the Netflix OSS group, if, you know, I don't know if anybody on this podcast does not know who Netflix is.

281
00:20:54,140 --> 00:21:06,360
But when you're talking about 80-plus million customers, many of those international, 30-plus million now, you know, at peak times, representing over 30% of network bandwidth in the country with people streaming.

282
00:21:06,720 --> 00:21:10,240
So, they solve problems at scale that probably few companies see.

283
00:21:10,780 --> 00:21:24,440
And so, when they've been an Amazon customer for years, but, you know, as the platform was still growing and as their use cases were so edge in terms of their volume and their processing, they've built a ton of services and tools to help them operate at scale.

284
00:21:24,840 --> 00:21:28,960
And so, they've open-sourced nearly all of it, obviously, the stuff they talk about.

285
00:21:29,380 --> 00:21:38,040
And so, they define Netflix OSS as this kind of layer for reliability, for processing, that helps them do the things they need to do at high availability.

286
00:21:38,280 --> 00:21:49,580
Anytime you read stories about, you know, Amazon US East 1 going down, Netflix is rarely ever impacted because they have simply built for a level of resilience that, frankly, I don't think many do.

287
00:21:50,120 --> 00:21:58,500
But, what's interesting about all of this is, and Adrian Cockroft mentioned this at his SpringOne keynote, is these are now solved problems.

288
00:21:58,980 --> 00:22:10,940
And so, you have these questions or these decisions of, do I reinvent the wheel from things that, you know, Netflix processes billions of requests per day through Zool and some of their edge stuff?

289
00:22:11,480 --> 00:22:12,680
Am I going to do better than that?

290
00:22:12,800 --> 00:22:13,620
Do I need to?

291
00:22:13,820 --> 00:22:18,040
And so, they have some really cool tech that says, look, this has now been done.

292
00:22:18,500 --> 00:22:19,420
How do I use it?

293
00:22:19,460 --> 00:22:25,360
And then, with Spring Cloud, we partnered with them, Pivotal, what, a year or so ago, and said, let's make this stuff more consumable.

294
00:22:25,480 --> 00:22:30,440
Because I can go to the open-source repo, download bits, and run Eureka myself.

295
00:22:30,600 --> 00:22:31,940
I absolutely can do those things.

296
00:22:31,980 --> 00:22:33,260
We'll talk through some of these services.

297
00:22:33,840 --> 00:22:34,900
But should I be doing that?

298
00:22:34,920 --> 00:22:37,320
Is that the best thing to be fiddling with this for a few days?

299
00:22:37,460 --> 00:22:45,340
Or would it be great if I just add some annotations in my Spring Boot app, and all of a sudden, I've got, you know, circuit breakers, or I've got things like that?

300
00:22:45,400 --> 00:22:55,420
So, the idea of how do I operationalize and productize these libraries to make them just brain-dead simple to consume, while still not losing any of the power, we've baked it into Spring Cloud.

301
00:22:55,420 --> 00:23:04,740
And then, with Spring Cloud services, those are the ones that run cleanly, natively on Pivotal Cloud Foundry, just with a button click, deploy out the config server, deploy out things like that.

302
00:23:05,260 --> 00:23:07,340
That's kind of the history of where some of this comes from.

303
00:23:07,460 --> 00:23:14,020
So, then, kind of starting from the top and then getting down to the components, there's basically, I don't know what top is.

304
00:23:14,100 --> 00:23:15,320
It's more like a chronology.

305
00:23:16,160 --> 00:23:27,520
But there's, so Netflix writes all this stuff to basically handle their big distributed microservices-based application that allows us to watch videos.

306
00:23:28,180 --> 00:23:29,280
All in the cloud, though.

307
00:23:29,440 --> 00:23:32,500
Yeah, and, you know, does a bunch of other stuff as well.

308
00:23:32,500 --> 00:23:38,780
And, you know, no one's going to get more upset than someone who just started to try to watch, like, what's that strange thing show?

309
00:23:38,880 --> 00:23:40,660
And episode six doesn't come up.

310
00:23:40,780 --> 00:23:42,200
So, they need some resiliency.

311
00:23:42,900 --> 00:23:45,460
Or people are going to get really pissed, as it were.

312
00:23:45,920 --> 00:23:52,540
And so, they write all this stuff to be able to be a resilient distributed system.

313
00:23:53,080 --> 00:23:55,840
And then, they decide they want to open source it, whenever that is.

314
00:23:56,100 --> 00:24:00,720
And then, along comes, so you've got Netflix OSS, and they have a bunch of their own separate stuff.

315
00:24:00,860 --> 00:24:06,280
And then, so we have Spring Cloud, which takes a lot of that stuff, and probably some other things as well,

316
00:24:06,680 --> 00:24:14,360
and bundles it in a Spring way that makes it, on its own, just easier to consume by Spring's opinion.

317
00:24:15,480 --> 00:24:22,480
Like, that's always, that seems to be a lot of what Spring Frameworks people's ethos, I guess, is always.

318
00:24:22,600 --> 00:24:28,780
It's like, let's focus on getting maximum usability for this API and layer it around there.

319
00:24:28,860 --> 00:24:34,600
And then, the next thing is that, if you have Pivotal Cloud Foundry, the use of Spring Cloud services,

320
00:24:34,800 --> 00:24:41,180
and therefore, much of Netflix OSS, is basically baked into and pre-configured and wired up in Pivotal Cloud Foundry,

321
00:24:41,280 --> 00:24:49,320
so that you don't really have to spend much time at all, especially as a developer, setting it up or configuring it to work with each other.

322
00:24:49,380 --> 00:24:51,640
It just sort of works out of the box, if you will.

323
00:24:51,880 --> 00:24:57,000
Yeah, I mean, if the job is to bootstrap devs so that they're writing the stuff that matters, right?

324
00:24:57,000 --> 00:25:06,120
Business logic, experience with customers, getting to do that faster, this sort of stuff, which is scaffolding, which is plumbing, super powerful plumbing,

325
00:25:06,460 --> 00:25:10,300
but it's plumbing nonetheless, you know, your customers should just see a resilient app.

326
00:25:10,400 --> 00:25:12,480
They're not going to ever see these services.

327
00:25:12,660 --> 00:25:16,000
These are something that help you stay online at all times or be durable, whatever.

328
00:25:16,540 --> 00:25:22,880
So, I think it's that mix of saying, look, as a dev, if my job is to get into building awesome stuff first,

329
00:25:23,240 --> 00:25:29,860
then I don't want to necessarily have all this other bootstrapping of getting projects stood up, figuring out these libraries, standing them up somewhere.

330
00:25:30,100 --> 00:25:36,100
If I can just kind of have that baked into my framework, sometimes with opinions, so they're not as flexible maybe as just doing it raw,

331
00:25:36,460 --> 00:25:38,500
I'm just getting to more meaningful work faster.

332
00:25:39,080 --> 00:25:40,240
And there's something to that.

333
00:25:42,400 --> 00:25:47,540
So, then let's walk through, like, the components of it, like, what makes up this thing?

334
00:25:48,540 --> 00:25:50,060
Yeah, they've got a handful of categories.

335
00:25:50,180 --> 00:25:55,080
If you go to the netflix.github.io, it's kind of their landing page for all sorts of projects.

336
00:25:55,300 --> 00:26:00,880
And they've got tons of categories, big data, runtime services, where we're going to spend our time, content encoding.

337
00:26:01,120 --> 00:26:06,080
You can imagine they've just got petabytes of content, data persistence, reliability, security.

338
00:26:06,400 --> 00:26:14,840
But when we look at the Netflix OSS services we're thinking about, and again, for the layperson, the one you may have heard of is things like Chaos Monkey.

339
00:26:15,280 --> 00:26:24,100
Now, Chaos Monkey is kind of the famous one from Netflix that just kind of turns off things within a particular area of the cloud for them.

340
00:26:24,180 --> 00:26:25,180
They just turn boxes off.

341
00:26:25,320 --> 00:26:28,320
And the premise is, their system should keep working.

342
00:26:28,500 --> 00:26:34,240
So, this is almost a test in production sort of service that says, let me just go in there and randomly turn things off.

343
00:26:34,340 --> 00:26:37,200
And if I've built my system correctly, that shouldn't impact anything.

344
00:26:37,700 --> 00:26:38,840
Things should be self-healing.

345
00:26:39,000 --> 00:26:40,060
Things should be discoverable.

346
00:26:40,500 --> 00:26:46,600
Now, I contend if you unleashed Chaos Monkey within most enterprise data centers, you'd probably shut the business down in four minutes.

347
00:26:47,000 --> 00:26:49,580
And that's just, you know, the nature of how they've built apps.

348
00:26:49,620 --> 00:26:51,360
It's not necessarily, it just is.

349
00:26:51,400 --> 00:26:56,280
So, they've also built some other chaos things in their family that turn off a whole region and things like that.

350
00:26:56,320 --> 00:27:04,960
And the idea is, to really test resiliency, you've got to be able to lose components all over the place in ways you might not have thought of and prove that things work.

351
00:27:05,040 --> 00:27:06,780
Now, there's no Chaos Monkey in Spring Cloud.

352
00:27:06,940 --> 00:27:08,480
It doesn't really have that same concept.

353
00:27:08,880 --> 00:27:11,220
But that's really the most famous of the Netflix services.

354
00:27:11,320 --> 00:27:18,600
When you get into the ones that are in Spring Cloud Netflix, it's a more famous one.

355
00:27:18,640 --> 00:27:20,620
So, you have Eureka, if you've come across that.

356
00:27:20,620 --> 00:27:28,980
That is, service discovery in this microservices-y world where, you know, instead of two monolithic apps, I have 400 microservices.

357
00:27:29,560 --> 00:27:33,340
The question is, how do I find stuff for load balancing purposes or what have you?

358
00:27:33,600 --> 00:27:36,520
How do I know that the order service is here so I can call it?

359
00:27:36,580 --> 00:27:41,720
Now, there's also a whole school of thought that says, well, service discovery is, I don't like that concept anyway.

360
00:27:41,800 --> 00:27:45,940
I wish I just had a message bus that could pass messages and say, hey, here's a new order.

361
00:27:46,120 --> 00:27:47,140
You do something with it.

362
00:27:47,180 --> 00:27:48,480
I don't want to look up an order service.

363
00:27:48,480 --> 00:27:51,020
I just want to have all these things hanging off a bus.

364
00:27:51,240 --> 00:27:53,060
And that could be cool and that could work.

365
00:27:53,420 --> 00:27:57,860
But there may be synchronous examples where I need, like, give me Coté's customer record.

366
00:27:58,400 --> 00:27:59,640
Maybe that doesn't go through a bus.

367
00:27:59,760 --> 00:28:01,540
Like, there's reasons to know that's the service.

368
00:28:01,740 --> 00:28:06,820
And even in that case, you need some sort of directory that tells you how to get to the bus, right?

369
00:28:06,860 --> 00:28:09,200
Like, no one's born at the bus stop.

370
00:28:09,780 --> 00:28:12,740
Like, you have to know, like, how to locate yourself to it.

371
00:28:13,020 --> 00:28:23,260
And it is, I mean, that's, you know, going back to, that's the, it's sort of the my daughter versus people who don't tell you what they're doing model of broadcasting versus looking things up.

372
00:28:23,420 --> 00:28:27,800
And so it seems to me, I mean, Eureka is basically a directory, right?

373
00:28:27,900 --> 00:28:35,940
Like, as we used to call it in the JEE world, I don't know what they call it in .NET land, but, you know, there used to be like JNDI and all that.

374
00:28:36,000 --> 00:28:44,600
And, like, it's sort of like the first step to any application that uses the network, get a hold of the thing that tells you about other things.

375
00:28:45,420 --> 00:28:48,960
And there's all sorts of, like, gymnastics you always go through.

376
00:28:49,060 --> 00:28:56,120
It's almost like it's the prime mover thing of, like, you know, who tells the network thing where the network is.

377
00:28:56,300 --> 00:28:58,660
Like, eventually, someone has to give you some information.

378
00:28:59,000 --> 00:29:11,500
But at least in general, in a larger system, you just go to something like Eureka or the directory to say, like, where's my thing that does, I don't know, that looks up what movie to stream or authorizes this customer or do this thing.

379
00:29:11,940 --> 00:29:13,340
And that's kind of basic.

380
00:29:13,420 --> 00:29:25,760
Now, I'm no expert on all this stuff, but it seems like something that Eureka does that's slightly different than traditional directories is it has a fair amount of, like, health checks and monitoring built into it.

381
00:29:25,900 --> 00:29:31,360
So, I guess maybe it's also a source of, like, is this thing healthy or are there healthier ones that you could use?

382
00:29:31,980 --> 00:29:38,420
Yeah, there's a lot of good integration with some of their other libraries that do things around, you know, other load balancing and circuit breakers.

383
00:29:38,520 --> 00:29:45,620
So, Eureka is unique from just traditional, you know, Amazon Elastic Load Balancer or their DNS service because it also does local stuff.

384
00:29:45,760 --> 00:29:47,880
So, there's a client and a server, if you will.

385
00:29:47,880 --> 00:29:53,360
So, my web app actually pulls things into memory about where my different services are in the directory.

386
00:29:53,600 --> 00:29:56,760
And then it can make local decisions about, well, let me route to here or to here.

387
00:29:56,940 --> 00:30:01,320
And so, there's some smarts that say, let's not just have a single point of failure on my registry either.

388
00:30:01,780 --> 00:30:03,840
Let's actually push some of that data to each client.

389
00:30:03,940 --> 00:30:06,660
They can make local decisions and then just refresh regularly.

390
00:30:07,280 --> 00:30:08,980
So, a neat model.

391
00:30:09,060 --> 00:30:13,140
And again, Netflix builds these things because they don't see it in the core service.

392
00:30:13,140 --> 00:30:17,720
And then we all reap the benefit of a more intelligent sort of ecosystem here.

393
00:30:18,300 --> 00:30:24,000
And this is one of those that's like, ultimately, you can configure it with like a Git repo or something, right?

394
00:30:24,780 --> 00:30:26,360
Yeah, I mean, pretty simple stuff.

395
00:30:26,400 --> 00:30:28,640
And this is one that's also baked into Spring Cloud services.

396
00:30:28,800 --> 00:30:33,660
So, if you're a PCF customer today, this is a button click to get your service discovery set up.

397
00:30:33,920 --> 00:30:39,260
So, it's a little different than config server, which does, you know, use a Git backend and things like that for just config values.

398
00:30:39,660 --> 00:30:44,160
But when I do need to look up my stuff, I don't remember all the backing stores for Eureka.

399
00:30:44,300 --> 00:30:46,180
But it's nice to have, I think you have some choices there.

400
00:30:46,680 --> 00:30:52,620
And then, you know, last item, it sets the stage that there's going to be a lot of silly names for things.

401
00:30:53,200 --> 00:30:56,020
Nothing is named like some serious adult stuff.

402
00:30:56,460 --> 00:30:57,920
It's all fun stuff.

403
00:30:58,280 --> 00:30:59,540
Not with that many microservices.

404
00:30:59,800 --> 00:31:01,700
It's one thing when you get two services, right?

405
00:31:01,720 --> 00:31:03,280
You can go with some Lord of the Rings characters.

406
00:31:03,400 --> 00:31:07,980
But now you're going like B-side when you get the 400 microservices to name these things uniquely.

407
00:31:08,200 --> 00:31:10,100
You'd have to use the Simpsons naming scheme.

408
00:31:10,100 --> 00:31:13,140
I think that's the broadest universe available.

409
00:31:14,440 --> 00:31:16,360
The extended Marvel universe something.

410
00:31:16,540 --> 00:31:19,920
You're clearly hitting the long tail of names here.

411
00:31:21,180 --> 00:31:29,400
Yeah, so the second one, which it starts to get more advanced, but Hystrix, which, I don't know, sounds like something my doctor gives me a cream for.

412
00:31:29,720 --> 00:31:32,100
But it's meant for a circuit breaker.

413
00:31:32,280 --> 00:31:40,700
So, this idea of, you know, as I have more and more services, you know, Coté, you're probably familiar with this idea of, you know, you look at nines.

414
00:31:40,840 --> 00:31:42,740
Everyone wants five nines, three nines, whatever.

415
00:31:43,320 --> 00:31:46,180
If I have, you know, they have the example on their web page.

416
00:31:46,180 --> 00:31:48,220
I think it's 4D services with three nines.

417
00:31:48,800 --> 00:31:52,820
You know, on the, you know, even four nines, you can look at that and go, that's pretty good.

418
00:31:53,180 --> 00:31:59,660
But all of a sudden, when you multiply 40 times 999, all of a sudden, I'm still taking a couple hours of downtime a month.

419
00:31:59,660 --> 00:32:04,060
Because you have to do the aggregate of all of those services if my app uses them all.

420
00:32:04,300 --> 00:32:06,900
Like, individually, it's great if you're online all the time.

421
00:32:07,620 --> 00:32:12,180
Collectively, that's not very good when I'm consuming all these services that individually still have downtime.

422
00:32:12,320 --> 00:32:15,860
So, how do I prevent cascading failures is the term.

423
00:32:15,940 --> 00:32:22,000
How do I make sure that if my customer record service is offline, everything doesn't crash to a halt?

424
00:32:22,120 --> 00:32:30,060
And so, the idea of hysterics or a circuit breaker is I'm going to make sure that when I detect an unhealthy service, I kind of open the circuit.

425
00:32:30,180 --> 00:32:30,860
I always do that wrong.

426
00:32:30,960 --> 00:32:31,960
I think I open the circuit.

427
00:32:32,440 --> 00:32:34,420
And, therefore, traffic might not go there anymore.

428
00:32:34,760 --> 00:32:37,920
And I have a fallback service or I might just return some cash data.

429
00:32:38,320 --> 00:32:43,000
And then, over time, it slowly closes the circuit, I think, and lets some data come through.

430
00:32:43,100 --> 00:32:45,460
And then, if it's healthy, it opens it all back up again or closes it.

431
00:32:45,480 --> 00:32:46,840
I don't have electronics, well.

432
00:32:47,280 --> 00:32:49,040
But it follows that model.

433
00:32:49,040 --> 00:32:56,800
But the idea is how do I make sure that a bad service gets quickly shut off so that my other things that might depend on it don't come crashing to a halt?

434
00:32:57,240 --> 00:32:57,320
Yeah.

435
00:32:57,500 --> 00:33:02,180
You know, I think it took me a long time to figure out, like, why a circuit breaker is good.

436
00:33:02,420 --> 00:33:04,560
I mean, the full picture of it.

437
00:33:04,560 --> 00:33:11,660
Because it seems like, obviously, you know, if it's going to spew a bunch of stuff that's going to bring down your system, you should turn that off.

438
00:33:11,660 --> 00:33:15,880
But then, my thinking was always like, but then it doesn't work.

439
00:33:16,660 --> 00:33:17,060
Right.

440
00:33:17,340 --> 00:33:17,700
Right?

441
00:33:17,820 --> 00:33:17,960
Right.

442
00:33:18,220 --> 00:33:30,520
Like, you know, again, using the Netflix example, if, to greatly simplify, I'm sure, which is a much more complicated system, if I go request, you know, episode six of Strange Things and it's broken,

443
00:33:30,920 --> 00:33:34,240
the circuit breaker, I guess, opens the circuit and I don't get my video.

444
00:33:34,560 --> 00:33:36,000
So, it's broken.

445
00:33:36,720 --> 00:33:49,600
But, you know, on the other hand, I think the goal is that, as you're saying, like, and, you know, a lot of the problems, especially performance problems you encounter in applications are due to, like, cascading problems.

446
00:33:49,600 --> 00:33:52,100
And this thing happened over here that caused this to break.

447
00:33:52,220 --> 00:33:58,460
And there's a reason we have a whole, like, cult of root cause analysis, because you're always having to dig down to see what actually caused the problem.

448
00:33:58,560 --> 00:34:07,920
So, the idea is, if you, to mix the metaphors and make it confusing, if you close off that service, instead of, as you say, open it up.

449
00:34:07,920 --> 00:34:17,320
But if you close off that service, you hopefully can reduce the amount of, like, things further up the stack or upscreen, you know, issues that happen.

450
00:34:18,180 --> 00:34:20,320
But you bring up a great point there.

451
00:34:20,320 --> 00:34:34,220
I think for, like, very complicated distributed applications that are composing together multiple services, this is probably a pattern that you want to use a lot more than in, not so much non-complicated, but sort of, like, vertically integrated things.

452
00:34:34,220 --> 00:34:40,560
Where, you know, there's single calls going down instead of multiple things that you're waiting on that could blow everything up for you.

453
00:34:41,160 --> 00:34:41,240
Right.

454
00:34:41,440 --> 00:34:45,060
No, you made a good point there, specifically among many good points, of course.

455
00:34:45,180 --> 00:34:53,320
But, you know, there's a certain level of responsibility you take on now as a service consumer, because I can't just blindly assume your service is up all the time.

456
00:34:53,400 --> 00:34:59,260
I might need to have, you know, be able to handle cached results, or I need to be able to, you know, do something else.

457
00:34:59,340 --> 00:35:06,440
Hystrix takes care of returning back data from a backup channel or things, but you can't just assume your endpoints are all, your dependencies are always online.

458
00:35:06,900 --> 00:35:09,960
And so even as a service developer, you do have to think a little bit differently.

459
00:35:10,220 --> 00:35:17,680
Yeah, and I guess, I mean, I don't know if this actually fits in the best way of doing it, but I guess you could also have, like, service degradation as sort of a pattern, right?

460
00:35:17,680 --> 00:35:24,440
Like, I can't serve up the HD video, but I can serve up the 480 video or whatever.

461
00:35:24,840 --> 00:35:26,640
Yeah, as a consumer, that's probably better, right?

462
00:35:26,720 --> 00:35:28,240
I mean, there's a fine line.

463
00:35:28,340 --> 00:35:31,780
I think we all know that I would rather have no internet than slow internet sometimes.

464
00:35:31,900 --> 00:35:35,720
I mean, there are certain cases where a degraded experience is actually worse than nothing.

465
00:35:35,980 --> 00:35:38,400
But if you do it right, then sure.

466
00:35:38,600 --> 00:35:42,820
You know, maybe I don't get the weird subtitles at the bottom or the options, but my video playback still works.

467
00:35:42,980 --> 00:35:44,100
I can tolerate that.

468
00:35:44,100 --> 00:35:48,360
Or, again, I'm a banking customer online or I'm, you know, a storefront.

469
00:35:48,760 --> 00:35:56,300
Maybe I can't show you recommended products because that service is offline, but I shouldn't fail to draw the page because I can't show recommended products.

470
00:35:56,740 --> 00:35:59,080
So I think it's just thinking of these components differently.

471
00:35:59,340 --> 00:36:10,280
And then once again, as with all of these things, or most all of them, the other part that makes it valuable, especially when integrated into a full platform, is you have the actual monitoring and management stuff on it, right?

472
00:36:10,280 --> 00:36:22,300
So whether it's like a developer or, I'm putting this in air quotes, a DevOps or an operator or whoever, they can actually see these things happening so that they can try to go fix them.

473
00:36:22,540 --> 00:36:28,220
And you can get a lot of information, especially if you throw in something like Zipkin or Spring Sleuth.

474
00:36:28,320 --> 00:36:33,620
You can start to, like, figure out, like, if something's going wrong and, let's see if I get this right, a circuit opens.

475
00:36:34,140 --> 00:36:36,700
Anyways, you shut down a problem.

476
00:36:37,160 --> 00:36:41,880
You can start going in there and tracing out, like, what problems you might have and things like that.

477
00:36:41,940 --> 00:36:57,040
So the other thing built into most of these tools is once something goes wrong, here's a whole bunch of information you would need to try to fix it in production, not just, you know, dump out a stack trace and go file a ticket and have someone fix it one day.

478
00:36:57,700 --> 00:36:58,060
Right.

479
00:36:58,780 --> 00:36:59,240
No, it's good.

480
00:36:59,240 --> 00:37:02,400
The show notes for this will be Coté and Richard talk electronics.

481
00:37:02,760 --> 00:37:06,240
And, you know, when the zombie apocalypse hits, I will not sign up for electrician.

482
00:37:07,080 --> 00:37:07,320
That's right.

483
00:37:07,480 --> 00:37:10,640
Two software marketers walk into a radio shack.

484
00:37:11,360 --> 00:37:13,160
You can imagine what happens next.

485
00:37:13,800 --> 00:37:14,520
Good times.

486
00:37:15,200 --> 00:37:32,120
So, yeah, I mean, hopefully also the gist you're getting as we talk through these is that, you know, the sort of old client server model of I just build up a web app and I deploy it, you know, that is very different in this world of a lot of distributed components that might span on-prem and cloud or cross-cloud and I've got different availability.

487
00:37:32,120 --> 00:37:35,880
And, you know, everything has gotten more complex so that you can be more agile.

488
00:37:36,280 --> 00:37:42,980
It's just weird, probably sometimes it seems counterintuitive, but, you know, agility is hard to create.

489
00:37:43,500 --> 00:37:49,340
And to do it, you end up using services like this, which give you a lot of awesome controls, but complexity is going up.

490
00:37:51,000 --> 00:37:57,780
The next one is Ribbon, which you'll find out in Spring Cloud, it's not in Spring Cloud Services, but part of Spring Cloud.

491
00:37:57,840 --> 00:37:59,160
This is client-side load balancing.

492
00:37:59,160 --> 00:38:07,320
So, this is the idea of, again, integrating with the registry and others so that it can actually do client-based load balancing within your web app or whatever you've got.

493
00:38:07,720 --> 00:38:10,280
So, it's actually making some of those decisions about where to go.

494
00:38:10,460 --> 00:38:15,680
So, it's just an interesting model versus just having a pure server-based load balance.

495
00:38:15,740 --> 00:38:18,380
It gives you some additional flexibility for how to target workloads.

496
00:38:18,380 --> 00:38:19,580
Right.

497
00:38:19,580 --> 00:38:28,240
And my assumption is, like, this is the kind of thing where having the health information from something like Eureka is helpful.

498
00:38:28,440 --> 00:38:36,180
Because then, speaking of AI or, like, very simple AI, you can start to make some analysis of who you might call reliably and stuff like that.

499
00:38:36,260 --> 00:38:42,180
I mean, I assume that in most distributed systems like this, it's just sort of, like, that's nice.

500
00:38:42,340 --> 00:38:43,800
Let's just do round robin.

501
00:38:44,320 --> 00:38:45,360
Like that.

502
00:38:45,440 --> 00:38:45,920
Exactly.

503
00:38:46,120 --> 00:38:46,820
That seems to be what happens.

504
00:38:46,820 --> 00:38:53,180
And sometimes that is fine, but it is nice to know you've got that local flexibility and not relying on the single server for all of it.

505
00:38:55,540 --> 00:39:04,240
The next one to talk about, Zool, referencing, of course, Ghostbusters, is it's a nice kind of reverse proxy or an edge server.

506
00:39:04,560 --> 00:39:09,920
So, this is something where, again, they send billions and billions of requests through this on a given day.

507
00:39:10,200 --> 00:39:14,500
But the idea of just giving you some more flexibility for routing and things at the edge.

508
00:39:14,640 --> 00:39:16,480
So, I haven't used this as much myself yet.

509
00:39:16,540 --> 00:39:17,740
This is one I haven't stood up.

510
00:39:17,740 --> 00:39:27,800
But the idea of giving you a way to, I think, not really expose a lot of your back-end services, even to the microservices thing, and then have this sort of front-door edge router that sends things.

511
00:39:27,860 --> 00:39:31,820
I don't think it's quite a load balancer, but the idea is it's a smarter routing engine.

512
00:39:33,100 --> 00:39:33,980
That makes sense.

513
00:39:34,480 --> 00:39:42,280
The one that I'm kind of excited about, and we talked about this at SpringOne, we should include some links from SpringOne, but Spinnaker.

514
00:39:42,800 --> 00:39:44,920
So, this is what Netflix built for.

515
00:39:45,120 --> 00:39:45,860
It's open source.

516
00:39:45,960 --> 00:39:47,000
Of course, all this is open source.

517
00:39:47,080 --> 00:39:48,920
But multi-cloud deployment.

518
00:39:49,300 --> 00:39:56,940
So, the idea of I've got my package and I want to go deploy this app to Amazon or I want to deploy it to Cloud Foundry or I want to deploy it to Azure.

519
00:39:57,220 --> 00:39:58,640
All of that through the same tool.

520
00:39:59,420 --> 00:40:00,600
Pretty exciting stuff.

521
00:40:00,600 --> 00:40:02,800
So, there were some good demos at SpringOne.

522
00:40:03,460 --> 00:40:08,240
This just got baked into Spring Cloud, I think, last week as its first milestone.

523
00:40:08,540 --> 00:40:11,760
So, you can just add some annotations and get some Spinnaker apps stood up.

524
00:40:12,260 --> 00:40:13,560
So, pretty cool stuff.

525
00:40:13,640 --> 00:40:16,200
We're actually going to have this deployable on Cloud Foundry itself.

526
00:40:16,300 --> 00:40:18,500
So, the Spinnaker service would run on PCF.

527
00:40:18,640 --> 00:40:21,380
So, you're kind of using Cloud Foundry to deploy to Cloud Foundry.

528
00:40:21,640 --> 00:40:23,180
Don't let your head hurt on that one.

529
00:40:23,480 --> 00:40:29,160
But it's a pretty kind of exciting way to have these multi-cloud deployment tools that is pretty good stuff.

530
00:40:29,220 --> 00:40:33,500
So, that's one you should definitely look at if you're looking at using more than one cloud environment.

531
00:40:33,860 --> 00:40:34,020
Yeah.

532
00:40:34,120 --> 00:40:35,860
You know, this reminds me of something.

533
00:40:36,060 --> 00:40:38,900
I need to go watch the videos from SpringOne platform on this.

534
00:40:38,900 --> 00:40:46,160
But I began to understand that multi-cloud means not only multiple infrastructure clouds you're using.

535
00:40:46,600 --> 00:40:51,240
But within a large organization, you have multiple of your own clouds that you want to deploy to.

536
00:40:51,440 --> 00:40:55,680
You know, whether they're, you know, development and staging and all these different environments are geographic.

537
00:40:55,860 --> 00:41:04,880
And I think more and more when you look at the Pivotal Cloud Foundry customer base, they're in this situation where they have multiple clouds that they own.

538
00:41:05,240 --> 00:41:13,140
And so, they need to have consistent ways of deploying and using them, which is a whole other angle on multi-cloud that I think most people don't think about at first.

539
00:41:14,360 --> 00:41:15,140
Yeah, no, agreed.

540
00:41:15,340 --> 00:41:17,520
I think that's a good use case as well.

541
00:41:18,580 --> 00:41:22,540
So, the last one I wanted to point out to you, Mr. Coté, is Atlas.

542
00:41:22,540 --> 00:41:24,240
So, this is for time series data.

543
00:41:24,460 --> 00:41:27,920
As you might imagine, Netflix collects a lot of data.

544
00:41:28,400 --> 00:41:30,080
And so, how do I use this for operational purposes?

545
00:41:30,220 --> 00:41:31,540
How am I using this to trace?

546
00:41:31,920 --> 00:41:37,920
You know, this is something, if you've seen us talk about Zipkin and Spring Cloud Sleuth, this isn't using Atlas at this point.

547
00:41:37,980 --> 00:41:47,500
But the idea of doing distributed tracing, saying, how am I uncovering where I have latency, following the call path, as you said, with these vertical apps as well, so that I can see this call stack.

548
00:41:47,520 --> 00:41:53,080
And where am I hitting latency, maybe I uncover that a service is being called all the time and it's not supposed to be.

549
00:41:53,140 --> 00:42:03,520
Or, you know, it's a great tool to have, to be able to uncover these usage patterns because, frankly, I can't predict how my services are going to be used anymore when I've got this microservices world.

550
00:42:03,940 --> 00:42:05,840
I'm having a lot of composable apps.

551
00:42:05,940 --> 00:42:07,760
I have a lot of different interaction patterns.

552
00:42:08,260 --> 00:42:10,680
And so, being able to do real distributed tracing is huge.

553
00:42:11,120 --> 00:42:13,460
So, Atlas is kind of what Netflix OSS offers.

554
00:42:13,560 --> 00:42:15,120
And, again, you can download and run that.

555
00:42:15,480 --> 00:42:21,260
When you're using kind of a Spring Cloud Foundry world, we like Spring Cloud Sleuth based on Zipkin, which came out of Twitter.

556
00:42:23,260 --> 00:42:26,060
So, that's the stack of everything in there, huh?

557
00:42:26,660 --> 00:42:28,840
Yeah, there's another probably dozen and a half of them.

558
00:42:28,840 --> 00:42:36,020
And I encourage you to read the Netflix tech blog, which is always fantastic, techblog.netflix.com, which has some great stuff.

559
00:42:36,180 --> 00:42:38,940
And now, one question could be, well, sheesh, I'm a Node developer.

560
00:42:39,180 --> 00:42:40,280
You know, I'm a .NET developer.

561
00:42:40,560 --> 00:42:42,560
Why do Spring Cloud people have all the fun?

562
00:42:42,660 --> 00:42:47,000
Well, you know, hey, Netflix uses a lot of Java because that's what big boy companies use.

563
00:42:47,260 --> 00:42:54,320
But at the same time, you know, if I'm a .NET developer, we've actually been incubating the Steel Toe stuff, which you may have heard us mention.

564
00:42:54,320 --> 00:43:00,720
We talked about a little bit at SpringOne as well, which these are kind of connectors for .NET apps into Spring Cloud.

565
00:43:00,980 --> 00:43:06,340
So, whether I'm doing Eureka or Hystrix or the config server, I can do that from .NET apps.

566
00:43:06,420 --> 00:43:11,500
Now, I can be doing circuit breakers for my .NET apps, or I could be looking up the registry from .NET apps.

567
00:43:11,620 --> 00:43:15,420
So, kind of cool to make .NET also a first-class citizen in there.

568
00:43:15,420 --> 00:43:23,580
And then when I was trolling through the JavaScript NPM repository, which is their Node Package Manager repository, saw some ones.

569
00:43:23,600 --> 00:43:28,720
I don't think they're from Netflix themselves, but people had built some JavaScript libraries to talk to these endpoints as well.

570
00:43:28,760 --> 00:43:36,180
Which is cool because many of these are just HTTP endpoints, of which we've wrapped up some good Java goodness to make these look like local calls.

571
00:43:36,360 --> 00:43:41,500
But nothing prevents me from having these other apps that call these endpoints and cache data locally and what have you.

572
00:43:41,580 --> 00:43:43,280
So, it's a pretty open framework.

573
00:43:43,840 --> 00:43:45,620
Obviously, all the love has gone into Java.

574
00:43:45,620 --> 00:43:50,760
But if I'm using JavaScript or Node.js or .NET, you know, you can party on this data.

575
00:43:51,460 --> 00:44:03,780
Yeah, I mean, I think that's a good signal that you're reaching some wide adoption and thus long-term stability for a system like this is that you have more and more language support.

576
00:44:03,840 --> 00:44:07,600
Especially if you jump into .NET land and JavaScript.

577
00:44:07,600 --> 00:44:14,940
You know, I think ensuring that'll be a good test for people to pay attention to, seeing that those are well done.

578
00:44:15,220 --> 00:44:22,840
Then having, you know, I don't know, three different language pools supported is always healthy and then actually used.

579
00:44:23,640 --> 00:44:26,520
Well, as always, this has been Pivotal Conversations.

580
00:44:26,760 --> 00:44:33,960
You can find the freshest, most latest episodes over in SoundCloud if you go to SoundCloud.com slash Pivotal Conversations.

581
00:44:34,420 --> 00:44:35,940
All one long word.

582
00:44:36,220 --> 00:44:37,960
You can practice how to spell conversations.

583
00:44:38,620 --> 00:44:44,560
Also, we put the show notes on our blog, which you can get to at blog.pivotal.io.

584
00:44:45,180 --> 00:44:54,400
And I would encourage you, and I'm sure Richard would as well, if you like this, it's always nice to share it with your friends, whether it's in computer land or in person.

585
00:44:54,880 --> 00:44:59,860
And if you want to take the time to go into iTunes and leave us a review or a star rating, that's always also helpful.

586
00:45:00,420 --> 00:45:05,260
And if you have any feedback on any of this stuff, feel free to email us at podcast at pivotal.io.

587
00:45:05,520 --> 00:45:07,200
Or you can reach out to us on Twitter.

588
00:45:07,440 --> 00:45:13,660
I'm Coté, C-O-T-E, and Richard is R-Siroder, which is spelled pretty much how it sounds.

589
00:45:15,000 --> 00:45:15,620
There you go.

590
00:45:15,740 --> 00:45:17,660
And with that, we'll see everyone next time.

591
00:45:18,240 --> 00:45:18,780
Thanks, all.
