DEV Community

Sumant
Sumant

Posted on

Understanding Distributed Systems

Distributed systems are everywhere you go. Every server communicating at the moment is using some form of distributed algorithm.

As a developer, I work with different tools and these tools allow me to make my application available at all times. It is not just availability it is more than that. Most jargon you hear for cloud and distributed systems are essentially the qualities that run the new world of software.

A quick look at some of the jargon. Some words may be synonymous.

• Horizontally/Vertically Scalable
• Fault-tolerant
• Durable
• Resilient
• Replication
• Sharding
• Consistent
• Partitions
• Elastic
• Eventual Consistency

As a developer, how much distributed system am I required to know. The field of distributed systems is wide and mainly theoretical. Implementation of these concepts is what we are using for our work.

MIT 6.824 course covers most of the things needed. Every learner must grateful to OCW. The lectures really give a sense of understanding the basics. The course includes papers to read on distributed systems which covers Google's MapReduce to Raft to Databases to Bitcoin.

Martin Kleppmann's book, Designing Data-Intensive Applications is one of a kind. Diving right into key concepts, covering most of the things in distributed databases to problems involving the transactions. The book sets out to give a picture of how systems work or rather need to work to be truly distributed and consistent.

Below is the jargon used in distributed systems in theoretical terms.

• Byzantine
• clock synchronization
• Protocols
• Replication
• quorum
• state machine replication
• two-phase commit

Where exactly is this leading us here? Distributed systems are here to stay and understanding them better is the task for now.

Distributed systems are hard. But without one in this world where things are connected, it makes no sense. There is fundamentally something beautiful about taking something hard to work with and having it work.

Again, as a developer with more understanding of deeper concepts makes you aware of the systems you work with.

Top comments (0)