Devoxx Greece 2024 - Busy Architect's Guide to Distributed Systems by Ted Neward

Join Ted Neward's in-depth guide to building robust and scalable distributed systems, covering key concepts such as durable state, transient state, architectural styles, and more, with expert insights and practical advice.

Key takeaways
  • A distributed system is any program that can be run on more than one computer.

  • There are various technical fallacies of distributed computing, including “nothing but a bunch of networking”.

  • The concept of durable state is important in distributed systems, as it is the state that we really care about.

  • We need to think about transient state, which is the state that can change quickly.

  • RESTful APIs are still widely used but have limitations.

  • JSON is a simple, elegant data format but has limitations.

  • There are various architectural styles that can be used in distributed systems, including client-server and peer-to-peer.

  • The network can fail, and we need to be prepared for this.

  • Distributed systems can be single-hop (e.g., a single network) or multi-hop (e.g., multiple networks).

  • The shape of the state in a distributed system can be difficult to understand and manage.

  • We need to think about how to manage state in a distributed system, including using buffering, caching, and other techniques.

  • There are various ways to build a distributed system, each with its own trade-offs.

  • The 12-factor app is an example of a successful distributed system.

  • The concept of “black box” and “white box” testing can be useful in testing distributed systems.

  • There are various ways to manage errors and exceptions in a distributed system.

  • The importance of testing in a distributed system.