Chapter 2. Principles of Distributed Application Architecture
The new opportunities that the cloud and edge open up give us a lot to be excited about. But the problem is, as Sidney Dekker writes in his excellent book Drift into Failure, that modeling the world is very hard:
We can model and understand in isolation. But, when released into competitive nominally regulated societies, [our technologies’] connections proliferate, their interactions and interdependencies multiply, their complexities mushroom. And we are caught short.
We need a solid foundation—principles and patterns—for how to reason about distributed systems.
The principles and patterns discussed in this guide are most definitely not new; many can be traced back to the ’70s, ’80s, and ’90s and the seminal work by Jim Gray and Pat Helland on the Tandem system; by Joe Armstrong and Robert Virding on Erlang; and by legendary computer science researchers such as Leslie Lamport, Barbara Liskov, Nancy Lynch, Ken Birman, Michael J. Fischer, John Ousterhout, Carl Hewitt, Marc Shapiro, and many more. However, these pioneers were ahead of their time, and only in the past decade has the technology industry been forced to rethink current best practices for enterprise system development and learned to apply the hard-won knowledge of these principles to today’s world of multicore, cloud, and edge.
Let’s now discuss eight fundamental principles for building distributed applications that are not only highly complementary with the ...
Become an O’Reilly member and get unlimited access to this title plus top books and audiobooks from O’Reilly and nearly 200 top publishers, thousands of courses curated by job role, 150+ live events each month,
and much more.
Read now
Unlock full access