In this episode, our guest Gwen Shapira talks about her co-founded database startup Nile, a serverless Postgres database. She explains how they implemented the multi-tenant features, made sure that customers are probably isolated, how scalability works, and what the future holds. Gwen has years and years of experience using technologies as Oracle databases, PostgreSQL, Kafka, and many more.
In this episode of Cloud Commute, Chris and Gwen discuss:
- Building Nile: A serverless Postgres for SaaS applications
- Challenges of scaling multi-tenant architecture in databases
- Kubernetes migration and infrastructure automation
- The future of AI and vector databases in enhancing performance
Interested to learn more about the cloud infrastructure stack like storage, security, and Kubernetes? Head to our website (www.simplyblock.io/cloud-commute-podcast) for more episodes, and follow us on LinkedIn (www.linkedin.com/company/simplyblock-io). You can also check out the detailed show notes on Youtube (www.youtube.com/watch?v=e8dVUSwf_Eo).
You can find Gwen Shapira on X @gwenshap and Linkedin: /gwenshapira.
About simplyblock:
Simplyblock is an intelligent database storage orchestrator for IO-intensive workloads in Kubernetes, including databases and analytics solutions. It uses smart NVMe caching to speed up read I/O latency and queries. A single system connects local NVMe disks, GP3 volumes, and S3 making it easier to handle storage capacity and performance. With the benefits of thin provisioning, storage tiering, and volume pooling, your database workloads get better performance at lower cost without changes to existing AWS infrastructure.
👉 Get started with simplyblock: https://www.simplyblock.io/buy-now
🏪 simplyblock AWS Marketplace: https://aws.amazon.com/marketplace/seller-profile?id=seller-fzdtuccq3edzm
00:00:00
When we started Nile, my
00:00:02
co-founder and I really
00:00:04
wanted something that
00:00:05
would signify we were
00:00:06
building a platform.
00:00:07
So for us, having this
00:00:09
major river, a major
00:00:11
artery that things are
00:00:12
built on top of, was
00:00:14
a very good analogy.
00:00:15
The most valued guy
00:00:16
from my perspective was
00:00:18
the one that built the
00:00:19
Argo CD, the Jenkins
00:00:21
pipeline, the Kubernetes
00:00:22
cluster, all of that,
00:00:24
because in the end,
00:00:25
it was literally you
00:00:26
commit to your Git
00:00:27
repository, make a
00:00:29
new tag, the build
00:00:30
pipeline picks it up,
00:00:31
the deployment pipeline
00:00:32
picks it up, and you
00:00:34
magically have the
00:00:36
new version deployed.
00:00:36
And it was incredible.
00:00:38
So we were like, how
00:00:40
do we isolate tenants?
00:00:41
How do we give them
00:00:42
privacy and security?
00:00:43
How do we give each
00:00:45
one the performance
00:00:46
they need?
00:00:46
How do you scale
00:00:47
up as the number
00:00:48
of customers grows,
00:00:50
which is different
00:00:50
than scaling up as a
00:00:52
single customer grows?
00:00:55
You’re listening to
00:00:56
Simplyblock’s Cloud
00:00:57
Commute Podcast,
00:00:58
your weekly 20-minute
00:00:59
podcast about
00:01:00
cloud technologies,
00:01:01
Kubernetes, security,
00:01:02
sustainability,
00:01:03
and more.
00:01:06
Hello everyone.
00:01:07
Welcome back to this
00:01:08
week’s episode of
00:01:09
Simplyblock’s Cloud
00:01:09
Commute Podcast.
00:01:11
I’m not saying I have
00:01:12
another incredible
00:01:12
guest because today I
00:01:14
have an actually super,
00:01:15
super incredible guest.
00:01:19
Don’t laugh, you
00:01:21
know it’s right.
00:01:24
Gwen, it is a
00:01:26
pleasure to have you.
00:01:28
I don’t want to say that
00:01:29
all the other guests are
00:01:32
boring, but to me, you
00:01:34
are actually special,
00:01:36
so thank you very
00:01:36
much for being here.
00:01:39
Maybe just tell us
00:01:40
a little bit about
00:01:40
yourself, who you are,
00:01:42
what you do, and we’ll
00:01:44
take it from there.
00:01:45
Thank you.
00:01:46
So, first of all, thank
00:01:47
you for inviting me,
00:01:48
and I’m super, super,
00:01:50
super duper excited
00:01:51
to be on your show.
00:01:56
I am currently
00:01:58
co-founder of
00:01:59
Nile, where we are
00:02:00
building serverless
00:02:01
Postgres for SaaS.
00:02:04
And before that, I
00:02:06
spent six, almost seven
00:02:09
years at Confluent.
00:02:10
I jumped to Confluent,
00:02:12
which for those who
00:02:13
haven’t heard, is
00:02:13
the Kafka company,
00:02:14
essentially.
00:02:17
There are a bunch of
00:02:18
Kafka companies now,
00:02:19
and it’s probably very
00:02:20
not Apache-correct to
00:02:22
say that, but it was a
00:02:23
company founded by the
00:02:25
people who started the
00:02:26
Apache Kafka project
00:02:27
and had huge investments
00:02:31
in the Apache Kafka
00:02:32
project over the years.
00:02:34
I was there from when it
00:02:38
was like, I was employee
00:02:39
either 10, 11, or 12.
00:02:41
We joined three of
00:02:42
us on the same day,
00:02:43
so I will never know
00:02:43
my exact number.
00:02:44
And by the time I
00:02:45
left, it was thousands
00:02:47
of employees.
00:02:48
So, that was
00:02:51
quite the journey.
00:02:52
I did a lot of
00:02:53
different roles.
00:02:54
I joined as an engineer,
00:02:55
I moved to product,
00:02:56
I moved to marketing,
00:02:58
and then I moved
00:02:59
back to engineering,
00:03:00
and then I did some
00:03:01
engineering management.
00:03:02
So, I got to experience
00:03:04
the ride, which kind
00:03:05
of helped me prepare
00:03:06
to start my own
00:03:07
company in some ways,
00:03:08
especially distinct in
00:03:10
product and marketing.
00:03:12
And then before that,
00:03:13
all of my background
00:03:14
is basically in data.
00:03:15
I started at HP and
00:03:18
then I worked on Oracle
00:03:21
for a very long time.
00:03:22
I did some
00:03:23
MySQL, Hadoop,
00:03:26
and then it was
00:03:28
Confluent and Kafka.
00:03:29
So, I have a
00:03:31
long career.
00:03:32
The way I like saying it
00:03:34
is, I’ve spent the last
00:03:35
20 years moving data
00:03:36
from place to place,
00:03:37
and I’m not done yet.
00:03:40
You see, exactly, that’s
00:03:41
the reason why I say
00:03:42
you’re a very special
00:03:43
guest to me, because
00:03:45
I know you mostly from
00:03:46
Twitter these days, and
00:03:49
I’ve never seen you talk
00:03:50
about anything but data.
00:03:52
And that is amazing.
00:03:55
Any kind of database,
00:03:56
any kind of, as
00:03:57
you said, data
00:03:58
movement, data
00:03:59
placement, whatever.
00:04:01
And I specifically love
00:04:03
all your engagement
00:04:05
with the different
00:04:06
communities, asking
00:04:08
questions, actually
00:04:10
meaningful questions.
00:04:11
I think that is very
00:04:12
different from a
00:04:13
lot of other people.
00:04:14
Yeah,
00:04:16
as I said, thank
00:04:17
you for being here.
00:04:17
It’s awesome.
00:04:18
I’m like, I’m the
00:04:20
one who’s excited.
00:04:23
You talked about Nile.
00:04:26
I always want to
00:04:26
say Neil, the German
00:04:28
pronunciation of it.
00:04:29
We talked about that
00:04:30
before in the pre-run
00:04:32
to this session.
00:04:34
Maybe tell us a little
00:04:35
bit about Nile, your
00:04:38
serverless Postgres
00:04:39
installation, and
00:04:40
why it is called
00:04:40
Nile, not Neil.
00:04:42
Ah, yeah.
00:04:43
The name question.
00:04:45
So, first of all,
00:04:48
I’m from the Middle
00:04:49
East, so I kind of
00:04:51
grew up with the Nile
00:04:53
and stories about
00:04:54
the Nile and so on.
00:04:55
And for me, it’s kind
00:04:57
of the bedrock of what
00:05:00
used to be a giant
00:05:01
empire, and it’s still
00:05:02
the bedrock of so much
00:05:04
commerce and so much
00:05:07
life that has been
00:05:08
going on around it.
00:05:09
And when we started
00:05:11
Nile, my co-founder
00:05:13
and I, we really
00:05:15
wanted something that
00:05:16
would signify we’re
00:05:17
building a platform
00:05:18
that businesses and
00:05:24
life, in general, would
00:05:26
be built on top of.
00:05:28
And so for us, having
00:05:30
this major river, a
00:05:32
major artery that things
00:05:35
were built on top of,
00:05:36
was a very good analogy.
00:05:39
I would also point
00:05:40
out, completely
00:05:42
coincidentally, that
00:05:42
Nile is slightly
00:05:43
longer than Amazon.
00:05:48
That is important.
00:05:49
I get that.
00:05:51
Slightly important, yes.
00:05:54
So, we liked the name.
00:05:56
We liked that
00:05:57
it’s four letters.
00:05:58
It’s short,
00:05:59
it’s memorable.
00:06:00
So, it has good
00:06:00
qualities for
00:06:01
a company name.
00:06:03
We
00:06:05
actually iterated
00:06:06
over several ideas.
00:06:07
We started the company
00:06:09
with the idea that,
00:06:10
at Confluent, building
00:06:12
Kafka took N people.
00:06:17
Building the entire
00:06:19
cloud services, the
00:06:21
self-serve SaaS on top
00:06:24
of Kafka, it was like
00:06:26
three times the people.
00:06:28
It was much harder.
00:06:30
And this was a
00:06:30
surprise to me.
00:06:33
I was always into
00:06:34
building data
00:06:34
infrastructure,
00:06:35
so this is hard.
00:06:36
But this was
00:06:37
really hard.
00:06:37
I didn’t realize that
00:06:38
there was something
00:06:39
much harder on top.
00:06:44
So, we really wanted
00:06:45
to build something
00:06:46
that would reduce the
00:06:48
overhead of building
00:06:50
these services
00:06:52
around the service.
00:06:53
And our first iteration
00:06:55
was a control plane.
00:06:57
We were not very
00:06:58
happy with it, and we
00:06:59
didn’t find a lot of
00:07:01
other people who were
00:07:01
happy with it either.
00:07:02
And then we started
00:07:04
thinking that the
00:07:07
problems we wanted to
00:07:08
solve, about managing
00:07:11
multiple tenants on the
00:07:12
same platform, which
00:07:13
is the core problem
00:07:14
of SaaS, how do you
00:07:16
provide one service to
00:07:18
a lot of customers with
00:07:20
very different needs
00:07:21
and very different
00:07:22
requirements, very
00:07:23
different workloads?
00:07:24
So, we were like, how
00:07:26
do we isolate them?
00:07:27
How do we give them
00:07:28
privacy and security?
00:07:29
How do we give each
00:07:31
one the performance
00:07:32
they need?
00:07:32
How do you scale
00:07:33
up as the number
00:07:35
of customers grows,
00:07:36
which is different
00:07:37
than scaling up as a
00:07:38
single customer grows?
00:07:40
We took all those
00:07:41
ideas and realized
00:07:41
that the right layer
00:07:42
to solve these is
00:07:42
in the database.
00:07:42
The idea is that
00:07:42
what you actually
00:07:49
need to isolate is
00:07:50
data access, all
00:07:52
the authorization,
00:07:53
authentication—those are
00:07:54
all data-level concerns.
00:07:56
They should be enforced
00:07:57
close to the data.
00:08:00
Performance, it has
00:08:03
a lot of factors,
00:08:04
but obviously, the
00:08:05
database is important.
00:08:06
It’s major in allowing
00:08:08
companies to scale.
00:08:09
And you see it in blogs
00:08:11
again and again, things
00:08:12
like flexibility.
00:08:14
Can you customize your
00:08:15
product for one customer
00:08:16
versus the other?
00:08:17
A lot of times, it
00:08:18
also ends up being
00:08:20
a database concern.
00:08:22
So, we’re like, okay,
00:08:24
we have to take a good,
00:08:26
solid database that is
00:08:27
open source and adapt
00:08:29
it to the concerns
00:08:30
of people building
00:08:31
software as a service,
00:08:33
because those are not
00:08:34
adequately addressed
00:08:35
today at the data layer.
00:08:38
And you took the only
00:08:40
meaningful option,
00:08:42
which is Postgres.
00:08:44
We like Postgres a lot.
00:08:46
I mean, if you’re going
00:08:47
to do a serverless
00:08:49
database and kind of
00:08:50
host it and manage
00:08:50
it, you cannot pick a
00:08:52
database that you don’t
00:08:53
really, really like.
00:08:54
You have to believe
00:08:55
that it is the
00:08:56
best database ever.
00:08:57
Otherwise, you know,
00:09:01
it’s hard to run
00:09:02
something as a service
00:09:03
for other customers if
00:09:04
you don’t believe you
00:09:05
are really choosing
00:09:06
something solid.
00:09:08
It’s probably
00:09:09
impossible.
00:09:10
I would totally
00:09:12
agree with that.
00:09:13
And I’m a big Postgres
00:09:15
fan myself for all
00:09:16
the same reasons.
00:09:17
The Postgres
00:09:22
ecosystem is massive.
00:09:23
There are so
00:09:23
many extensions.
00:09:24
I guess you can run
00:09:25
extensions on Nile?
00:09:28
So, you cannot pick
00:09:29
your own extensions yet.
00:09:31
We may get there at
00:09:32
some point, but we’re
00:09:33
not quite there.
00:09:34
And partially
00:09:34
it’s because
00:09:38
we are currently
00:09:40
still limiting
00:09:41
what people can do.
00:09:42
You also cannot even
00:09:43
run your own functions
00:09:44
at this point.
00:09:46
We will get there.
00:09:49
We are still only
00:09:50
a year or two into
00:09:51
the startup journey.
00:09:53
But at this point, what
00:09:54
we are doing is taking
00:09:56
popular extensions and
00:09:58
baking them into Nile.
00:10:00
So, our customers
00:10:02
pick up the phone,
00:10:03
or realistically,
00:10:04
pick up their Discord
00:10:06
and say, hey, we
00:10:08
need this extension,
00:10:09
PostGIS, PGVector,
00:10:15
PGCrypto has been
00:10:15
super popular.
00:10:17
And we’re like, okay,
00:10:18
hopefully we’re on it.
00:10:19
And we’re also
00:10:20
writing our own
00:10:23
extensions.
00:10:23
Nile itself is
00:10:24
an extension.
00:10:26
And we also have
00:10:28
team members who
00:10:29
have their own
00:10:30
open-source extensions
00:10:31
that are quite
00:10:34
popular.
00:10:34
I think that is a
00:10:35
totally fair approach.
00:10:37
And I guess a year in,
00:10:39
you probably have most
00:10:41
of the extensions that
00:10:42
people want anyway,
00:10:43
so we’re probably
00:10:44
good on that side.
00:10:46
We definitely try to be
00:10:47
responsive to customers.
00:10:49
This is important
00:10:50
when you’re a startup.
00:10:51
Right.
00:10:52
So, you mentioned
00:10:53
that you’re building
00:10:55
your own extension.
00:10:56
You say serverless
00:10:58
Postgres.
00:10:59
Postgres by itself
00:11:00
isn’t really serverless.
00:11:01
So, what would you
00:11:02
say was the biggest
00:11:05
challenge or hurdle you
00:11:07
had to overcome to make
00:11:08
Postgres serverless?
00:11:11
It really scares
00:11:12
me to answer this
00:11:13
question because deep
00:11:15
down, I feel like
00:11:16
we have not met the
00:11:17
biggest challenge yet.
00:11:19
I feel like the other
00:11:21
shoe is about to drop.
00:11:22
I feel like it’s
00:11:23
still ahead of us.
00:11:25
So, I would want
00:11:27
to qualify it
00:11:28
as the biggest
00:11:28
challenge to date.
00:11:31
We don’t know what
00:11:32
we don’t know.
00:11:33
And this is maybe
00:11:35
the scariest part.
00:11:38
I think there are
00:11:41
two things that were
00:11:42
challenging, and they’re
00:11:43
actually intertwined.
00:11:45
Maybe three things.
00:11:46
One of them is
00:11:48
the transactional
00:11:48
guarantees.
00:11:53
A big reason that people
00:11:54
pick Postgres and not
00:11:55
MongoDB is that it’s a
00:11:57
relational database with
00:11:59
strong ACID guarantees.
00:12:00
Postgres is actually one
00:12:02
of the best databases in
00:12:03
terms of transactional
00:12:05
guarantees.
00:12:05
When you say
00:12:06
serializable, it’s
00:12:08
Snapshot Serializable,
00:12:09
which is better than
00:12:10
Snapshot Isolation.
00:12:12
It
00:12:14
has better guarantees.
00:12:15
So, they did so
00:12:17
much good work.
00:12:19
We have to work with
00:12:20
it, and it opened up
00:12:22
a lot of questions.
00:12:23
Can you have a
00:12:24
transaction that
00:12:25
involves multiple
00:12:26
tenants, or do you
00:12:27
limit transactions
00:12:28
only to one tenant?
00:12:29
How does it work as
00:12:30
you try to scale?
00:12:32
So, dealing with those
00:12:33
concerns, we chose
00:12:36
to take limitations.
00:12:37
Your transactions have
00:12:38
to be for a single
00:12:39
tenant at this point.
00:12:42
We don’t let you
00:12:45
transactionally update
00:12:45
an entire table with
00:12:46
all the tenants in it.
00:12:47
Some people don’t
00:12:49
love it, but we feel
00:12:51
that this is the
00:12:53
bread and butter of
00:12:54
SaaS, isolating the
00:12:55
changes to individuals.
00:12:57
What would you be
00:12:58
doing writing over
00:12:59
multiple tenants?
00:13:00
That sounds scary.
00:13:02
Yes, and when we
00:13:05
allow it, we found
00:13:07
that customers
00:13:08
often regret it.
00:13:10
The number of times that
00:13:11
you deleted or updated
00:13:13
an entire table because
00:13:14
you unintentionally
00:13:15
left out a WHERE clause
00:13:20
is distressing.
00:13:22
So,
00:13:24
we are opinionated to
00:13:25
an extent in preventing
00:13:27
people from shooting
00:13:28
themselves in the foot.
00:13:29
Dealing with
00:13:30
the transaction
00:13:33
limitations has been an
00:13:34
interesting experience.
00:13:37
Distributing—so there
00:13:39
are things that do
00:13:40
have to get distributed
00:13:41
to all the tenants.
00:13:43
For example, no matter
00:13:44
how much we isolate
00:13:45
tenants to their own
00:13:46
databases, if you are
00:13:47
adding a new column
00:13:49
to a table, you need
00:13:49
every single tenant to
00:13:51
have this new column.
00:13:53
So, dealing with those
00:13:54
distributed DDLs has
00:13:55
been really interesting.
00:13:58
Storage is interesting.
00:13:59
And I think the
00:14:00
interesting bit is how
00:14:01
intertwined everything
00:14:03
is in Postgres.
00:14:05
If we want to have the
00:14:06
tenant isolation at the
00:14:07
storage layer, which
00:14:09
we really want because
00:14:10
this is the magic
00:14:11
that allows us to move
00:14:12
tenants to new machines
00:14:14
as you get more and more
00:14:15
customers, we can kind
00:14:16
of auto-shard it for
00:14:17
you and spread it out.
00:14:20
This means that
00:14:21
every data block
00:14:22
has to know which
00:14:25
tenant it belongs to.
00:14:26
Every record in the
00:14:27
WAL [write-ahead log]
00:14:28
has to know which
00:14:28
tenant it belongs to.
00:14:30
So, it’s kind of
00:14:32
a big rabbit hole
00:14:33
that you go down.
00:14:36
Transactions and the
00:14:37
commit logs have to
00:14:38
know which tenants
00:14:39
they belong to.
00:14:41
So, it’s been an
00:14:43
interesting journey.
00:14:44
And as I said, I don’t
00:14:44
think we’re at the
00:14:45
end of the journey
00:14:46
at all at this point.
00:14:48
That’s fair.
00:14:49
I think if you’re
00:14:51
making such a big
00:14:52
change to a system
00:14:57
that wasn’t designed,
00:14:57
well, not necessarily
00:14:58
not designed for it,
00:14:59
but it wasn’t really
00:15:01
thought of in this way
00:15:02
when they created the
00:15:03
actual system, that
00:15:05
is really interesting.
00:15:06
I think it’s always
00:15:08
fair to say we don’t
00:15:10
know where the road is
00:15:11
ahead, because nobody,
00:15:13
well, almost nobody,
00:15:15
did this before.
00:15:16
There are some others
00:15:18
that say serverless
00:15:20
Postgres, but I think
00:15:21
it really depends on
00:15:22
how you actually define
00:15:23
serverless or not.
00:15:25
Defining serverless is
00:15:26
another rabbit hole.
00:15:29
I only give
00:15:30
serverless, I don’t
00:15:30
try to define it.
00:15:32
That is true.
00:15:34
So, as a developer, how
00:15:37
would I get started?
00:15:39
I mean, it is Postgres,
00:15:40
so I guess any Postgres
00:15:41
client works for me?
00:15:43
Absolutely, any
00:15:44
Postgres client, any
00:15:45
ORMs that you enjoy.
00:15:47
We tested with the
00:15:49
popular ones, so I
00:15:50
can tell you, and
00:15:51
we have examples.
00:15:53
As you probably know,
00:15:54
we share a deep passion
00:15:56
for developer experience
00:15:58
and really getting-
00:15:59
making sure that
00:15:59
developers of all kinds
00:16:00
experienced, beginners,
00:16:01
this language, that
00:16:02
language, meeting
00:16:04
developers where they
00:16:07
are is so important.
00:16:09
So we have tutorials
00:16:11
for any popular ORM.
00:16:13
If you like Prisma,
00:16:16
Drizzle, SQLAlchemy,
00:16:18
and Hibernate, we have
00:16:21
Django we basically
00:16:24
try to cover everything
00:16:26
that people use and just
00:16:28
give a small example.
00:16:31
And you use it
00:16:32
completely normally.
00:16:33
There are only two
00:16:34
tricky bits that
00:16:34
you need to get.
00:16:36
Nile shows up with some
00:16:38
tables already built-in,
00:16:39
like the tenants table.
00:16:40
You need to pull them
00:16:42
into your ORM and
00:16:44
generate an object
00:16:45
from the database,
00:16:46
which is something
00:16:46
that some developers
00:16:48
haven’t done before,
00:16:48
but it’s actually very
00:16:50
easy in every ORM.
00:16:52
And the other one
00:16:53
is that you need,
00:16:55
in a transaction, to
00:16:56
specify which tenant
00:16:57
the transaction is
00:16:58
for because that’s
00:16:59
the entire point.
00:17:01
And this is the
00:17:03
main point of most
00:17:05
of our examples.
00:17:05
Here is the snippet
00:17:07
of how you specify
00:17:08
the tenant in Prisma,
00:17:10
in Hibernate, in
00:17:11
Drizzle, and so on.
00:17:13
We tie it end to
00:17:15
end because we are
00:17:16
very SaaS-focused.
00:17:17
We believe that
00:17:18
the tenant will
00:17:19
probably be a header
00:17:20
in an HTTP request.
00:17:22
There will probably
00:17:23
be a JWT or a session
00:17:25
with the user.
00:17:26
And so we tie the HTTP
00:17:28
header down to the
00:17:30
transaction, we tie
00:17:32
the user down to the
00:17:34
transaction, we validate
00:17:35
that the user actually
00:17:36
has access to the
00:17:37
tenant that is mentioned
00:17:38
in the transaction.
00:17:39
This is the whole point
00:17:40
of pushing all this
00:17:41
information from the
00:17:43
browser, from the layer,
00:17:44
all the way down to the
00:17:45
database so we can do
00:17:46
these kinds of things.
00:17:48
Right, right.
00:17:49
Okay, cool.
00:17:51
And I can just go
00:17:52
to, what is it?
00:17:53
The nile- Thenile.dev.
00:17:57
Dev.
00:17:58
Right.
00:17:58
I knew it was not io.
00:18:00
Thenile.dev.
00:18:01
Yeah.
00:18:03
It was always probably
00:18:04
free, but we thought
00:18:05
that we- especially
00:18:07
since we didn't start
00:18:08
with that phrase.
00:18:10
I think we thought
00:18:11
that io is- We're not
00:18:13
really dealing with IO.
00:18:14
We're all about storage.
00:18:15
Yeah, fair enough.
00:18:16
So, thenile.dev and I
00:18:17
sign up for an account
00:18:18
and I get all the
00:18:19
credentials I need?
00:18:21
Exactly.
00:18:22
All right.
00:18:23
So, we’re a cloud
00:18:25
podcast, so who
00:18:27
would we be not to
00:18:28
ask the question
00:18:29
of all questions?
00:18:30
How does that
00:18:31
look backend wise?
00:18:32
I mean, we’re
00:18:33
talking a lot about
00:18:34
Kubernetes here.
00:18:39
We actually migrated
00:18:40
to Kubernetes
00:18:41
fairly recently.
00:18:44
We started out with
00:18:45
just ECS a bunch of
00:18:48
EC2 machines, some
00:18:49
Pulumi scripts to
00:18:51
deploy stuff on them.
00:18:53
And it worked for us
00:18:56
for a very long time.
00:18:57
It got really messy as
00:19:00
we added more services.
00:19:02
It got pretty messy
00:19:03
to do releases, and
00:19:05
that’s when we moved
00:19:06
to Kubernetes, and
00:19:09
now we have Helm
00:19:09
charts, we have FluxCD,
00:19:12
so everyone with a
00:19:14
service can basically
00:19:15
upgrade their version.
00:19:17
It actually happens
00:19:18
automatically, so
00:19:18
you merge and then it
00:19:21
triggers a bunch of
00:19:22
tests, it deploys to
00:19:23
dev, it opens a pull
00:19:26
request to upgrade
00:19:27
production, and if
00:19:28
you merge the pull
00:19:29
request, it goes live.
00:19:31
So, we have a fantastic
00:19:36
infra engineer
00:19:37
who set it all up.
00:19:42
Good infra engineers
00:19:43
are so understated.
00:19:44
They do
00:19:47
amazing things and
00:19:48
act like it’s obvious.
00:19:48
For
00:19:57
me, it’s like, oh my
00:19:57
god, it’s all magical.
00:19:59
I completely
00:20:01
agree with you.
00:20:02
It was the same
00:20:03
with my startup.
00:20:04
One of the most valued
00:20:06
people, and I’m not
00:20:08
saying that all the
00:20:08
other guys were bad,
00:20:10
but the most valued guy
00:20:11
from my perspective was
00:20:12
the one that built the
00:20:14
Argo CD, the Jenkins
00:20:17
pipeline, the Kubernetes
00:20:18
cluster, all of that,
00:20:20
because in the end,
00:20:21
it was literally you
00:20:22
commit to your Git
00:20:25
repository, you make
00:20:25
a new tag, the build
00:20:28
pipeline picks it up,
00:20:29
the deployment pipeline
00:20:30
picks it up, and you
00:20:33
magically have the
00:20:34
new version deployed.
00:20:35
And it was incredible.
00:20:37
It saves other
00:20:37
engineers so much time.
00:20:40
It’s just this giant
00:20:42
force multiplier and
00:20:44
it prevents all kinds
00:20:45
of random incidents,
00:20:48
possibly generating
00:20:49
some new ones, but I
00:20:50
think on the balance,
00:20:50
it’s been amazing.
00:20:50
The problem is
00:20:50
that a lot of that
00:20:50
work is invisible.
00:20:50
It’s like how in
00:20:59
the past front-end
00:21:00
engineers or graphic
00:21:01
designers were the
00:21:01
ones everyone loved
00:21:04
because they had
00:21:05
something to show.
00:21:06
And as a backend
00:21:07
engineer, you’re
00:21:07
working for
00:21:10
weeks with nothing
00:21:11
visual to show.
00:21:16
It’s really hard,
00:21:17
especially in larger
00:21:18
companies with formal
00:21:20
performance reviews
00:21:21
and calibrations
00:21:22
across the company.
00:21:24
You have to show
00:21:26
the impact of an
00:21:27
engineer, right?
00:21:28
On one hand, you have
00:21:29
a front-end engineer
00:21:31
who moves a button two
00:21:32
pixels to the left and
00:21:34
suddenly conversion is
00:21:35
up by 50%—huge impact.
00:21:39
But what they did
00:21:40
was move a pixel.
00:21:42
On the other hand,
00:21:43
you have someone who
00:21:45
rewrites a core part of
00:21:48
the storage engine to
00:21:49
be 30 times faster and
00:21:53
100 times more reliable.
00:21:54
Okay, but what
00:21:55
was the impact?
00:21:56
Well, customers no
00:21:57
longer lose data and
00:21:58
are slightly happier
00:21:59
because it’s faster.
00:22:01
Yes, that
00:22:04
is so true and so sad.
00:22:07
I’ve been there in my
00:22:10
career at least once,
00:22:12
probably more than that.
00:22:13
Infra engineers
00:22:14
should not work for
00:22:15
large companies.
00:22:16
I mean, I’m being
00:22:17
tongue-in-cheek,
00:22:17
obviously, a lot of
00:22:18
them are very happy at
00:22:19
Google and AWS, but if
00:22:23
you want to be noticed
00:22:24
for your impact, a
00:22:26
small company is so much
00:22:27
better because everyone
00:22:29
is an engineer and
00:22:29
sees what you’re doing.
00:22:31
But I think that’s
00:22:32
true in general.
00:22:33
With Simplyblock,
00:22:34
we’re still a super
00:22:35
small startup, around
00:22:38
16 or 17 people.
00:22:40
I chose to go back
00:22:41
to that small company
00:22:44
environment exactly for
00:22:45
that reason, because
00:22:46
you have influence.
00:22:48
You really matter.
00:22:51
You’re not
00:22:51
just a number.
00:22:53
Exactly.
00:22:54
How did we even
00:22:54
move to Kubernetes?
00:22:55
Well, we hired the
00:22:56
infra guy and he talked
00:22:58
to developers, and
00:23:00
they said, yeah, this
00:23:01
sounds like a good idea.
00:23:02
Let’s try it.
00:23:02
He did it, and
00:23:02
everyone said,
00:23:05
yeah, this is
00:23:05
so much better.
00:23:11
Let’s go.
00:23:11
That’s the impact
00:23:12
I’m talking about.
00:23:14
He came in, made a
00:23:15
suggestion, and it
00:23:18
was a good idea.
00:23:19
Now everything is
00:23:19
much better than
00:23:20
it was before.
00:23:22
One thing, because
00:23:24
Simplyblock is a
00:23:24
storage company, you
00:23:25
mentioned that storage
00:23:26
is a problem for you.
00:23:29
In what sense?
00:23:32
So, I wouldn’t say that
00:23:35
storage is exactly a
00:23:36
problem, but it is a
00:23:37
part of Postgres that we
00:23:39
had to figure out how to
00:23:40
modify, like finding the
00:23:42
spare bits in the block
00:23:44
where we can put tenant
00:23:48
identifiers.
00:23:49
But I would say that
00:23:51
in general, in the
00:23:51
industry, if you look
00:23:54
at incidents across the
00:23:56
board, and there’s been
00:23:58
plenty of research,
00:24:00
storage outages are
00:24:02
kind of a leading
00:24:03
cause of outages.
00:24:07
Obviously, storage
00:24:07
performance has
00:24:09
a gigantic impact
00:24:10
on the performance
00:24:11
of any system.
00:24:13
You can only get as
00:24:15
fast as your storage.
00:24:16
Your performance cannot
00:24:17
really get better
00:24:17
than your storage.
00:24:25
That’s true.
00:24:26
The idea of tiering
00:24:27
storage, which I
00:24:29
think Confluent kind
00:24:30
of pioneered—though
00:24:31
I wasn’t on the team
00:24:32
that pioneered it, but
00:24:33
I was fairly close to
00:24:35
it—is that you have
00:24:36
some data that has
00:24:37
to be on expensive,
00:24:38
fast disks and some
00:24:40
data that may need
00:24:42
to be high-throughput
00:24:44
and very reliable,
00:24:45
but low latency is
00:24:48
not the concern.
00:24:50
Maybe actually having
00:24:51
a lot of copies
00:24:52
is more important.
00:24:54
This is one of the
00:24:57
most important ideas
00:24:58
when it comes to
00:24:59
serverless and building
00:25:01
cloud-native systems.
00:25:03
Okay, that is a
00:25:05
perfect answer.
00:25:06
I could not add
00:25:08
anything to that.
00:25:09
I mean, who would
00:25:10
I be anyway?
00:25:14
We already crossed
00:25:15
the 20-minute mark
00:25:16
by a few minutes,
00:25:20
so the last question
00:25:23
for every guest:
00:25:24
What do you think is
00:25:25
the next big thing?
00:25:26
Could be database,
00:25:27
could be AI, could
00:25:30
be anything you like.
00:25:32
Yeah, I’m kind of
00:25:33
struggling to think.
00:25:34
As much as I want to
00:25:35
talk up the future
00:25:37
of databases, I’m
00:25:38
struggling to think
00:25:39
of anything bigger
00:25:42
than AI going on.
00:25:45
One of the big questions
00:25:46
is whether the idea
00:25:49
of vectorizing data,
00:25:53
storing it in a
00:25:54
database, and using
00:25:56
vector similarity to
00:25:58
enhance AI performance
00:25:59
is here to stay.
00:26:02
Every indication tells
00:26:04
me that the concept is
00:26:06
solid and the techniques
00:26:07
are getting better
00:26:08
and better, both in
00:26:09
terms of embeddings
00:26:10
and also techniques
00:26:11
outside of embeddings.
00:26:15
I also see PGVector
00:26:17
keeps getting better
00:26:19
with more contributions,
00:26:20
performance
00:26:23
improvements, new
00:26:25
indexes, and so on.
00:26:28
So I feel like-
00:26:31
Watching, and I don't
00:26:33
know that vector data, I
00:26:34
know it's controversial.
00:26:35
There's a lot of people
00:26:36
probably listening
00:26:36
with a Vector database.
00:26:38
I don't know that there
00:26:40
is tons of appetite,
00:26:41
especially in small
00:26:43
startups where a lot
00:26:44
of the AI is happening
00:26:45
in small startups.
00:26:46
Whether there is a lot
00:26:47
of appetite for yet
00:26:48
another database versus.
00:26:51
I'm seeing so much,
00:26:52
just let me do
00:26:54
everything in Postgres.
00:26:55
And if Postgres is a
00:26:58
few percent point maybe
00:27:00
slower than the absolute
00:27:02
leading edge vector DBs,
00:27:03
I think a lot of people
00:27:04
will absolutely take
00:27:05
the bargain because just
00:27:07
let me do everything
00:27:08
in my Postgres.
00:27:10
So I do think
00:27:12
that, yeah, RAC
00:27:14
is here to stay.
00:27:15
Vector similarity
00:27:17
is getting better
00:27:18
and better, and
00:27:19
faster and faster.
00:27:20
And I do think that
00:27:23
PGVector is going to
00:27:23
own a huge slice of it.
00:27:26
All right, cool.
00:27:27
Yeah.
00:27:27
I think that is a very
00:27:29
nice last sentence.
00:27:32
RAC is here to stay.
00:27:34
Thank you very much.
00:27:36
We are at 26 minutes.
00:27:38
I think we have
00:27:39
to cut it here.
00:27:42
Thank you very much
00:27:43
for being here.
00:27:44
Awesome chat, just
00:27:48
like the pre-recording
00:27:49
chat we had.
00:27:52
It’s such an
00:27:54
honor to have you.
00:27:56
As I said, I’m the
00:27:57
one who was excited
00:27:58
here, so thank you very
00:28:00
much for being here.
00:28:02
Thank you so much.
00:28:03
It’s been a pleasure.
00:28:05
For the audience,
00:28:07
you know how it
00:28:08
rolls, same time next
00:28:10
week, same place.
00:28:11
I hope you’re coming
00:28:13
back and you’re
00:28:13
listening again.
00:28:14
Thank you very much
00:28:14
for being here as well.
00:28:18
The Cloud Commute
00:28:19
Podcast is sponsored by
00:28:20
Simplyblock, your own
00:28:22
elastic block storage
00:28:23
engine for the cloud.
00:28:24
Get higher IOPS and
00:28:25
low predictable latency
00:28:26
while bringing down your
00:28:27
total cost of ownership.
00:28:28
www.simplyblock.io

