Talks
Speakers
Events
Topics
Sign in
Home
Talks
Speakers
Events
Topics
Leaderboard
Use
Analytics
Sign in
Suggest modification to this talk
Title
Description
With more applications now using service-oriented architectures, developers must know how to talk to distributed technologies and to handle errors and failures. While you can usually depend on libraries to encapsulate such details, it's important to understand and to be able to predict the behavior of your distributed systems. This talk will arm you with algorithms and testing strategies so you can tame your services and build robust applications. By Emily Stolfo https://twitter.com/@EmStolfo Emily Stolfo works at Elastic where she maintains the Ruby client and the Rails integrations project. She's also an adjunct faculty of Columbia University where she has taught courses on databases and web development. Although originally from New York, she's currently living in Berlin where she likes to run long distances and make sourdough bread. https://rubyonice.com/speakers/emily_stolfo
Date
Summarized using AI?
If this talk's summary was generated by AI, please check this box. A "Summarized using AI" badge will be displayed in the summary tab to indicate that the summary was generated using AI.
Show "Summarized using AI" badge on summary page
Summary
Markdown supported
In this talk titled "Beauty and the Beast: Your Code and Distributed Systems," Emily Stolfo, a Ruby engineer at Elastic, discusses the complexities of distributed systems and how developers can leverage this understanding to write more resilient applications. The talk emphasizes the importance of grasping distributed systems theory to enhance application development, especially as applications are increasingly built using service-oriented architectures. Key points covered include: - **Introduction to Distributed Systems**: Definitions and characteristics that define distributed systems, typically seen as a set of autonomous computers working collectively to present a unified system. - **Consensus and Coordination**: The necessity for components within distributed systems to reach agreements on states or actions to maintain reliability and coherence, illustrated with an example from Elasticsearch. - **Synchronization and Event Ordering**: The role of logical clocks in ordering events, emphasizing how time management in distributed systems is crucial for their performance. - **Leader Election Algorithms**: Various methods, such as Raft and Bully, to determine leaders in the system, helping to manage communication in case of failures. - **Error Types and Handling**: Differentiation between network errors and operational errors, and strategies for handling them, stressing the importance of idempotency in operation design. - **Replication and Consistency Models**: The need for data replication across nodes and how models like causal consistency ensure data coherence. - **Fault Tolerance**: Techniques and strategies to prepare for and recover from server failures, including identifying fault types and using redundancy for high availability. - **Testing and Preparation**: Emphasizing the importance of testing applications in conditions that simulate the behaviors typical of distributed environments, rather than just against a single server instance. Emily illustrates her points through the character of 'Bear,' an application developer whose experiences highlight the challenges faced when working with distributed systems. As Bear develops a complex application that interfaces with both MongoDB and Elasticsearch, he learns how to better anticipate errors and improve the resilience of his code by understanding the theory behind distributed systems. In conclusion, the talk equips developers with the knowledge to navigate the intricate nature of distributed systems, underscores critical considerations for writing resilient code, and encourages proactive preparation to handle potential errors and failures in their applications effectively.
Suggest modifications
Cancel