Menu
Sign In Search Podcasts Libraries Charts People & Topics Add Podcast API Blog Pricing

Martin Kleppmann

๐Ÿ‘ค Speaker
607 total appearances

Appearances Over Time

Podcast Appearances

The Pragmatic Engineer
Designing Data-intensive Applications with Martin Kleppmann

Solving that problem then mean in a decentralized setting where we don't have just a single server that can make that decision.

The Pragmatic Engineer
Designing Data-intensive Applications with Martin Kleppmann

In a centralized setting, you know, you just have one server.

The Pragmatic Engineer
Designing Data-intensive Applications with Martin Kleppmann

It decides,

The Pragmatic Engineer
Designing Data-intensive Applications with Martin Kleppmann

Did the edit to the document come first or did the revocation come first?

The Pragmatic Engineer
Designing Data-intensive Applications with Martin Kleppmann

And that one server makes that decision.

The Pragmatic Engineer
Designing Data-intensive Applications with Martin Kleppmann

But if you have multiple servers, they might make different decisions.

The Pragmatic Engineer
Designing Data-intensive Applications with Martin Kleppmann

So then you could have a consensus protocol, but then consensus is messy because it requires like some quorum votes and requires notes to be online.

The Pragmatic Engineer
Designing Data-intensive Applications with Martin Kleppmann

And so we've been trying to do the whole thing without doing consensus.

The Pragmatic Engineer
Designing Data-intensive Applications with Martin Kleppmann

But while preserving high availability, while preserving the ability for users to work offline, preserving the ability to...

The Pragmatic Engineer
Designing Data-intensive Applications with Martin Kleppmann

synchronized peer-to-peer without any servers, for example.

The Pragmatic Engineer
Designing Data-intensive Applications with Martin Kleppmann

That just makes the engineering challenge a lot harder.

The Pragmatic Engineer
Designing Data-intensive Applications with Martin Kleppmann

And it's solvable, and we are close to solving it for AutoMerge, which is the CLDT library that I work on.

The Pragmatic Engineer
Designing Data-intensive Applications with Martin Kleppmann

But it's just much less straightforward than it is in the centralized case.

The Pragmatic Engineer
Designing Data-intensive Applications with Martin Kleppmann

But that's a nice example of where interesting engineering challenges arise from this desire to get away from centralized services.

The Pragmatic Engineer
Designing Data-intensive Applications with Martin Kleppmann

And in this particular setting of a user getting their edit permissions revoked, if a revoked user still wants to, say, vandalize a document, they can just backdate their edit, give it an earlier timestamp.

The Pragmatic Engineer
Designing Data-intensive Applications with Martin Kleppmann

So relying on clocks is absolutely useless here because people can forge the timestamps from those clocks and thereby then potentially undermine the access control mechanism.

The Pragmatic Engineer
Designing Data-intensive Applications with Martin Kleppmann

So in this kind of system, we have to worry about potentially maliciously generated actions as well when the actions come from end user devices.

The Pragmatic Engineer
Designing Data-intensive Applications with Martin Kleppmann

Exactly.

The Pragmatic Engineer
Designing Data-intensive Applications with Martin Kleppmann

And that's what I mean with this long-term thinking.

The Pragmatic Engineer
Designing Data-intensive Applications with Martin Kleppmann

This is an example of it where, because it's research, we can afford to take this idealistic principled stance.