Distributed Systems for the UnInitiated

Consistency

A picture is better than a thousand words, so here goes:

Partition Tolerance

This one is easy — it basically means that you should be able to “scale your system”.

Scaling Reads

Most systems have far more reads than writes, i.e. they have far more people consuming data than producing it. How do you scale this? The typical (and most often used) solution is to throw more read replicas at the cluster.

Scaling Writes

The previous section works in most situations. There are times though when as the system is facing scaling challenges (maybe more users?) the system is seeing an increase in writes and is unable to keep up.

Availability

Moving on from Partition Tolerance, Availability comes next. Availability I think can best be described as “Willingness to Handle a Request”.

Durability

The final topic worth touching on is Durability, which can be summarized as when a state change command is issued to your distributed system when does the system respond with “Ok”?

Summary

And that’s it. Hopefully with these terms under your belt you should have the necessary linguistic tools to reason about distributed systems (ranging from your good old PostGres cluster all the way to Redis Cluster).

--

--

Get the Medium app

A button that says 'Download on the App Store', and if clicked it will lead you to the iOS App store
A button that says 'Get it on, Google Play', and if clicked it will lead you to the Google Play store