chapter three

3 Distributed systems

 

This chapter covers

  • Understanding the structure and behavior of a distributed system
  • Understanding the correctness, scalability, and reliability of a distributed system
  • Recognizing the need for building distributed systems

Every modern software system is a distributed system. Whether you are building a web app, mobile app, or cloud service, understanding the fundamental principles of distributed systems is essential for any software engineer.

In this chapter, we will begin with an informal discussion to build a comprehensible mental model of distributed systems and their mechanics. In the following chapters, we will transition to a formal discussion to build a comprehensive mental model of distributed systems and their mechanics.

3.1 The system concept

A distributed system is a set of concurrent components that communicate by sending and receiving messages over a network. Each component has exclusive access to its own local state, which is not accessible by any other components. The network has exclusive access to its own local state, which includes messages that are in flight (see Figure 3.1).

Figure 3.1 A distributed system as a set of concurrent, communicating components (local state of network not shown)

3.2 Correctness

3.3 Scalability and reliability

3.4 Discussion

3.4.1 Systems of systems

3.4.2 Global view versus local view

3.5 Why distributed systems

3.6 Summary