1
00:00:14,439 --> 00:00:18,679
What's up, y'all? This is
the Adventures in DeVos podcast. I'm your

2
00:00:18,719 --> 00:00:23,679
host, well Button, and I
have the co host with the most Warren

3
00:00:23,800 --> 00:00:26,960
Parade. What's up? Worn?
Hey? I liked how you had to

4
00:00:27,000 --> 00:00:32,840
look to the side to remember your
name before, right, It's so focused

5
00:00:32,880 --> 00:00:36,039
on remember and all the other stuff
I have to do for the intro that,

6
00:00:36,119 --> 00:00:39,079
like my own name is like,
no, brain's got no room for

7
00:00:39,119 --> 00:00:46,880
that. Yeah, I'm warning.
I'm the CTO authoress. You know,

8
00:00:47,679 --> 00:00:51,320
I had to be careful when I'm
talking in conferences because I'll often look at

9
00:00:51,320 --> 00:00:54,439
my computer even if I have no
reason to do that, and like,

10
00:00:54,520 --> 00:00:57,280
I know what the words are that
I have to say, but it's just

11
00:00:57,320 --> 00:01:00,200
so distracting to have something else there
at the same time, for sure.

12
00:01:00,920 --> 00:01:07,239
All right, Joining us today in
the studio Tyson Trautman, VP of Engineering

13
00:01:07,280 --> 00:01:12,359
over at Fauna, former GM from
AWS, Code Pipeline and Code Deploy,

14
00:01:14,120 --> 00:01:19,560
Senior engineering manager at Riot Games and
so on and so forth. What's going

15
00:01:19,599 --> 00:01:22,359
on, Tyson? Hey, good
morning, Super excited to be here,

16
00:01:23,280 --> 00:01:26,680
dude, I'm excited to have you
here. It's kind of we've had a

17
00:01:26,719 --> 00:01:32,480
theme going recently, not planned or
intentional but it definitely has turned into a

18
00:01:32,480 --> 00:01:37,159
theme where we've been talking in the
last couple episodes about databases, and so

19
00:01:37,200 --> 00:01:42,079
you're going to talk with us today
about the bottlenecks and challenges that developers have

20
00:01:42,280 --> 00:01:47,120
with databases. And one of the
common things we've talked about in the last

21
00:01:47,120 --> 00:01:52,359
few episodes is how there used to
be this career path called a DBA or

22
00:01:52,480 --> 00:01:59,719
database administrator, and that just seems
to have mostly disappeared. So give us

23
00:01:59,719 --> 00:02:01,680
a little bit about your background and
your thoughts on the state of the database

24
00:02:01,799 --> 00:02:07,799
today. Yeah, for sure.
I mean I'll say, like you know,

25
00:02:07,920 --> 00:02:12,240
DBAs are certainly still out there.
They're still feeling a very important function

26
00:02:12,400 --> 00:02:15,080
at a lot of different companies,
including you know, back when I was

27
00:02:15,479 --> 00:02:20,879
leading the Infrastructure Platform group at Riot
Games, you know, we were kind

28
00:02:20,919 --> 00:02:23,919
of a sequel shop had you know, a lot of DBAs as part of

29
00:02:24,000 --> 00:02:30,039
kind of the broader group just managing
our database instances. But definitely a trend

30
00:02:30,080 --> 00:02:32,599
that's changing, for sure. You
know, even like when I at that

31
00:02:32,680 --> 00:02:37,879
time at Riot, we were thinking
very much about you know, moving towards

32
00:02:37,960 --> 00:02:43,479
automation using things like declarative schema and
some of the you know, things that

33
00:02:43,520 --> 00:02:46,599
I think we'll talk about here and
bringing continuous delivery to the database. You

34
00:02:46,639 --> 00:02:52,039
know, that kind of remove that
need for a specific individual that's like,

35
00:02:52,719 --> 00:02:55,759
you know, laser focused on the
database, you know, running scripts manually

36
00:02:57,199 --> 00:03:00,360
on a specific database instance, like
those types of things. You know,

37
00:03:00,360 --> 00:03:04,639
it kind of gets into this moving
towards this uh you know, cattle not

38
00:03:04,840 --> 00:03:09,319
pets kind of mantra. You know, that's kind of more been more commonplace

39
00:03:09,360 --> 00:03:14,520
in other areas of software engineering,
for sure. Yeah, because like when

40
00:03:14,520 --> 00:03:19,919
it comes to the world of pets, like databases worthy most prized pet for

41
00:03:19,960 --> 00:03:23,599
a long time, still still are
a lot of places. Yeah, yeah,

42
00:03:23,680 --> 00:03:25,560
speak because since we're live by the
way, mine may you know,

43
00:03:25,599 --> 00:03:31,759
come bursting through the door at any
means excellent literal pets, not the database

44
00:03:31,800 --> 00:03:38,840
pets, right on, right on. That works. Yeah. So you

45
00:03:38,919 --> 00:03:44,400
know, I think that whole trend
towards automation has has made it a lot

46
00:03:44,479 --> 00:03:49,080
easier to interact with the database,
especially you know, I know that o

47
00:03:49,280 --> 00:03:54,800
rms are very contested and hotly debated, but I gotta admit, like having

48
00:03:54,919 --> 00:04:01,240
something that generates roll forward and roll
back statements for my database is kind of

49
00:04:01,439 --> 00:04:09,319
nice, even if I don't get
the opportunity to specifically tune and test that

50
00:04:09,439 --> 00:04:13,599
query. Like for the most part, it tends to do the right thing

51
00:04:14,560 --> 00:04:17,199
in most cases for me. Yeah, it depends. I mean, so

52
00:04:18,439 --> 00:04:25,199
there's no question that if you want
to bring the best practices of continuous livery

53
00:04:25,199 --> 00:04:29,279
to the database, you know there's
a few specific things the pieces that you're

54
00:04:29,319 --> 00:04:30,759
going to need. And we've been
thinking, you know, spending a lot

55
00:04:30,800 --> 00:04:32,959
of time thinking about this and kind
of how it applies to to fauna specifically,

56
00:04:33,560 --> 00:04:38,319
but more generally, like you know, uh, one of the you

57
00:04:38,319 --> 00:04:43,360
know, what you're trying to do
in the database when you know to apply

58
00:04:43,439 --> 00:04:46,240
these practices of continuous delivery. And
first of all, when you make schema

59
00:04:46,360 --> 00:04:49,800
changes, you have to be able
to validate those schema changes against your existing

60
00:04:49,879 --> 00:04:56,920
data against services that call the database. And then you have to be able

61
00:04:56,959 --> 00:05:00,639
to replicate the transition process to make
sure there's no issues get from A to

62
00:05:00,720 --> 00:05:04,639
B. And then and you have
to be able to do those things in

63
00:05:04,759 --> 00:05:10,319
all of your different in different environments, right ranging from kind of local development

64
00:05:10,480 --> 00:05:14,000
all the way to production. And
so you know, will the capabilities you

65
00:05:14,040 --> 00:05:17,000
were just talking about, which is
you know, some kind of mechanism to

66
00:05:17,120 --> 00:05:25,279
go and programmatically apply schema changes is
absolutely a critical requirement. There are others

67
00:05:25,319 --> 00:05:28,040
as well. We could get into
that, but for sure, you know,

68
00:05:28,079 --> 00:05:32,360
whether it's whether you're manually issuing querries
you know, through an RM to

69
00:05:32,399 --> 00:05:39,120
do things like manipulate data maybe you
know, potentially manipulate schema, or whether

70
00:05:39,160 --> 00:05:42,839
you're using something like uh, you
know, in fauna terms. What we've

71
00:05:42,879 --> 00:05:45,560
recently launched is are what we call
the fun of schema language, which is

72
00:05:45,560 --> 00:05:51,399
a declarative language for defining schema and
getting to a known state, you know,

73
00:05:51,439 --> 00:05:55,439
declare I'll say, I'll put in
a little plug. Declarative is typically

74
00:05:55,480 --> 00:06:00,120
where it's at for these types of
applications, because you know, there are

75
00:06:00,120 --> 00:06:04,560
a lot of ways when you're imperatively
describing sort of infrastructure that you can get

76
00:06:04,560 --> 00:06:10,680
yourself in trouble or you can get
into, you know, kind of a

77
00:06:10,879 --> 00:06:14,120
these little edge cases, and so
there are some issues that you can run

78
00:06:14,160 --> 00:06:16,839
into there. But that's just just
a little little plug. Yeah, And

79
00:06:17,120 --> 00:06:21,240
so just to clarify thereby declarative,
you mean you're just saying this is what

80
00:06:21,319 --> 00:06:26,439
I want the end state to be, Like, I don't really really care

81
00:06:26,759 --> 00:06:29,920
about what happens in between, as
long as it ends up like this,

82
00:06:30,639 --> 00:06:34,480
that's right exactly. I want you
know, I want these database all these

83
00:06:34,480 --> 00:06:39,399
fontorms, but I want these databases, these collections with this field level schema

84
00:06:40,199 --> 00:06:44,360
and then you know, even getting
into more exotic concepts like we support the

85
00:06:44,439 --> 00:06:47,920
notion of like user defined functions and
check constraints and you know, all these

86
00:06:47,920 --> 00:06:51,040
other kind of cool things that you
can you know that we can get into.

87
00:06:51,120 --> 00:06:56,680
But but yeah, the entire the
ability to define that whole data model,

88
00:06:57,720 --> 00:07:00,120
the schema for that data model,
and know that you're going to get

89
00:07:00,120 --> 00:07:05,160
into that state, you know,
without necessarily having to describe like here are

90
00:07:05,160 --> 00:07:10,319
fifty different transformation stuffs I'm going to
run and I hope that it all works

91
00:07:10,319 --> 00:07:13,439
out given the data in the database, and you know, to get to

92
00:07:13,480 --> 00:07:17,959
get into that state for sure,
yeah, or learning the specific syntax or

93
00:07:17,959 --> 00:07:24,519
whatever variant of SQL your database platform
happens to be using and hoping that it

94
00:07:24,639 --> 00:07:30,360
either does it correctly or errors out
not something in between, right, Yeah,

95
00:07:30,600 --> 00:07:33,519
yeah, for sure. Cool.
So so it sounds like we're funny.

96
00:07:33,519 --> 00:07:40,920
You're setting the stage for people to
to move because I feel like there

97
00:07:40,959 --> 00:07:46,319
was this trend about a decade or
so ago where we put all of the

98
00:07:46,360 --> 00:07:50,480
business logic in the code, like
your your constraints and your your validations and

99
00:07:50,519 --> 00:07:55,839
things like that. Whenever prior to
that, you know, that was the

100
00:07:55,920 --> 00:08:00,480
role of the DBA, and databases
have really powerful tools for managing that type

101
00:08:00,480 --> 00:08:05,040
of stuff quickly and efficiently. But
it sounds like you're giving that control back

102
00:08:05,079 --> 00:08:09,439
to the database, but in a
way that makes it easier for developers to

103
00:08:09,639 --> 00:08:13,199
leverage the things that databases do.
Well. Yeah, that's I think that's

104
00:08:13,360 --> 00:08:16,560
a fair assessment for sure. I
mean, we try it to be too

105
00:08:16,600 --> 00:08:20,079
prescriptive, like we want to meet
developers where they are, right, you

106
00:08:20,120 --> 00:08:26,759
know, I think, but certainly
bringing those capabilities to the database so that

107
00:08:26,800 --> 00:08:28,959
if you want, you know,
you can put some of that logic with

108
00:08:30,040 --> 00:08:35,559
your data. You know, there
are very powerful benefits that come with that

109
00:08:35,720 --> 00:08:39,600
too, right, Like so for
example, you know, for modern kind

110
00:08:39,639 --> 00:08:46,799
of responsive applications, performance is a
huge deal. So the you know,

111
00:08:46,840 --> 00:08:50,320
the ability to go and run a
bunch of compute over your data, you

112
00:08:50,360 --> 00:08:56,960
know, on the database is potentially
a game changer for performance performance standpoint versus

113
00:08:58,000 --> 00:09:01,000
like you know, doing a whole
bunch of run trips around trips and running

114
00:09:01,000 --> 00:09:03,519
that compute on the client, right, So for sure, yeah, having

115
00:09:03,600 --> 00:09:07,600
that that those capabilities available, and
then also you know another thing with being

116
00:09:07,600 --> 00:09:11,080
able to run that compute as part
of a transaction on the database. It's

117
00:09:11,120 --> 00:09:16,000
even the next level, uh kind
of benefit once you get into these real

118
00:09:16,039 --> 00:09:18,879
operational use cases. Right. So
for sure, having those capabilities there so

119
00:09:18,919 --> 00:09:22,759
that folks can reach for them,
you know, if they want them when

120
00:09:22,759 --> 00:09:26,120
their application calls for it is absolutely
something that we're focused on. And so

121
00:09:26,240 --> 00:09:33,000
I think a lot of that is
there's probably a pretty large educational component to

122
00:09:33,080 --> 00:09:39,720
that because unless you have experience or
a lot of background expertise in database servers,

123
00:09:39,720 --> 00:09:43,840
these are all things that you potentially
didn't know database servers were capable of

124
00:09:43,919 --> 00:09:52,120
doing. So how has that shaped
how you how you approach this problem?

125
00:09:52,200 --> 00:09:54,000
Yeah, yeah, I mean in
some ways, so what you said is

126
00:09:54,039 --> 00:09:58,799
true, although in some ways,
you know, there's the kind of you

127
00:09:58,840 --> 00:10:01,480
know, everything old is new again, right, you know, people sort

128
00:10:01,519 --> 00:10:07,480
procedures since the beginning of time,
you know, and I think there are

129
00:10:07,480 --> 00:10:11,440
different kinds of ebbs and flows in
terms of you know, uh, the

130
00:10:11,519 --> 00:10:15,799
kind of hot application architecture of the
day, and you know some of the

131
00:10:15,879 --> 00:10:16,960
sometimes these trends you look back and
you say, hey, we did we

132
00:10:16,960 --> 00:10:20,559
didn't have it so wrong with some
of these things that were going on previously.

133
00:10:22,080 --> 00:10:24,039
But but for sure, I mean, yeah, you're you know.

134
00:10:24,679 --> 00:10:28,240
Uh. One of the things that's
been interesting about my journey upon a for

135
00:10:28,320 --> 00:10:33,799
sure is you know, you you
can build a really amazing product, and

136
00:10:35,080 --> 00:10:37,279
you know, as a consumer,
I feel that, you know, using

137
00:10:37,320 --> 00:10:39,480
the product, there's no question that
database we're building is the database I would

138
00:10:39,559 --> 00:10:43,399
use if I left to start a
company tomorrow. But you still have to

139
00:10:43,720 --> 00:10:48,320
tell that story to the market and
help people understand what's compelling about it.

140
00:10:48,679 --> 00:10:52,000
And you know, this cool stuff
that we're doing, you know, you're

141
00:10:52,000 --> 00:10:54,200
doing kind of in a vacuum,
doesn't matter. What matters is how it

142
00:10:54,240 --> 00:10:58,919
maps to actual requirements of software developers
and moves the needle makes them more productive,

143
00:11:00,200 --> 00:11:03,120
their life easier, mixed the applications
that they're building, you know,

144
00:11:03,279 --> 00:11:07,159
more secure, more available, more
performant. And so yeah, there's a

145
00:11:07,159 --> 00:11:11,720
big educational component. I mean a
lot of that is in docs. You

146
00:11:11,759 --> 00:11:13,360
know, I think when you're building
these types of apps, the quality of

147
00:11:13,360 --> 00:11:18,480
your docks is a huge deal.
Examples. All of those types of things

148
00:11:18,480 --> 00:11:20,320
are you know, big, big
area of investment, no question. I

149
00:11:20,320 --> 00:11:24,440
feel like you said something super controversial. So and I don't know if I

150
00:11:24,440 --> 00:11:28,200
want to let you jump over that. What what? What is? What?

151
00:11:28,039 --> 00:11:30,679
What is old is new again?
I feel like there's a whole swath

152
00:11:30,720 --> 00:11:37,039
of engineers out there at orgs and
companies who would swear by the stored procedures

153
00:11:37,039 --> 00:11:41,559
have always been wrong and will always
be wrong into the future. I'm curious,

154
00:11:41,639 --> 00:11:46,720
like there's no I don't think there's
a particularly right answer here, but

155
00:11:46,759 --> 00:11:50,200
maybe there's like some sort of spectrum
and this is what belongs in at the

156
00:11:50,279 --> 00:11:54,440
database layer, and this is what
belongs more at the domain or business logic

157
00:11:54,480 --> 00:11:58,360
outside in your application. Any thoughts
like where is that line that actually needs

158
00:11:58,360 --> 00:12:03,039
to be drawn? Yeah, I
mean it's a great point. I think

159
00:12:03,080 --> 00:12:05,720
the I try to stay away from
some of the kind of more you know,

160
00:12:07,279 --> 00:12:09,720
Zelody kind of religious debates like that
again, you know, to me,

161
00:12:09,840 --> 00:12:13,720
I think, you know, Warren, it really comes down to like

162
00:12:13,960 --> 00:12:18,120
the use case and what you're trying
to do with the requirements your application.

163
00:12:18,200 --> 00:12:22,879
Are sure, but you know,
and we could get into some kind of

164
00:12:22,879 --> 00:12:26,320
specific examples there. But I think
one of the problems with store procedures in

165
00:12:26,360 --> 00:12:33,960
the past is it was this entirely
separate code, you know, application code

166
00:12:33,000 --> 00:12:37,960
that sat kind of outside your app, so and it was it had a

167
00:12:39,320 --> 00:12:43,799
separate life cycle from your application.
There was no you know, kind of

168
00:12:45,000 --> 00:12:50,080
it single life cycle in terms of
like continuous delivery and how you get that

169
00:12:50,120 --> 00:12:54,360
application and production and to think about
things like versioning between client and server,

170
00:12:54,639 --> 00:12:56,840
and so a big part of what
we've been focused on, you know,

171
00:12:56,879 --> 00:13:03,120
with our recent launches with on a
schema languageeste is solving that problem by putting

172
00:13:03,120 --> 00:13:05,000
that logic together. So you know, the typical pattern when you're using FSL

173
00:13:05,039 --> 00:13:11,519
to describe you know, your data
is that code lives in your repo with

174
00:13:11,559 --> 00:13:16,240
your application code. It's version together. You know, that's what we do

175
00:13:16,279 --> 00:13:18,519
internally. We take a heavy dependency
on fauna. We eat our own dog

176
00:13:18,559 --> 00:13:20,960
food, drink our own champagne.
You know, however you want to put

177
00:13:20,960 --> 00:13:24,279
it, and that's you know,
that's certainly kind of the best practice that

178
00:13:24,279 --> 00:13:26,480
we follow as well. Everything right
together. So I think, you know,

179
00:13:28,200 --> 00:13:31,559
part of the answer is it depends
on the application and the specific requirements

180
00:13:31,600 --> 00:13:35,960
of the application. But another part
of it is the problems that people had

181
00:13:35,000 --> 00:13:39,039
at that point in time can be
solved through better products and better tooling around

182
00:13:39,080 --> 00:13:43,240
those products as well. No,
I'm totally with you, Like I remember

183
00:13:43,320 --> 00:13:48,799
on non trivial number of times,
writing some giant framework to manage getting storage

184
00:13:48,799 --> 00:13:54,159
procedures written in your get repository into
ms sql at the time and making sure

185
00:13:54,159 --> 00:13:58,639
they were executing the right order,
intertwined with whatever schema changes you also had.

186
00:14:00,120 --> 00:14:03,799
And then there's no way to really
live validate that without running it for

187
00:14:03,919 --> 00:14:09,120
real and making sure that it hits
some arbitrary query plan so that it's optimized,

188
00:14:09,200 --> 00:14:13,600
or even that it's using real fields
like dive in like a couple types

189
00:14:13,720 --> 00:14:16,679
just aren't there in most databases when
you think about it. Yeah, for

190
00:14:16,679 --> 00:14:20,600
sure, you nailed it. And
that's why I mean to me, what

191
00:14:20,639 --> 00:14:24,960
good looks like here is you know
again, you need the you need the

192
00:14:26,039 --> 00:14:28,360
you need the declarative tools that where
you can in any environment. You know,

193
00:14:28,399 --> 00:14:31,279
so in funt of terms, you
can spin up in UH an instance

194
00:14:31,320 --> 00:14:37,000
of fauna locally in in our Docker
container and you can use FSL to apply

195
00:14:37,039 --> 00:14:39,480
schema there. So you can use
this for even like local integration testing.

196
00:14:41,039 --> 00:14:46,720
But so you have the ability to
apply declarative schema it works in any environment.

197
00:14:46,879 --> 00:14:50,000
And then you have you know,
tools to load data as well,

198
00:14:50,039 --> 00:14:54,720
because like we mentioned earlier, you
need to validate schema changes against existing data.

199
00:14:54,759 --> 00:14:58,080
And we do that through you know, we have uh two kind of

200
00:14:58,080 --> 00:15:03,519
two mechanisms there back up and restore, backup and copy tool in the live

201
00:15:03,639 --> 00:15:07,600
environment, and then we also have
a data import tool where you can sort

202
00:15:07,639 --> 00:15:11,320
of play arbitrary data to load that
into a database. But then you know,

203
00:15:11,639 --> 00:15:15,399
you start wiring this thing up in
automation as part of your CD pipeline,

204
00:15:15,399 --> 00:15:18,039
and all of a sudden, these
tests are running locally again against the

205
00:15:18,080 --> 00:15:22,080
doctor container or something, or against
the live service if you prefer, you

206
00:15:22,120 --> 00:15:28,000
know, in your integration environments where
you're seeing actual consuming services in you know,

207
00:15:28,159 --> 00:15:33,960
under potentially real world load, you
know, with those schema changes with

208
00:15:33,080 --> 00:15:37,399
the new version of your your UDF
or your store procedure as that's going to

209
00:15:37,440 --> 00:15:41,519
production. And then you know you
can even safely apply those changes using that

210
00:15:41,559 --> 00:15:43,960
same tooling all the way out in
production again, which is what we do.

211
00:15:43,080 --> 00:15:48,000
So super powerful concepts. So I'm
going to ask a really dumb question

212
00:15:48,080 --> 00:15:52,679
and hope that the listeners of the
podcast who might actually have the same question

213
00:15:52,759 --> 00:15:58,440
can appreciate the fact that I'm taking
one for the team here is is Fauna

214
00:15:58,519 --> 00:16:03,879
its own database engine or is it
something that sits on top of other database

215
00:16:03,919 --> 00:16:08,039
engines. It's its own database engine. It is a it's a net new

216
00:16:08,279 --> 00:16:14,799
novel database that was built, you
know, effectively kind of from the ground

217
00:16:14,919 --> 00:16:19,120
up. It was deeply inspired by
There's an interesting research paper that came out

218
00:16:19,120 --> 00:16:25,840
of Yale years ago by Danie Labodi
who's an advisor at Fauna and a few

219
00:16:25,879 --> 00:16:30,840
others. That was kind of an
interesting spin on how to do how to

220
00:16:30,919 --> 00:16:37,159
run distributed transactions in a very different
model than like the typical kind of two

221
00:16:37,159 --> 00:16:41,600
phase commit model that Spanner and other
like truly distributed databases use. So that's

222
00:16:41,639 --> 00:16:45,720
kind of at the heart of Fauna. That's what we call it distributed transaction

223
00:16:45,840 --> 00:16:52,799
engine. You know, it's a
big component of Fauna. It handles multi

224
00:16:52,840 --> 00:16:57,919
region replication with the strongest possible level
of consistency guarantee. So that's kind of

225
00:16:57,919 --> 00:17:02,000
a secret sauce, you know,
in the core the guts of the product.

226
00:17:03,120 --> 00:17:07,000
Again, we don't like, you
know, sort of abstract nerdery.

227
00:17:07,039 --> 00:17:08,880
We like to tie back to real
world application requirements. But the reason that

228
00:17:08,920 --> 00:17:12,079
matters is, you know, number
one, people want multi regional application for

229
00:17:12,200 --> 00:17:15,680
performance. If I can do fast
reads from the local region, that's a

230
00:17:15,680 --> 00:17:21,279
really big deal for a lot of
modern applications. Right. It's also the

231
00:17:21,319 --> 00:17:26,440
best possible dr story if you literally
have multiple regions running in an active active

232
00:17:26,440 --> 00:17:32,319
configuration. You know, we see
examples where our good friend USC one is

233
00:17:32,359 --> 00:17:38,160
having issues and you know, and
so just keep cruising, cruising right along.

234
00:17:40,640 --> 00:17:42,519
But then you know, doing all
that with strong consistency is really the

235
00:17:42,640 --> 00:17:47,680
huge deal because as developers, I
mean, you know, it's very expensive

236
00:17:47,759 --> 00:17:52,720
to reason about these different edge cases
that you can hit in your application code,

237
00:17:52,799 --> 00:17:55,640
right, And to me, that's
a bit like people talk about,

238
00:17:55,640 --> 00:18:00,519
oh, you know we have a
strong ish level of consistency garantee. Well

239
00:18:00,519 --> 00:18:03,279
I'll either have to reason about these
funky edge cases that I can get into

240
00:18:03,400 --> 00:18:06,319
or I don't write. Yeah,
and with with Wanta, you don't.

241
00:18:06,440 --> 00:18:08,480
So that's kind of the the guts
of it when you talk database engine.

242
00:18:08,519 --> 00:18:14,039
That's kind of the the some of
the secret sauce innovation that we've been focused

243
00:18:14,079 --> 00:18:21,599
on. That's cool. So what
almost sounds like rethinking the database based on

244
00:18:22,960 --> 00:18:27,160
considerations that are relevant now but weren't
whenever most of our common data base platforms

245
00:18:27,160 --> 00:18:32,759
were created. Yeah, I mean, I think for sure the considerations that

246
00:18:32,759 --> 00:18:37,839
weren't relevant when folks were running you
know, you know single ins or single

247
00:18:37,839 --> 00:18:45,319
instance uh you know postcress instances or
you know primary secondary type configurations that are

248
00:18:45,319 --> 00:18:48,920
really still there, you know,
with you know, with some of the

249
00:18:48,960 --> 00:18:52,400
bigger players that folks are are using
today. You know, for some apps,

250
00:18:52,440 --> 00:18:57,160
that's fine, that's you know,
for some there's some applications where you

251
00:18:57,200 --> 00:19:02,359
know you're not going to hit this
insane scale where you're gonna suddenly have to

252
00:19:02,359 --> 00:19:04,400
start thinking about partitioning. And then
you got to start thinking about, oh,

253
00:19:04,480 --> 00:19:10,240
well, I was using Postgress because
of the strong transaction support, but

254
00:19:10,279 --> 00:19:12,480
now I can't do post you know, or a cross partition transactions. How

255
00:19:12,480 --> 00:19:15,440
do I solve that? And you
know, there's a ton of interesting innovation

256
00:19:15,480 --> 00:19:18,400
there I don't want to put you
know, they're like very cool tools for

257
00:19:18,519 --> 00:19:26,359
specific kinds of jobs, but you
know, for applications where scale and potentially

258
00:19:26,400 --> 00:19:30,039
multi region replication or a strong requirement
right out the gate, I think Fauna

259
00:19:30,200 --> 00:19:33,319
is is you know, in pretty
unique air up there with a few other

260
00:19:33,359 --> 00:19:36,400
offerings that are really kind of ground
up, Like let's think about how to

261
00:19:36,440 --> 00:19:40,440
do distributed transactions, you know,
in a in a first class way.

262
00:19:40,480 --> 00:19:41,759
That's a hard thing that just you
can't just take that and bolt it on.

263
00:19:42,960 --> 00:19:47,680
You brought up documentation before, and
I feel like there's a direct link

264
00:19:47,720 --> 00:19:51,599
here. Actually something on my mind
a lot is I feel like Authors has

265
00:19:51,640 --> 00:19:56,640
done something similar in the security domain, and the novel aspects that we've added

266
00:19:56,880 --> 00:20:00,480
to hopefully remove the confusion from users
sometimes get in their own way, like

267
00:20:00,640 --> 00:20:08,119
they have expectations that a database requires
a commit uh transaction step, that replicating

268
00:20:08,160 --> 00:20:14,640
across regions with some sort of replication
agent like is there by design, and

269
00:20:14,680 --> 00:20:18,519
some of the more experienced engineers get
caught up with expecting those things to be

270
00:20:18,680 --> 00:20:23,759
in place. Do you see that
a similar problem exists for Anna? You

271
00:20:23,799 --> 00:20:30,480
know, I don't. I think
people are usually if you build it,

272
00:20:30,559 --> 00:20:33,400
I think we've built it in a
way that feels pretty intuitive because with Fauna,

273
00:20:33,519 --> 00:20:37,599
you know, so with traditional databases, you know, whether that's let's

274
00:20:37,599 --> 00:20:41,880
say a SEQL based database or that's
something like Mango, you know, you're

275
00:20:42,079 --> 00:20:48,480
you're, you're your transaction model is
kind of tightly coupled to the session,

276
00:20:48,640 --> 00:20:51,319
right, and so that's to your
point more and that's like what you're the

277
00:20:51,359 --> 00:20:52,640
mental models, what you're used to. You have to do things like session

278
00:20:52,640 --> 00:20:56,200
managment management, et cetera. With
Fauna, you're just sending us for a

279
00:20:56,200 --> 00:21:00,000
SHPE requests. Basically, an AHPE
request essentially contain some code that you run

280
00:21:00,039 --> 00:21:04,559
as part of a transaction. And
so I guess my experience there in this

281
00:21:04,599 --> 00:21:10,240
particular domain, it so sounds a
little bit different, is uh. It's

282
00:21:10,359 --> 00:21:12,519
the way we've implemented is pretty intuitive. So folks get there and they're like,

283
00:21:12,519 --> 00:21:15,400
hey, this is cool. I
don't have to you know, I

284
00:21:15,400 --> 00:21:18,480
don't I don't have to think about
these things like session management. I don't

285
00:21:18,480 --> 00:21:21,599
have to think about is this code
running in the context of a transaction?

286
00:21:21,839 --> 00:21:26,440
When do I, you know,
commit the effectively commit that transaction. It's

287
00:21:26,559 --> 00:21:30,680
just I'm sending a transaction, I'm
getting a response back, and I can

288
00:21:30,720 --> 00:21:33,240
do that in the shape that my
application expects it, and that feels pretty

289
00:21:33,359 --> 00:21:38,160
intuitive. That's I think has been
my experience while watching folks when they first

290
00:21:38,160 --> 00:21:41,480
pick up the product. No.
The reason I asked is because there was

291
00:21:41,519 --> 00:21:47,680
a a lifetime ago there was an
instance where I was working with an engineer

292
00:21:47,920 --> 00:21:52,359
on GCP's Firebase, and there's a
bunch of promises that firebase makes with instantaneous

293
00:21:52,799 --> 00:21:57,160
commits, none have to worry about
concurrence or anything like that. And it's

294
00:21:57,240 --> 00:22:02,559
that that really felt counterintuitive that these
databases that are on opposite sides of the

295
00:22:02,559 --> 00:22:07,240
world won't have any sort of race
condition. And I guess that's not.

296
00:22:07,519 --> 00:22:11,799
Like the way you've designed fauna is
much more seamless than that that it makes

297
00:22:11,799 --> 00:22:15,839
it obvious when there is going to
be potentially a problem, uh, and

298
00:22:15,880 --> 00:22:18,720
when there's not and no one has
to worry about anything. Yeah, I

299
00:22:18,759 --> 00:22:21,920
mean to be clear, like there's
no free lunch of engineering, right,

300
00:22:21,960 --> 00:22:26,119
so we try to promise something that
doesn't you know, and the trade off

301
00:22:26,160 --> 00:22:30,119
that you're making, uh, you
know, when you're doing things like effectively

302
00:22:30,160 --> 00:22:33,160
running this type of active active configuration
where you have multi regioner application with strong

303
00:22:33,240 --> 00:22:37,279
consistency, like you can't cheat the
speed of light, so there, you

304
00:22:37,279 --> 00:22:42,039
know, there are performance trade offs
to that, you know. There what

305
00:22:42,119 --> 00:22:47,359
we've done is try to optimize to
that frontier of what's possible so that you're

306
00:22:47,400 --> 00:22:49,559
pushing you know, if you're if
you're doing rights through the transaction pipeline in

307
00:22:49,799 --> 00:22:56,759
the US and in fauna, you
know, you're talking mid double digit milliseconds

308
00:22:56,839 --> 00:23:00,440
right of replication time and reads can
be served from the local regions so very

309
00:23:00,480 --> 00:23:07,880
fast like low single single digit milliseconds, And in practice, that trade off

310
00:23:07,920 --> 00:23:11,480
is very attractive for most applications,
especially when you can avoid these like multi

311
00:23:11,559 --> 00:23:15,880
round trip like multi transaction scenarios where
you have application code running on a client

312
00:23:15,960 --> 00:23:18,200
like it's it's it's not you know
but there, But I just want to

313
00:23:18,200 --> 00:23:21,960
be clear, like there's always going
to be you mentioned the fire store case

314
00:23:22,000 --> 00:23:26,039
not you know for sure, if
you if you're if if for whatever reason,

315
00:23:26,119 --> 00:23:30,200
you think your your application is fine
with eventual consistency, that's a different

316
00:23:30,240 --> 00:23:33,200
model and you can achieve a different
performance profile. You know, you know

317
00:23:33,240 --> 00:23:37,640
where where warranted. I'd say buyer
beware because a lot of times you think

318
00:23:37,680 --> 00:23:40,839
your application is okay, you know, eventual consistency is an acceptable model for

319
00:23:40,880 --> 00:23:44,240
your app, and then you end
up planning out it's not so. But

320
00:23:44,440 --> 00:23:47,359
yeah, just want to be I
want to be honest. There no it

321
00:23:47,440 --> 00:23:55,240
makes a lot of sense really.
So you said that interacting with Fauna is

322
00:23:55,599 --> 00:23:59,279
HTTP a p I Is that right? That's right? Yeah, Yeah,

323
00:23:59,400 --> 00:24:00,160
it's done a lot of interesting where
I don't know if we want to go

324
00:24:00,160 --> 00:24:03,720
there, but we've done a lot
of there's a lot of innovation in FAUNA

325
00:24:03,920 --> 00:24:07,880
kind of in how we route to
the database as well, which has been

326
00:24:07,920 --> 00:24:11,799
a super interesting set of challenges.
You know, typically like most kind of

327
00:24:11,799 --> 00:24:15,680
an afterthought for a lot of database
providers, but thinking about you know,

328
00:24:15,000 --> 00:24:19,319
the point, because we're so performance
focused, thinking about that trip from the

329
00:24:19,319 --> 00:24:23,640
application to the database as well as
something that we've focused on on quite a

330
00:24:23,680 --> 00:24:30,240
bit, right, Yeah, that
makes sense because using that pattern has you

331
00:24:30,240 --> 00:24:33,960
you end up getting a lot of
being able to take advantage of a lot

332
00:24:34,000 --> 00:24:37,640
of work that other people are doing
in that same space instead of reinventing that

333
00:24:37,680 --> 00:24:42,240
work. Yeah. Absolutely, for
sure. Backing on top of each GDP

334
00:24:42,440 --> 00:24:48,200
is so much easier than TCP backets
quick or even if you're going to implement

335
00:24:48,240 --> 00:24:53,039
your own quick uh communication productol m, Yeah, no question. You know,

336
00:24:53,079 --> 00:24:56,119
I actually took a look at FUNA
before this. I was curious and

337
00:24:56,559 --> 00:25:00,279
I'm looking at that and then I'm
looking back at the cloud provider, and

338
00:25:00,359 --> 00:25:03,319
I'm wondering, like, when what
is it going to be that one of

339
00:25:03,319 --> 00:25:07,680
the cloud providers offers me a database
that actually achieves as much as these external

340
00:25:07,720 --> 00:25:11,079
providers get. And you know,
I just see such a huge discrepancy,

341
00:25:11,079 --> 00:25:15,279
and I you know, I'm surprised
that they haven't made a lot of progress

342
00:25:15,279 --> 00:25:19,240
in this area. Yeah, I
mean so first of all, I'll say,

343
00:25:19,319 --> 00:25:22,400
like, you know, effectively all
of the kind of hyper scalers are

344
00:25:22,759 --> 00:25:29,000
you know, fantastic partners. You
know, today we're in the AWS marketplace,

345
00:25:29,000 --> 00:25:32,000
where in the GCP marketplace you know, will be an azure down the

346
00:25:32,079 --> 00:25:33,680
road as well. And you know, Fauna by definition, we have we

347
00:25:33,720 --> 00:25:37,599
have our what we call our public
region groups called region group as we replicated

348
00:25:37,680 --> 00:25:42,440
across regions by default. But you
can also deploy something called virtual Private Fauna,

349
00:25:42,519 --> 00:25:47,920
which is still serverless but single tenant
like VM level isolation, and you

350
00:25:47,920 --> 00:25:51,559
can pick your cloud providers and your
footprint. So pretty cool offering for like

351
00:25:51,640 --> 00:25:56,240
larger enterprises that need more isolation.
But but yeah, you know, I

352
00:25:56,240 --> 00:26:03,160
think the reality is like those large
providers, if I take my former employer,

353
00:26:03,319 --> 00:26:06,079
you know, AWS, I'm saying
this is a as somebody who's no

354
00:26:06,079 --> 00:26:08,279
longer with AWS, but they have
very successful offerings, you know, DYNO,

355
00:26:08,440 --> 00:26:14,279
dB RDS, et cetera, that
are out there, and those things

356
00:26:14,319 --> 00:26:17,359
have a lot of inertia and they
continue to do work to make those things

357
00:26:17,400 --> 00:26:21,559
better. But you know those are
those are you know, multi billion dollar

358
00:26:21,680 --> 00:26:26,720
businesses, you know, in and
of themselves, and so it gets harder

359
00:26:26,880 --> 00:26:33,240
to go and compete with a startup
in the in a weird way there because

360
00:26:33,279 --> 00:26:36,440
you don't have any competing interests at
a startup like we're just setting out to

361
00:26:36,440 --> 00:26:40,519
try to build the best possible database
for modern application developers, whereas I think

362
00:26:40,839 --> 00:26:44,240
at some of those you know,
we've all anyone who's operating in the context

363
00:26:44,279 --> 00:26:48,720
of a larger, uh, you
know company. Once you have those revenue

364
00:26:48,720 --> 00:26:52,839
streams, there are different kind of
goals and you have to cater to that

365
00:26:52,960 --> 00:26:56,759
existing audience, right. You know, Mango, which is a fantastic product

366
00:26:56,759 --> 00:27:00,200
obviously has been around for a long
time, been very success full, still

367
00:27:00,240 --> 00:27:06,279
growing leaps and bounds. You know, they can't they can't throw out the

368
00:27:06,359 --> 00:27:07,799
on prem business, right, you
can't throw out the baby with the bathwater,

369
00:27:07,839 --> 00:27:11,559
And so you have these kind of
existing businesses that are very successful.

370
00:27:11,759 --> 00:27:15,880
You know, a great thing for
those those enterprises that they have to serve

371
00:27:15,920 --> 00:27:19,039
and focus on. But I think
to your point, I think it makes

372
00:27:19,039 --> 00:27:23,720
it a little bit harder to go
and build something that's kind of a generational

373
00:27:23,839 --> 00:27:29,359
leap, right that's significantly better for
application developers. And but you know,

374
00:27:29,400 --> 00:27:30,920
in fairness, we do see that
they're pretty there's a lot of hunger from

375
00:27:30,920 --> 00:27:37,039
those from those companies to go and
partner, and you know, they want

376
00:27:37,079 --> 00:27:40,880
there to drive the best outcome for
their customers and if that ends up being

377
00:27:41,119 --> 00:27:45,200
you know, we have a close
running conversation with the Lambda team at AWS

378
00:27:45,240 --> 00:27:48,640
for example, because there's a lot
of synergy between Fauna and Lambda where the

379
00:27:48,680 --> 00:27:52,359
data is at the edge where you
can run your Lambda functions. You don't

380
00:27:52,400 --> 00:27:55,880
have to maintain sessions, which is
fantastic from those kind of ephemeral environments that

381
00:27:55,920 --> 00:28:00,279
can just go away. So yeah, they're good partners for us, you

382
00:28:00,319 --> 00:28:03,599
know, and like I said,
we're right there in their marketplace, so

383
00:28:03,759 --> 00:28:07,000
you can buy us alongside the first
It sounds like, you know, a

384
00:28:07,000 --> 00:28:11,079
bunch of innovators dilemma, but also
innovation is coming if you pick the right

385
00:28:11,079 --> 00:28:18,599
providers. Yeah, yeah, for
sure, absolutely that what kind of design

386
00:28:18,519 --> 00:28:26,720
changes or design approaches require mental shift
to take on something like fauna where you've

387
00:28:26,759 --> 00:28:32,599
got you know, a server list
serveralist database with your data sitting on the

388
00:28:32,680 --> 00:28:36,839
edge. In terms of so when
you say design shift, you mean from

389
00:28:36,839 --> 00:28:41,160
the consuming application. Yeah, Like, if you're architecting an application, are

390
00:28:41,160 --> 00:28:47,240
there any considerations that you are there
things that you may you may make it

391
00:28:47,279 --> 00:28:48,640
down the road and say, oh
wow, if I'd done this, I

392
00:28:48,640 --> 00:28:55,000
would have been a lot happier.
Yeah, good question, just thinking you

393
00:28:55,079 --> 00:29:00,599
know, the there are there are
kind of these very mod and application architectures

394
00:29:00,680 --> 00:29:06,200
that Fauna in a way is sort
of you know, uniquely suited to serve.

395
00:29:06,839 --> 00:29:11,240
But you don't have to be using
one of those architectures for you know,

396
00:29:11,279 --> 00:29:12,960
to take advantage of a database like
you know, Fauna or some of

397
00:29:12,960 --> 00:29:18,079
these other like very modern databases we
have. We have plenty of customers that

398
00:29:18,119 --> 00:29:23,960
are running you know, a more
traditional application architecture where they have like a

399
00:29:25,000 --> 00:29:30,119
single region app server you know,
sitting in you know, pick a region

400
00:29:30,359 --> 00:29:33,119
that's accessing fauna, and they're not
necessarily taking advantage of multi region application.

401
00:29:33,200 --> 00:29:36,799
Other than the fact that it's there
as part of a dr story, So

402
00:29:36,960 --> 00:29:40,359
they could fail over, you know, if they're they're apps in region,

403
00:29:40,400 --> 00:29:42,960
but if their app was up for
some reason and you know, some service

404
00:29:42,960 --> 00:29:48,559
dependency brought us down in a region, that traffic could fail over and roped

405
00:29:48,559 --> 00:29:52,200
to another region. But you know, I think, but, but no,

406
00:29:52,279 --> 00:29:53,920
I think the answer is like,
we work just fine with those types

407
00:29:53,960 --> 00:30:00,960
of like you know, more traditional
architectures, or if you're building if you're

408
00:30:02,000 --> 00:30:04,960
some new startup that's very forward thinking, you're building something greenfield, and you

409
00:30:06,000 --> 00:30:10,160
know you want to take advantage of
all these new awesome offerings. Run compute

410
00:30:10,200 --> 00:30:15,160
out at the edge. You know
you can do that, and fauna pairs

411
00:30:15,240 --> 00:30:18,039
very nicely with that with those types
of architectures as well, right because we're

412
00:30:18,039 --> 00:30:22,480
going to have your data there,
server lists, you don't need to manage

413
00:30:22,480 --> 00:30:25,519
to think about scaling, you know, managing instances, et cetera, those

414
00:30:25,559 --> 00:30:29,480
types of concerns. So I think
I think we've I don't think they're you

415
00:30:29,519 --> 00:30:32,079
know, I can't think of any
specific gotcha's or something that you should have

416
00:30:32,160 --> 00:30:34,839
in mind as you adopt these kind
of modern databases. I think they you

417
00:30:34,880 --> 00:30:37,799
know, roll pretty well in the
existing paradigm. But then as you get

418
00:30:37,839 --> 00:30:41,640
towards these these newer architectures, you
know, they can they can really shine.

419
00:30:42,119 --> 00:30:48,119
So if someone spent the last twenty
years building MS SQL and now I

420
00:30:48,200 --> 00:30:52,359
shifted to RDS, there's not like
it still sort of works pretty much the

421
00:30:52,400 --> 00:30:56,000
same if they were to switch to
FAUNA other than get all the benefits and

422
00:30:56,279 --> 00:31:02,880
there's not a lot of potential pitfalls
with this sort of different database engines that

423
00:31:02,920 --> 00:31:04,799
are out there today, that's right. Yeah, I mean the you know,

424
00:31:04,839 --> 00:31:07,400
the downside is you have to go
and and you're gonna have to migrate

425
00:31:07,440 --> 00:31:12,000
application, yeah for sure, and
you know and your yeah, your data,

426
00:31:12,039 --> 00:31:14,440
you know, I mean you may
have to. I mean we have

427
00:31:14,440 --> 00:31:15,920
some we have some tools that do
you you can export, import data,

428
00:31:17,039 --> 00:31:19,599
do some different things. I think
we'll continue to get better. There hasn't

429
00:31:19,640 --> 00:31:22,240
been you know, top very top
of stack focus for us. We've been

430
00:31:22,319 --> 00:31:27,680
kind of more focused on innovating the
core product. But but yeah, for

431
00:31:27,720 --> 00:31:30,319
sure, now I think if you're
you know, if you bite the bullet

432
00:31:30,319 --> 00:31:33,920
on that migration, there's a whole
bunch of benefits that that that come with

433
00:31:34,000 --> 00:31:37,640
it. For sure. I mean
we you know, we have existing customers

434
00:31:37,680 --> 00:31:41,640
that have come from you know,
you name it. I'd say recently,

435
00:31:42,640 --> 00:31:47,839
more of the focus for folks that
are coming to Fauna are people who jumped

436
00:31:47,839 --> 00:31:52,519
from relational databases to document databases because
they believe in the document model. They're

437
00:31:52,519 --> 00:31:53,839
not a fan of r ms.
They don't like this document you know,

438
00:31:53,880 --> 00:31:59,400
relational impedance mismatch. But then all
of a sudden, you know, they're

439
00:31:59,480 --> 00:32:04,440
running on Go fire Store whatever,
Dynamo, Cosmos, TB, and they

440
00:32:04,519 --> 00:32:08,599
missed the relational some of the relational
capabilities they had with their relational database.

441
00:32:08,680 --> 00:32:13,279
They don't they're not ready to go
document, but they want these relational capabilities,

442
00:32:14,480 --> 00:32:16,319
you know. Fun of fundamentally is
what we call document relational. It's

443
00:32:16,319 --> 00:32:22,079
this kind of new paradigm where we
store data as documents on disc but it

444
00:32:22,119 --> 00:32:27,079
has the capabilities that you typically expect
from our relational database. So for example,

445
00:32:27,720 --> 00:32:32,880
the ability to define first class relationships
across uh, you know, documents

446
00:32:34,160 --> 00:32:38,119
and and kind of uh uh you
know, and access those documents the ways

447
00:32:38,119 --> 00:32:42,480
that you would expect with the relational
database. So yeah, so there's a

448
00:32:42,519 --> 00:32:44,759
lot of excitement for those folks that
see this as like, all right,

449
00:32:44,799 --> 00:32:46,319
kind of the best of both worlds. I don't have to I've jumped in

450
00:32:46,359 --> 00:32:50,640
the document model, but I get
all these capabilities that were that were the

451
00:32:50,680 --> 00:32:54,799
good part of my postgrass database.
And it's not like a partially QL on

452
00:32:54,880 --> 00:33:05,000
top of Dynamoe deb That's right,
that's right. Yeah, yeah cool.

453
00:33:05,640 --> 00:33:09,680
So one of the big challenges I
think with a lot of a lot of

454
00:33:09,759 --> 00:33:14,640
larger databases is you always end up
in a situation where you're doing et L.

455
00:33:15,039 --> 00:33:19,240
You know, it's pretty common to
et al your data out for analytics.

456
00:33:19,680 --> 00:33:23,319
How did y'all approach that? Yeah, We've got a few options there,

457
00:33:24,720 --> 00:33:28,680
you know, Like first of all, we support so there's a Fauna

458
00:33:28,759 --> 00:33:31,920
air Byte connector that some of our
customers use Airbyte open source product. They

459
00:33:31,920 --> 00:33:37,119
have managed offering, so you can
use air Byte too, you know.

460
00:33:37,160 --> 00:33:40,279
They're they're the connectors they have to
you know, to pump data from Fauna

461
00:33:40,359 --> 00:33:47,279
to your analytical database of choice.
You know. We we also support uh

462
00:33:47,319 --> 00:33:53,480
streaming, so you can stream changes
to documents or sets in Fauna. So

463
00:33:53,599 --> 00:33:57,240
different mental model, you know,
the you know, air Byte is kind

464
00:33:57,279 --> 00:34:01,559
of the more traditional, like I
want to push batch updates to my analytical

465
00:34:01,599 --> 00:34:07,280
database. Streaming is more commonly used
for these kind of you know, responsive

466
00:34:07,280 --> 00:34:09,840
apps where you want to push changes
to a client or something. But we

467
00:34:09,840 --> 00:34:15,280
do have some customers that for these
different use cases actually want to leverage streaming

468
00:34:15,360 --> 00:34:20,280
to push changes to sets too,
you know, a different a different,

469
00:34:20,400 --> 00:34:25,400
a different database. So those are
kind of the most common patterns. I'd

470
00:34:25,440 --> 00:34:29,360
say, you know, it's not
there today, but we're thinking a lot

471
00:34:29,360 --> 00:34:30,960
about. I felt like one of
the buzzwords that reinvent this year was like

472
00:34:31,119 --> 00:34:36,199
zero et L. You know,
there were Amazon was approaching. It was

473
00:34:36,559 --> 00:34:39,719
announcing zero et L for all this
database in this database, which really,

474
00:34:39,719 --> 00:34:42,599
you know, my mental model like
that, you know, you're still doing

475
00:34:42,599 --> 00:34:45,239
ETL. It's really I think it's
more just kind of like managed et L,

476
00:34:46,320 --> 00:34:52,639
these kind of uh, you know, higher level connectors between databases where

477
00:34:52,679 --> 00:34:55,679
more of that is managed just behind
the scenes and it just works. You

478
00:34:55,679 --> 00:34:59,239
don't have to think about it,
you know, you don't have to necessarily

479
00:34:59,280 --> 00:35:04,519
bring in a third vendor or manage
something yourself. And so that's something that

480
00:35:04,519 --> 00:35:07,280
we're thinking a lot about now,
is what that would look like, you

481
00:35:07,360 --> 00:35:10,880
know, to create these kind of
more managed ETL connections to some cloud providers.

482
00:35:10,920 --> 00:35:15,679
Nothing there you know it's in product
today, but something that's it's certainly

483
00:35:15,679 --> 00:35:19,280
on our on our radar screen,
Like we're talking about streaming to say big

484
00:35:19,360 --> 00:35:22,559
quarry or red shift something like that, or to stove like for instead about

485
00:35:22,599 --> 00:35:25,960
the customer needed to do anything extra, that's right, you know what if

486
00:35:25,960 --> 00:35:30,920
you could just do some kind of
an off handshake to that provider and you

487
00:35:30,960 --> 00:35:32,559
know, maybe give us a little
bit of metadata about I guess you're getting

488
00:35:32,559 --> 00:35:36,599
into describing transform. So there's you
know, same sets of defaults where things

489
00:35:36,760 --> 00:35:42,559
just work right. Like that's I
think you know this. I'll say like

490
00:35:42,599 --> 00:35:45,239
Amazon went way down the path of
this, like a specific database for every

491
00:35:45,440 --> 00:35:50,840
possible scenario, and then quickly realize, well, that's creates a big headache

492
00:35:50,840 --> 00:35:53,000
when you're thinking about moving data around. And so they have these different offerings

493
00:35:53,039 --> 00:35:58,840
like blue and other things to you
to move data between services. But I

494
00:35:58,840 --> 00:36:06,079
think there's a lot of uh folks
that aren't content with that situation. Yeah

495
00:36:06,119 --> 00:36:09,400
you got you got us in this
situation. Now help me move data around

496
00:36:09,440 --> 00:36:13,199
more seamlessly without you know, I
don't want teams of engineers that are just

497
00:36:13,239 --> 00:36:17,000
doing un differentiated heavy lifting building tools
to move data from a to b so

498
00:36:17,440 --> 00:36:22,840
uh yeah, I think that's part
of what created this problem that's now resulting

499
00:36:22,880 --> 00:36:24,880
in like zero ETL. I'll say, by the way, too, like

500
00:36:24,920 --> 00:36:31,360
we're more bullish on uh innovation at
the database let layer that can unlock a

501
00:36:31,440 --> 00:36:36,280
more general, generally suitable database.
Right, so fauna, you know,

502
00:36:36,320 --> 00:36:38,159
we even see people starting to push
the bounds where they're issuing you know what

503
00:36:38,239 --> 00:36:42,239
traditionally looks more like analytical queries on
top of FAUNA. I know we're not

504
00:36:42,239 --> 00:36:45,400
optimized for those use cases, but
you know, I'll say, uh,

505
00:36:46,159 --> 00:36:50,400
new databases like FUNA are very powerful, and I think you know, we're

506
00:36:50,440 --> 00:36:53,239
getting away to some extent from that
mold of like, oh, I need

507
00:36:53,880 --> 00:36:58,199
seven different databases for all these specific
use cases, and I have to think

508
00:36:58,239 --> 00:37:00,840
about replicating data between them. I
have to think about keeping data and saying,

509
00:37:01,079 --> 00:37:05,719
you know, et cetera. Oh
for sure. So so rather than

510
00:37:05,800 --> 00:37:08,760
etaling the data at all, just
build the database so that they can meet

511
00:37:08,960 --> 00:37:14,559
those needs in the same platform.
Yeah, yeah, yeah, depending.

512
00:37:14,559 --> 00:37:15,159
I mean, you know, again, I don't want to get back to

513
00:37:15,719 --> 00:37:20,159
you know, you know, use
car salesman here. I'm not saying that

514
00:37:20,400 --> 00:37:23,480
architectural trade offs you make you build
a share that will make them more suited

515
00:37:23,480 --> 00:37:29,280
for a specific set of use cases. But it's very clear that customers don't

516
00:37:29,320 --> 00:37:35,519
want a whole you know, database
portfolio, right, and you see this,

517
00:37:35,559 --> 00:37:37,480
but other you see this going the
other way too. I mean you

518
00:37:37,519 --> 00:37:43,239
see, you know, Snowflake,
for example, you know, launch their

519
00:37:43,400 --> 00:37:46,000
uni store offering where they sort of
try to bolt the transaction pipeline onto your

520
00:37:46,000 --> 00:37:52,159
analytical database. You know, I
haven't played with it. I've heard you

521
00:37:52,199 --> 00:37:54,199
know, their performance issues, things
like that, et cetera. But for

522
00:37:54,199 --> 00:37:58,760
some people it's compelling. If you're
right there, your primary workloads are analytical,

523
00:37:59,639 --> 00:38:01,800
you need transactions for some specific use
cases. You know, that can

524
00:38:01,840 --> 00:38:05,360
be compelling. And so I think
there are you know, we're certainly not

525
00:38:05,400 --> 00:38:07,559
the only ones. There are a
lot of vendors thinking about this. You

526
00:38:07,599 --> 00:38:13,719
know, how do I bring more
functionality potentially into into fewer offerings to make

527
00:38:13,800 --> 00:38:16,800
life easier for customers. I think
that's super important because at least historically with

528
00:38:17,039 --> 00:38:21,280
Snowflake, I haven't looked at it
recently, to be honest, getting the

529
00:38:21,360 --> 00:38:25,519
data in was sort of a challenge. So offering more functionality doesn't necessarily change

530
00:38:25,559 --> 00:38:31,199
that. The zero ETL connection on
the actual database application side is super like

531
00:38:31,239 --> 00:38:37,039
a lot really valuable. Yeah,
yeah, I agree. I guess you

532
00:38:37,039 --> 00:38:42,320
could say databases aren't pokemon, you
don't have to collect them all. True.

533
00:38:44,639 --> 00:38:46,960
I agree with I really got to
get the applause to plug in working

534
00:38:47,000 --> 00:38:52,880
on this because it's just awkward.
I didn't. I should have brought me

535
00:38:52,039 --> 00:38:58,360
my snare DROM and my crash I
could have, given it's downstairs, though,

536
00:38:58,400 --> 00:39:00,320
so we can't make that happen.
I mean, I feel like there's

537
00:39:00,679 --> 00:39:07,719
a duality there though, because the
more sort of fundamental engine aspects that a

538
00:39:07,840 --> 00:39:10,840
database engine offers, it has to
be trading off something right, Like I

539
00:39:10,920 --> 00:39:15,519
do have to pay more because the
data has to be replicated very quickly to

540
00:39:15,719 --> 00:39:20,480
a different format, or you pay
some sort of latency on processing in order

541
00:39:20,639 --> 00:39:23,000
so that it can actually figure out
what the optimal execution is. Like,

542
00:39:23,119 --> 00:39:28,719
we have this problem, so we
primarily use dynamouod V a lot, but

543
00:39:28,760 --> 00:39:31,840
we also have some graph needs and
I still haven't found a good like I

544
00:39:31,880 --> 00:39:37,440
love it graph database for us to
sort of bet on and I'm not sure

545
00:39:37,679 --> 00:39:39,519
that's something that Vaunta does, but
a lot of them don't do that.

546
00:39:40,679 --> 00:39:44,840
It's not an easy thing. Yeah, I mean, you're you're absolutely right.

547
00:39:45,320 --> 00:39:47,760
I think the question is, you
know, you there's going to be

548
00:39:50,960 --> 00:39:52,519
you know, the frontier that you
can get to, right in terms of

549
00:39:52,519 --> 00:39:57,800
how much you can do based on
the architectural decisions that you've made. For

550
00:39:57,840 --> 00:40:00,159
sure, the question is can you
get you know, eighty percent of the

551
00:40:00,199 --> 00:40:04,719
way they're in the same database where
for specific use cases it's good enough.

552
00:40:04,760 --> 00:40:07,280
I mean you mentioned graphs that it's
an interesting example we could dive into.

553
00:40:07,639 --> 00:40:10,360
You know, faun is not neo
for j right, Like, we don't

554
00:40:10,400 --> 00:40:15,960
have a first class concept of edges
between the sort of documents or entities in

555
00:40:16,000 --> 00:40:21,480
our database. You could model that
in documents and fan us, you know,

556
00:40:21,519 --> 00:40:27,599
because we support this ref field type
you know, where you can effectively

557
00:40:28,039 --> 00:40:30,000
uh, you know, denormalize as
part of a query across documents. These

558
00:40:30,039 --> 00:40:35,800
relational capabilities we're talking about, you
can model a lot of these graph use

559
00:40:35,840 --> 00:40:39,239
cases and people do this, right, Like, we see an interesting customer

560
00:40:39,840 --> 00:40:44,039
that's using kind of relationships that you
would think about as more of a graph

561
00:40:44,119 --> 00:40:47,239
type use case to fetch related entities
to go and inject into an ll M

562
00:40:47,320 --> 00:40:50,840
as part of an AI app.
Right, like, you know, so

563
00:40:51,360 --> 00:40:54,400
there are things you can do there, you know. Now, are we

564
00:40:54,480 --> 00:41:00,480
going we made a different set of
architectural decisions than NEO for J So are

565
00:41:00,519 --> 00:41:02,960
we ever going to be as good
for the P ninety nine P one hundred

566
00:41:04,239 --> 00:41:07,039
graph use case. No, that's
not our goal. But if your data

567
00:41:07,079 --> 00:41:10,440
is already in fauna and if you
like our capabilities as just a general purpose

568
00:41:10,440 --> 00:41:14,719
operational database, and then all of
a sudden you have these graph use cases,

569
00:41:14,760 --> 00:41:16,760
you know, is are the requirements
that P and A nine P one

570
00:41:16,840 --> 00:41:21,679
hundred use case where you need to
go and etl data into a purpose build

571
00:41:21,719 --> 00:41:22,639
database. I don't. For some
people the answer of yes, and that's

572
00:41:22,679 --> 00:41:28,199
totally cool. We want to support
those use cases have convenient tools available.

573
00:41:29,119 --> 00:41:30,880
But for a lot of folks the
answer is no. And if we have

574
00:41:30,920 --> 00:41:34,639
the right set of capabilities, you
know, we can we can unlock those

575
00:41:34,679 --> 00:41:37,840
use cases for them, you know, without adding the management overhead of kind

576
00:41:37,880 --> 00:41:40,639
of another offering. That's a really
that's a really good point. And I

577
00:41:40,719 --> 00:41:44,559
just want to set the records rate. We don't use we don't use Java

578
00:41:45,320 --> 00:41:52,000
for ours. But uh no,
I mean there there's there's some joke here

579
00:41:52,079 --> 00:41:58,320
about like Yeah, for sure the
Bredo curve that you can make it look

580
00:41:58,400 --> 00:42:01,000
like it and I even feel like
the graph database are much too slow for

581
00:42:01,159 --> 00:42:05,599
the usage of graph that most people
have, right Like, even if it

582
00:42:05,679 --> 00:42:09,079
is relationship based, you probably can
achieve a much faster results at using Fauna

583
00:42:09,280 --> 00:42:14,559
than pulling out the P one hundred
graph database solution and putting your data in

584
00:42:14,599 --> 00:42:17,679
that it's just usually not as fast
in most cases. Yep, yeah,

585
00:42:17,920 --> 00:42:22,639
definitely true. So more in question
over to you, what was the deciding

586
00:42:22,719 --> 00:42:28,400
factors that pushed you to choosing Dynamo
for your data? You know, I

587
00:42:28,400 --> 00:42:31,719
feel like this comes up a lot, and primarily I think the sort of

588
00:42:31,800 --> 00:42:38,880
data that we're saving is sort of
relationship aspect. But we store the roles

589
00:42:38,920 --> 00:42:44,519
and identities for individual users and the
permissions that are associated with them, and

590
00:42:44,559 --> 00:42:47,639
that lends itself a lot to a
key value store. There is a relationship

591
00:42:47,679 --> 00:42:52,639
aspect there, but as I said, it is sort of like this eighty

592
00:42:52,719 --> 00:42:59,559
twenty principle where most of the data
does not benefit from being highly relation enough.

593
00:43:00,079 --> 00:43:02,880
Also, an ease of usage something
that came up previously, and I

594
00:43:02,880 --> 00:43:07,320
want to ask Tyson here is like
when do you hire a DBA, like

595
00:43:07,360 --> 00:43:12,679
for whatever you words you associated with
the acronym DBA when you hire one,

596
00:43:12,760 --> 00:43:15,039
like, we don't have one.
I don't want to get into the business

597
00:43:15,079 --> 00:43:16,920
of having to get one. I
don't think it scales for us. And

598
00:43:17,000 --> 00:43:24,559
so things like DynamoDB Fauna, these
no SQL or PSEUDOOSEQL document stores that offer

599
00:43:24,639 --> 00:43:30,760
key value aspects I feel like have
a much lower complexity, a much lower

600
00:43:30,920 --> 00:43:36,199
barrier to entry for application engineers than
you say, trying to spin up an

601
00:43:36,239 --> 00:43:40,320
RDS, which also doesn't replicate well. Dynamo offic with global tables. We

602
00:43:40,440 --> 00:43:45,480
offer global solutions as a global company, and having multi regions that are active

603
00:43:45,519 --> 00:43:51,800
active configurations is like a huge importance
for us. Yeah, I'll say,

604
00:43:51,840 --> 00:43:53,360
I mean, so there's a few
interesting ways to go there. First off,

605
00:43:53,360 --> 00:43:57,760
in the Dynamoe because I thought this
was fun, fun question to chase

606
00:43:57,800 --> 00:44:01,400
down a little bit. You know, you're absolutely right, Like Dynamo is

607
00:44:01,559 --> 00:44:08,679
very a great tool for super fast
kV access, predictable latency. You know,

608
00:44:08,760 --> 00:44:14,159
even at several you know, several
nines, you're still getting very predictable

609
00:44:14,280 --> 00:44:19,559
latency. It's interesting because having been
at Amazon, you know where most apps

610
00:44:19,599 --> 00:44:23,679
internally now are being built on Dynamo. There's this almost religion to it where

611
00:44:24,320 --> 00:44:30,320
you're saying, again, we can't
build a performance enough, scalable enough general

612
00:44:30,360 --> 00:44:35,599
purpose database, so we have to
fall back to a tool like Dynamo.

613
00:44:35,639 --> 00:44:39,480
It's effectively at the end of the
day kV access and then build a lot

614
00:44:39,519 --> 00:44:45,400
of complex application logic to go and
support that, right because we have kind

615
00:44:45,400 --> 00:44:51,960
of a lesser consistency model, you
know, limited access patterns. You mentioned

616
00:44:51,960 --> 00:44:53,960
global tables for multi regional application,
but when you go to global tables there's

617
00:44:53,960 --> 00:44:58,239
a lot of Gatcha's, I mean, they're expensive, you know, eventual

618
00:44:58,239 --> 00:45:01,239
consistency again even more limited in terms
of access patterns and what you can do.

619
00:45:02,920 --> 00:45:06,039
And so you know, for sure, I think, you know,

620
00:45:06,119 --> 00:45:08,320
Dynamo is an amazing tool for what
it is for those specific use cases.

621
00:45:08,480 --> 00:45:15,599
But we see a lot of interest
from customers that they want that predictable kV

622
00:45:15,679 --> 00:45:20,800
access which other tools like want to
provide. But then you know, they

623
00:45:20,800 --> 00:45:24,280
don't want to have to think about
transactions in their application code. They don't

624
00:45:24,280 --> 00:45:27,599
they don't want to have to think
about you know, they want to support

625
00:45:27,719 --> 00:45:31,719
very flexible access patterns where a lot
of times you know in Dynamo even kind

626
00:45:31,760 --> 00:45:37,159
of the the adopted mantra of Dynamo, things like single table design. You

627
00:45:37,199 --> 00:45:40,199
know, you really have to which
has been involuntarily, You really have to

628
00:45:40,280 --> 00:45:46,239
understand your access patterns upfront, and
so maybe you know you you you come

629
00:45:46,280 --> 00:45:51,679
up with your data model and things
work fine for that initial use case,

630
00:45:51,719 --> 00:45:53,599
but then you go to build the
next feature and you're like, oh crap,

631
00:45:53,639 --> 00:45:58,639
I'm screwed. You know, it
doesn'ts not gonna support this. So

632
00:45:58,840 --> 00:46:01,639
there are a lot of gotchas there
there. You know, I think great

633
00:46:01,679 --> 00:46:06,119
service for what it is. For
sure, I can say firstthand is somebody

634
00:46:06,239 --> 00:46:07,639
used for an aw services like you
know, they're always going to get a

635
00:46:07,679 --> 00:46:12,039
lot of uplift because they're integrated with
IM CloudWatch, cloud Trail, they're right

636
00:46:12,039 --> 00:46:16,760
there in the ecosystem. But I
do think it's worth for a lot of

637
00:46:16,760 --> 00:46:22,239
folks that are just diving in,
you know, taking a peek at some

638
00:46:22,280 --> 00:46:23,559
of the more modern offerings that are
out there, like Fauna and say,

639
00:46:23,599 --> 00:46:27,039
you know, just because because not
only are they going to work for that

640
00:46:27,079 --> 00:46:30,159
initial use case, even if it's
just KB storage providing super low latency you

641
00:46:30,199 --> 00:46:35,920
know kV, but they're going to
scale to those access patterns without you,

642
00:46:35,920 --> 00:46:37,639
you know, requiring you to kind
of understand all those access patterns up front.

643
00:46:37,639 --> 00:46:40,400
So that's my little spiel. Warn't
you've gone into a separate question,

644
00:46:40,400 --> 00:46:43,320
which is about hiring DVAS. I
don't know. We could go ahead.

645
00:46:43,960 --> 00:46:45,400
I don't know about you either.
I mean, you mentioned a lot of

646
00:46:45,440 --> 00:46:50,519
really interesting things there. I think
that what I'll say is we definitely have

647
00:46:50,559 --> 00:46:53,719
a bimodal distribution where it's very easy
with things like Dinamo dB for a very

648
00:46:53,719 --> 00:46:59,079
simple app to get up and running
without the complexity we' and then there's this

649
00:46:59,199 --> 00:47:00,400
lull in the middle or you don't
want to be in. And we're at

650
00:47:00,440 --> 00:47:06,159
the point on the other side where
we sort of fundamentally know how dynamodd works

651
00:47:05,960 --> 00:47:12,159
as though it was we implemented it
at the service level, because we know

652
00:47:12,199 --> 00:47:15,360
where the edge cases are and we're
figuring out how to get around them or

653
00:47:15,719 --> 00:47:21,559
understand how partitioning even works because we're
at that scale and we have tons of

654
00:47:21,599 --> 00:47:25,039
application code that wraps it to make
it as effective as possible. So yeah,

655
00:47:25,079 --> 00:47:29,840
I mean, at the second mode
at long tail, you for sure

656
00:47:29,880 --> 00:47:31,440
if you're using Dynamoe to b at
scale you will, you will know how

657
00:47:31,519 --> 00:47:35,480
it works for real, and you
will have a lot of application code to

658
00:47:35,519 --> 00:47:37,400
deal with that. Yeah. Absolutely, there's no question, I mean for

659
00:47:37,440 --> 00:47:39,599
sure. And then once you're in
that state, you know, we talked

660
00:47:39,599 --> 00:47:43,960
to a lot of companies that are
there, say, we built up expertise,

661
00:47:44,360 --> 00:47:45,639
we have a lot of application code
around it. You know, it's

662
00:47:45,639 --> 00:47:50,239
working, we have there's for sure
pain. The question is like, when

663
00:47:50,280 --> 00:47:53,119
does that pain get too high?
You know. We talked to a company

664
00:47:53,159 --> 00:47:58,119
that was a big Dynamald customer,
you know, and it was taking them

665
00:47:58,159 --> 00:48:00,519
like literally I think days to build
you know, new gsis. They're running

666
00:48:00,519 --> 00:48:02,719
in GSI limits, et cetera.
And so they were like out of the

667
00:48:02,719 --> 00:48:05,239
point where they were. You know, it's like, Okay, this is

668
00:48:05,280 --> 00:48:09,360
literally no longer tenable. We have
to explore other options because it's not working

669
00:48:09,360 --> 00:48:12,440
for our use case. But that's
pretty extreme, you know, And there

670
00:48:12,480 --> 00:48:15,679
are a lot of companies that are
in the state that you're in where Dynamo

671
00:48:15,760 --> 00:48:20,599
is working great. It's a very
powerful tool. They've built up internal expertise

672
00:48:20,639 --> 00:48:23,599
and they've built these kind of this
layer of their application on top of that.

673
00:48:23,599 --> 00:48:27,880
That's necessity you know, for their
specific use case. Uh, and

674
00:48:27,920 --> 00:48:30,440
then may be fine, Like I'm
not that's that's you know, I could

675
00:48:30,519 --> 00:48:34,760
could be the right spot for them
to be in, you know, I

676
00:48:35,400 --> 00:48:37,840
think I guess my point was more
around there's a lot of people that dive

677
00:48:37,880 --> 00:48:42,679
in because they're there in the ABS
ecosystem. It's a convenient tool without necessarily

678
00:48:42,800 --> 00:48:45,519
understanding that they're going to have to
go and do what you guys did for

679
00:48:45,719 --> 00:48:50,440
which is a lot of application,
you know, or a lot of investment

680
00:48:50,559 --> 00:48:53,880
around the database to make it work
for your specific use case. And you

681
00:48:53,960 --> 00:48:55,639
may not need to do that,
like if you do, there may be

682
00:48:57,519 --> 00:49:00,159
kind of other more modern databases out
there that handle some of that, you

683
00:49:00,199 --> 00:49:02,400
know, what i'd consider to be
more un differentiated. Have you lifting for

684
00:49:02,599 --> 00:49:07,840
some use cases not for all use
cases? On you know, on on

685
00:49:07,880 --> 00:49:10,239
your behalf, So that that was
more what I was was was pushing.

686
00:49:10,519 --> 00:49:15,920
Yeah, I totally agree. I
do want to dig into the DBA thing

687
00:49:15,960 --> 00:49:21,719
though. What do you think the
role of the DBA is moving forward?

688
00:49:21,719 --> 00:49:23,159
Like from here moving forward? Do
you think it still exists? Is there

689
00:49:23,159 --> 00:49:29,480
a particular place where it makes sense? Yeah? I think I mean so

690
00:49:29,719 --> 00:49:36,639
DBA has traditionally understood which is like
a human, you know, thinking about

691
00:49:36,679 --> 00:49:38,840
pets on a kind of a very
one off basis, like thinking about database

692
00:49:38,880 --> 00:49:45,039
instances like you know that that will
exist, you know, for a while,

693
00:49:46,000 --> 00:49:51,280
just essentially to service this these kind
of legacy applications that are written on

694
00:49:51,320 --> 00:49:55,440
top of you know, single instance, my SQL postgress whatever, you know,

695
00:49:55,480 --> 00:49:59,760
SQL server instances that will be around
again. We'll be around for a

696
00:49:59,800 --> 00:50:04,840
long so there we demand for that, you know. But I think looking

697
00:50:04,880 --> 00:50:08,320
forward, I think what you're going
to see is, you know, software

698
00:50:08,320 --> 00:50:15,039
engineers with you know, some domain
expertise in terms of data and data modeling,

699
00:50:15,079 --> 00:50:20,719
because that's a big field and nobody
can be, uh, you know,

700
00:50:21,079 --> 00:50:23,719
a software engineer with general expertise across
every area. But you're gonna see

701
00:50:23,719 --> 00:50:30,000
software engineers with with that kind of
expertise, you know, who are helping

702
00:50:30,119 --> 00:50:35,679
enterprises at scale to think about their
data architecture, you know, and how

703
00:50:35,800 --> 00:50:39,639
data is consumed across you know a
complex soa or whatever whatever that architecture looks

704
00:50:39,679 --> 00:50:44,000
like, right, But they're going
to be doing it in scalable ways.

705
00:50:44,039 --> 00:50:49,000
They're going to be taking advantage of
things like you know, these the faunic

706
00:50:49,039 --> 00:50:52,559
capabilities that are referenced earlier, where
it's going to feel more like writing application

707
00:50:52,679 --> 00:50:57,800
code traditionally has. They'll be using
all these practices like you know what we

708
00:50:57,840 --> 00:51:02,159
call schemas code more similar to infrastructure
as code. You know, it'll be

709
00:51:02,159 --> 00:51:07,920
bringing that cattle nut pets kind of
mindset to to the database, so that

710
00:51:07,920 --> 00:51:09,280
that there's going to be more and
more of a need for folks in that

711
00:51:09,400 --> 00:51:15,360
kind of role, which looks more
like you know, software engineer with some

712
00:51:15,400 --> 00:51:22,000
expertise in data and data modeling.
You're integrating with the database layer than you

713
00:51:22,079 --> 00:51:24,159
are figuring out how to optimize one. I mean, obviously, you know,

714
00:51:24,159 --> 00:51:29,039
I think that's a great answer.
I mean, the cloud providers or

715
00:51:29,960 --> 00:51:31,800
the faunas of the world, right, if you want to be a DBA,

716
00:51:31,880 --> 00:51:36,039
maybe that's where you go, right
to these products that are offering this

717
00:51:36,800 --> 00:51:40,079
primarily at scale, so that companies
don't have to think about what their engineers

718
00:51:40,079 --> 00:51:44,760
are going to have to know in
order to put data in a database somewhere.

719
00:51:45,280 --> 00:51:46,000
Oh yeah, for sure. I
mean, but the people that we're

720
00:51:46,039 --> 00:51:50,039
hiring, you know, like the
it's actually it's hard to go and recruit

721
00:51:50,039 --> 00:51:53,559
for these these roles. But you
know, people folks with deep database sme

722
00:51:54,280 --> 00:51:57,719
that are yeah, that are actually
going to get in and think about you

723
00:51:57,719 --> 00:52:02,199
know, uh, you know,
improve performance of sort of the transaction pipeline,

724
00:52:02,400 --> 00:52:06,519
you know, store the storage engine. Uh, for sure, I

725
00:52:06,559 --> 00:52:09,320
mean those are that's a there's there's
a there's a limited pool of people that

726
00:52:09,360 --> 00:52:13,000
have are you know, I have
spent time solving those challenges in the real

727
00:52:13,079 --> 00:52:16,840
world. They're very highly sought after, and we would rather hire those people,

728
00:52:17,280 --> 00:52:20,480
uh, you know, so that
you don't have to think about those

729
00:52:20,519 --> 00:52:22,800
kinds of hard challenges, for sure. Is the way that we think about

730
00:52:22,840 --> 00:52:25,480
it, Like, we want to
take as much of that sort of complexity

731
00:52:25,599 --> 00:52:31,559
as as reasonably possible and solve those
challenges in a common way so that you

732
00:52:31,599 --> 00:52:35,119
know, more and more, I
mean, our the primary goal of what

733
00:52:35,119 --> 00:52:38,280
we're doing is trying to allow uh, these application development teams to go and

734
00:52:38,320 --> 00:52:42,760
innovate and focus on their application and
not you know, again not do this

735
00:52:43,119 --> 00:52:46,000
you know, undifferentiated heavy lifting.
I mean, you know, one of

736
00:52:46,039 --> 00:52:51,679
the things I saw in a past
life when I was a leading the code

737
00:52:51,679 --> 00:52:57,039
pipeline and code deplay teams at Amazon. It was interesting because you know,

738
00:52:57,079 --> 00:52:59,760
at that time we were competing,
we had built an interesting offering at kind

739
00:52:59,800 --> 00:53:02,760
of a lower layer than kind of
the githubs and the get labs of the

740
00:53:02,800 --> 00:53:07,159
world, with you know, things
like actions that they were that were launched,

741
00:53:07,159 --> 00:53:10,960
and that was compelling for like the
p one hundred of enterprises that wanted

742
00:53:12,000 --> 00:53:14,039
to go and innovative. That layer
weren't kind of like what we were talking

743
00:53:14,039 --> 00:53:15,840
about top of Adnamo right where it
actually matters and you need to go and

744
00:53:15,880 --> 00:53:21,760
do this, you know, build
these specific release capabilities in your application.

745
00:53:22,079 --> 00:53:23,239
But the bulk of people were coming
to us and they're saying, hey,

746
00:53:23,239 --> 00:53:27,119
make this, make this really easy. Make it easier for me to release

747
00:53:27,159 --> 00:53:30,760
safely like Amazon does, but for
my enterprise without me having to staff an

748
00:53:30,760 --> 00:53:35,519
internal team of eight people, you
know, to build this layer on top

749
00:53:35,559 --> 00:53:37,360
of you know, say cook pipeline
or whatever the tool you know, Jenkins,

750
00:53:37,360 --> 00:53:42,079
whatever the tools that they're using.
I heard that repeatedly from every every

751
00:53:42,800 --> 00:53:45,559
enterprise that we talked to, and
you can think about what we're doing in

752
00:53:45,559 --> 00:53:49,199
some ways this kind of analog in
in the you know, the the database

753
00:53:49,239 --> 00:53:52,199
that are different. I like it
you drove barrel between you know, code,

754
00:53:52,199 --> 00:53:55,320
Pipeline and Jenkins, because you know
those are at the same level for

755
00:53:55,440 --> 00:53:59,159
me, they're different for sure.
But yeah, we could go down a

756
00:53:59,159 --> 00:54:00,559
whole rabbit hole there for sure.
But I would say, like the common

757
00:54:00,559 --> 00:54:02,840
thing is, you know, when
I was when I was leaving the infrastructure

758
00:54:02,880 --> 00:54:07,400
group at Riot, you know,
we had innovated a lot on top of

759
00:54:07,480 --> 00:54:12,639
Jenkins for reasons, and you know, so I guess the parallel is that,

760
00:54:12,880 --> 00:54:16,039
you know, those lower level,
less opinionated offerings that are very powerful,

761
00:54:16,159 --> 00:54:21,719
but in practice you end up needing
to staff you know, a group,

762
00:54:21,880 --> 00:54:23,840
a team or a group of people
to think about how to take that

763
00:54:23,880 --> 00:54:28,159
and apply it to your specific domain. And you end up building these layers

764
00:54:28,760 --> 00:54:32,400
you know, on top or in
your application to handle you know, to

765
00:54:32,719 --> 00:54:36,960
take that and integrate it into your
use case. That's the common I guess

766
00:54:37,000 --> 00:54:39,320
the common thread I was trying to
try to I'm totally with you there.

767
00:54:39,320 --> 00:54:45,719
Actually it was my job at a
previous instance to actually migrate the organization to

768
00:54:45,840 --> 00:54:52,119
you start using get and along with
that was turn off Jenkins and actually start

769
00:54:52,199 --> 00:54:54,800
using I get lab at the time, and there was a whole number of

770
00:54:54,920 --> 00:54:58,880
challenges with that, but for sure, no one was going to do that

771
00:54:58,960 --> 00:55:05,960
work if it requires building on top
of the equivalent of Code Pipeline, Yeah,

772
00:55:06,000 --> 00:55:09,000
for sure. I mean, also
in fairness, I think we Amazon

773
00:55:09,000 --> 00:55:13,400
it's interesting, you know, internally, I think Amazon spends more time thinking

774
00:55:13,400 --> 00:55:16,239
about things like release safety than any
any company on the planet. I feel

775
00:55:16,239 --> 00:55:22,199
fairly confidence saying that. And you
know, Code Pipeline has interesting capabilities inspired

776
00:55:22,199 --> 00:55:27,679
by that internal learning that I think
made it the best offering. If you

777
00:55:27,679 --> 00:55:31,079
were a large enterprise with unique release
requirements, meaning you need to release across

778
00:55:31,119 --> 00:55:37,159
regions, and you know, you
need to think about let's say four plus

779
00:55:37,239 --> 00:55:40,159
nines of availability, et cetera.
You know, I think we had optimized

780
00:55:40,159 --> 00:55:45,920
in some ways for those sets of
capabilities, more so than just like you

781
00:55:45,920 --> 00:55:50,719
know, it's the typical developer that's
using GitHub actions. For example, it's

782
00:55:50,760 --> 00:55:55,679
totally fine to spin up containers to
run you know, release pipelines that actually

783
00:55:55,719 --> 00:56:01,320
have no knowledge of other executions in
the pipeline because they're only releasing once at

784
00:56:01,360 --> 00:56:04,320
a time and maybe once a day, you know, or whatever. It's

785
00:56:04,320 --> 00:56:07,119
not there's not this complex sequencing.
So we were thinking about those kinds of

786
00:56:07,199 --> 00:56:12,239
use cases, you know that that
are super interesting but more relevant to the

787
00:56:12,280 --> 00:56:17,079
p one hundred of of you know, release automation, and again getting back

788
00:56:17,079 --> 00:56:21,079
to the kind of no free lunch
theme, you make trade offs to do

789
00:56:21,079 --> 00:56:23,039
that, and ease of use is
one of the babies that could sacrifice sometimes

790
00:56:22,880 --> 00:56:25,920
as part of as part of those
trade offs. No, I think I

791
00:56:25,960 --> 00:56:34,360
think you're absolutely right there. I
think that highlights one of the one of

792
00:56:34,400 --> 00:56:37,320
the needed or one of the neees
of using managed providers. Like as a

793
00:56:37,320 --> 00:56:44,280
managed provider, you know, I'm
looking not just for management of the infrastructure,

794
00:56:44,320 --> 00:56:49,400
but also like some guidance on how
to effectively use the product. Mm

795
00:56:49,480 --> 00:56:54,320
hmm, yep, yeah, I
mean, yeah, No, I agree.

796
00:56:54,400 --> 00:57:00,599
I mean I think the there's sort
of tiers to what you mean and

797
00:57:00,679 --> 00:57:01,920
managed I mean, this is true
of serverlists too, right, Like people

798
00:57:02,000 --> 00:57:07,239
use the term serverlists that I've described
just about everything todays it's become a little

799
00:57:07,239 --> 00:57:12,039
bit whitewashed. Yeah, you know, you know, we say all the

800
00:57:12,039 --> 00:57:15,400
time that we see APIs as kind
of the highest possible layer of serverleists because

801
00:57:15,440 --> 00:57:21,800
literally, you know, your its
request response, specified input output, and

802
00:57:21,800 --> 00:57:23,599
you're not you know, thinking about
any of those lower level concerns. But

803
00:57:23,599 --> 00:57:27,599
you're getting to is interesting point well, which is you can even go higher

804
00:57:27,639 --> 00:57:30,039
than that, which is, you
know, thinking about things like documentation,

805
00:57:30,239 --> 00:57:34,559
instruction and learning and all those things
as sort of part of that core offering

806
00:57:34,639 --> 00:57:36,920
as well. To take the abstraction
if even hire, which I think is

807
00:57:36,960 --> 00:57:40,400
a good point. Yeah, to
use the I think I used this quote

808
00:57:40,440 --> 00:57:45,760
in last week's episode too, from
Jurassic Park. You spend so much time

809
00:57:45,800 --> 00:57:47,800
thinking about if you could, You
never stop to think if you should.

810
00:57:47,800 --> 00:57:53,000
And I think that's one of the
opportunities managed providers have is to to answer

811
00:57:53,039 --> 00:57:58,079
that or provide some insight into whether
or not you should be taking this approach.

812
00:57:58,960 --> 00:58:01,119
Yeahhen you said Jurassic I'm a disappointment, he said, Jurassic Park.

813
00:58:01,119 --> 00:58:04,320
I thought you were going to go
Samuel L. Jackson and say hold on

814
00:58:04,360 --> 00:58:12,320
to your butts. Are rebooting the
servers, right, Yeah, I mean

815
00:58:13,760 --> 00:58:15,920
there's there's a limited number of Samuel
L. Jackson quotes you can use on

816
00:58:15,960 --> 00:58:24,639
the podcast. I'm a big fan
of all of them, but there's a

817
00:58:24,840 --> 00:58:34,119
of them. Uh, where are
we asso there? Yeah, well,

818
00:58:34,400 --> 00:58:37,559
you know we're coming up on an
hour here, So how about a quick

819
00:58:37,599 --> 00:58:46,639
summary on who's the who the ideal
user of fauna is and what they can

820
00:58:46,719 --> 00:58:52,400
expect by trying out the service.
Yeah, I mean, you know,

821
00:58:52,480 --> 00:58:58,719
really i'd say the ideal, h
you know, fauna user is someone who's

822
00:58:58,760 --> 00:59:02,239
building modern Apple locations that store operational
data, right. I think that's a

823
00:59:02,280 --> 00:59:07,599
pretty that's pretty general. I mean
we see there are certainly specific verticals where

824
00:59:07,599 --> 00:59:10,000
we see you know, more adoptions
if you talk about those, but you

825
00:59:10,000 --> 00:59:15,519
know, it's a pretty generally applicable
product for you know, these these different

826
00:59:15,599 --> 00:59:21,639
transactional workloads. You know, particularly
if you if you you know, applications

827
00:59:21,639 --> 00:59:30,239
that have very high performance requirements,
responsive applications, et cetera, applications that

828
00:59:30,360 --> 00:59:36,519
have high availability and security requirements.
You know, where because we manage things

829
00:59:36,559 --> 00:59:39,039
for you, you know, typically
we're going to be more available than if

830
00:59:39,039 --> 00:59:43,519
you go and try to manage your
own database. I think those are a

831
00:59:43,519 --> 00:59:47,039
few areas where where we really shine, right And when you say high performance,

832
00:59:47,039 --> 00:59:52,000
you're talking like Nasdaq level high performance. Would you go that high?

833
00:59:52,079 --> 00:59:54,320
Yeah? I mean we have we
have folks that have built you know,

834
00:59:54,400 --> 01:00:00,639
different financial kind of you know,
like cryptocurrency for example. We have folks

835
01:00:00,639 --> 01:00:06,320
that have built like trading applications,
uh, you know, streaming streaming data

836
01:00:06,400 --> 01:00:12,400
using our events streaming. But again
the main focus there is that because the

837
01:00:12,440 --> 01:00:15,519
way that we do multi regional application
and the way that we have that data

838
01:00:15,559 --> 01:00:19,800
there, and even the optimizations we've
done at the routing layer, you know,

839
01:00:19,840 --> 01:00:22,960
we can just get you to that
data very quickly to do things,

840
01:00:22,960 --> 01:00:25,880
to make decisions based on that data, or to render that data. So

841
01:00:27,199 --> 01:00:30,880
yeah, you know latency sensitive applications. I mean well, from the from

842
01:00:30,920 --> 01:00:35,039
the knowledge that I have about this, a lot of the order books are

843
01:00:35,199 --> 01:00:39,159
usually tried to be saved in memory
anyway, so you persisting them to a

844
01:00:39,199 --> 01:00:42,440
database. I mean, you could
pick anything. It seems like Fana would

845
01:00:42,480 --> 01:00:45,199
be just as good a choice as
anything else, whatever makes sense for the

846
01:00:45,480 --> 01:00:51,960
actual application. I got you right
on cool. Well, before we move

847
01:00:52,000 --> 01:00:54,719
on to picks, Tyson. People
want to learn more about you, interact

848
01:00:54,719 --> 01:00:58,119
with you, find out more about
Fauna. What's the best way for them

849
01:00:58,119 --> 01:01:00,559
to do that? Yeah, for
fun, I mean funa dot com.

850
01:01:00,679 --> 01:01:04,719
You know, reach out to us, interact with us on social media,

851
01:01:04,960 --> 01:01:08,679
email, drop me line whatever.
I guess I'm less interesting, but I'm

852
01:01:08,679 --> 01:01:14,559
around occasionally. That mostly works.
I'm not much of a social media guy,

853
01:01:15,800 --> 01:01:19,400
but but yeah, I'm I'm around
on the platform, so it feel

854
01:01:19,440 --> 01:01:22,039
free to drop me a line.
All right, awesome, let's do some

855
01:01:22,119 --> 01:01:27,559
picks, Warren, I want to
kick us off. He always likes picking

856
01:01:27,599 --> 01:01:32,559
on me to go first. So
that's that's really why he needed another host

857
01:01:32,639 --> 01:01:38,800
in here, so that start the
time. Yeah. Yeah, So mine's

858
01:01:38,800 --> 01:01:43,400
going to be something for my personal
life. I know that as a DevOps

859
01:01:43,440 --> 01:01:49,079
advocate, optimization uh is such a
huge part of what we do, and

860
01:01:49,519 --> 01:01:53,159
especially automation as well, but optimization
primarily, and so this is about picking

861
01:01:53,199 --> 01:01:59,199
socks. I have to say that
if you're someone that loses some socks every

862
01:01:59,199 --> 01:02:04,639
once in a while to the washing
machine or dryer monster, just when the

863
01:02:04,639 --> 01:02:07,400
next time you're out and you need
some more socks, just get like twenty

864
01:02:07,440 --> 01:02:10,159
pairs of whatever it is. You'll
never have to think about it again.

865
01:02:10,239 --> 01:02:14,159
And when you lose one of them, you won't even know and it won't

866
01:02:14,159 --> 01:02:16,840
even matter. From that, get
a whole doesn't matter, just throw it

867
01:02:16,840 --> 01:02:22,840
away. So especially favorite socks,
I gotta say just absolutely fantastic. Has

868
01:02:22,920 --> 01:02:29,079
changed my life right on. It's
a great pretty socks for and I'm like

869
01:02:29,199 --> 01:02:31,800
order the same kind and bulk from
Amazon, and every time they start getting

870
01:02:31,800 --> 01:02:37,519
a little chevy and chuck them out
and go Yeah, that's that's definitely the

871
01:02:37,559 --> 01:02:38,840
thing to do. I tried doing
it with shoes one time. That was

872
01:02:38,880 --> 01:02:43,880
a mistake. I would not recommend
buy any more than one of the same

873
01:02:43,960 --> 01:02:47,719
kind of shoe. But they also
deteriorate over time. So if you really

874
01:02:47,760 --> 01:02:51,760
do like something you've got and you
know it's gonna get worn out in the

875
01:02:51,800 --> 01:02:57,840
future, get it. Get multiple
extra pairs, right on fair advice,

876
01:02:58,880 --> 01:03:01,239
Tyson, What you got for a
pick? Well, I'm gonna, I'm

877
01:03:01,320 --> 01:03:05,039
I'm so, I'm told I can
go pretty broad here. I'm gonna yeah,

878
01:03:05,079 --> 01:03:08,239
for sure, this is a bit
out there. But I'm a wine

879
01:03:08,320 --> 01:03:14,159
guy. My my biggest hobby when
I'm not not not making software, we

880
01:03:14,199 --> 01:03:17,679
actually make make a bit of wine. I love. There's something I think

881
01:03:17,800 --> 01:03:22,760
very rewarding when your day job is
thinking about software and something that's intangible from

882
01:03:22,760 --> 01:03:24,519
like pretty much of work in and
making something that you know you pour into

883
01:03:24,519 --> 01:03:29,239
a glass and and enjoy at the
end of the day. So, uh,

884
01:03:29,800 --> 01:03:30,400
my pick, I'm gonna give a
shout out. I live in the

885
01:03:30,440 --> 01:03:35,760
state of Washington. There's some pretty
amazing wine being made up here, and

886
01:03:35,840 --> 01:03:37,320
so if you want to try some
good Washington wine. I'll give a shout

887
01:03:37,320 --> 01:03:42,239
out to a friend of mine who
mixed wine at a winery called the Bapiano

888
01:03:42,360 --> 01:03:45,360
Silver in Walla. Walla does a
great cave and a great Sara. So

889
01:03:45,400 --> 01:03:49,960
if you're looking for to experiment with
some really good Washington wine, you can

890
01:03:50,000 --> 01:03:55,599
go in and uh and check them
out right on. Awesome cool for me,

891
01:03:57,960 --> 01:04:00,280
my pick I. I live on
the the edge of the country,

892
01:04:00,280 --> 01:04:04,239
and so I go for long runs
out in the countryside pretty often, and

893
01:04:05,039 --> 01:04:10,639
there's a lot of people who have
dogs out there and no fences and no

894
01:04:10,800 --> 01:04:14,320
leashes, and most of the time
the dogs are cool, but occasionally you

895
01:04:14,360 --> 01:04:18,440
get some dogs that are pretty territorial. And so I recently picked up the

896
01:04:19,000 --> 01:04:27,039
Viper Tech heavy duty stun gun,
and the thing is just so cool because

897
01:04:27,079 --> 01:04:30,199
you know, like I'm going to
try to avoid, you know, becoming

898
01:04:30,280 --> 01:04:33,880
the target of the dog's aggression.
And if a dog does come after me,

899
01:04:33,920 --> 01:04:35,760
I don't want to hurt it,
but you know, at the same

900
01:04:35,760 --> 01:04:39,599
time, I don't want to get
hurt either, And so I did a

901
01:04:39,599 --> 01:04:43,639
lot of research and a few people
suggested stun guns, you know, a

902
01:04:43,679 --> 01:04:47,159
taser number one, because you can
just click it and the noise is enough

903
01:04:47,159 --> 01:04:51,199
to deter most dogs, but then
if it escalates, you know, you've

904
01:04:51,199 --> 01:04:55,639
got the ability to tase them as
well. And so yeah, I picked

905
01:04:55,719 --> 01:05:00,679
up the Viper Tech, just ordered
it on Amazon and it's it's pretty cool.

906
01:05:00,280 --> 01:05:03,000
I haven't actually used it yet,
haven't had to use it yet other

907
01:05:03,079 --> 01:05:06,440
than just you know, seeing a
few dogs and sure enough, you know,

908
01:05:06,480 --> 01:05:09,719
you click it and they're like,
ah, yeah, okay, we're

909
01:05:09,719 --> 01:05:16,280
done. So how heavy is it? It's super light, Like carrying it

910
01:05:16,280 --> 01:05:21,519
in my hand doesn't doesn't even register. Got it cool? So yeah,

911
01:05:21,519 --> 01:05:25,519
I was worried about that, you
know, worried about carrying it and having

912
01:05:25,559 --> 01:05:30,559
it just become cumbersome. But it
hasn't been by any means. So there

913
01:05:30,559 --> 01:05:35,559
you go. Got socks, wine
and a stun gun from today's episode.

914
01:05:35,679 --> 01:05:44,920
What could go wrong? All these
things together? Right? Awesome? Well,

915
01:05:45,039 --> 01:05:48,280
Tyson, thanks for joining us.
It's been super insightful and pretty entertaining,

916
01:05:48,320 --> 01:05:51,119
so appreciate it. Yeah, it
was my pleasure. Thank you for

917
01:05:51,119 --> 01:05:55,440
having me. Uh yeah, it's
love fun, cool right on burn.

918
01:05:55,480 --> 01:05:59,119
Thanks for joining me once again.
Thanks for holding up the co host role

919
01:05:59,159 --> 01:06:02,719
and showing up. Appreciate it and
to all the listeners, Thank y'all for

920
01:06:02,760 --> 01:06:09,000
listening, and we will see y'all
next week MHM.
