DEV Community

Maneesh Chaturvedi
Maneesh Chaturvedi

Posted on • Originally published at rethinkingdesign.tech

Concepts of Distributed Systems – Part 0

Distributed systems are a norm now. And they are complex. As software engineers and architects, we need to have a technically accurate and precise understanding of various technologies and the trade-offs associated with them in order to build robust applications. Fortunately, there are enduring principles that apply to distributed systems. An understanding of the principles and their correct application helps in understanding, designing and developing robust distributed systems.

This multi-part series will cover the principles, algorithms and technologies which most real world distributed systems comprise of. It is not catered to the use of any specific software packages, since there is already plenty of documentation about those things. Instead, it covers the principles and trade-off’s of distributed systems and the design choices that specific use cases warrant. We do not cover deployment, operations, security, management and other such areas, which are complex and important topics, but would dilute the content and we would be unable to do justice to those topics.

This post broadly outlines the topics which we would be covering in the series. Each topic listed below would most probably be further broken down. At a high level the topics we would be covering as part of this series are

  • What are distributed systems ?
  • System models for distributed systems
    • Timing models
      • Synchronous
      • Asynchronous
      • Semi-synchronous
    • Inter Process Communication mechanism
      • Message Passing
      • Shared Memory
    • Failure modes
      • Crash stop
      • Crash recovery
      • Omission faults
      • Byzantine faults
  • Properties of distributed Systems
    • Safety
    • Liveness
  • CAP Theorem/Brewers conjecture
  • Distributed Storage
    • Reliability, Scalability, Maintainability
    • Data Models and Query languages
    • Storage Engine Design
    • Data Encoding
    • Replication
      • Leader and Leaderless Replication
      • Replication Lag and Consistency Guarantees
    • Partitioning/Sharding
  • Distributed Compute And Messaging
    • Batch Processing
    • Streaming
    • Data-flows
  • Consensus Algorithms - RAFT
  • Membership Algorithms - SWIM

Top comments (0)