Ruby Video
Talks
Speakers
Events
Topics
Leaderboard
Sign in
Talks
Speakers
Events
Topics
Use
Analytics
Sign in
Suggest modification to this talk
Title
Description
RubyConf 2018 - Uncoupling Systems by Jeremy Hanna We tackle unique business challenges but are solving similar problems, and all too rarely will we talk through our designs and mistakes. Integrations, external APIs, data-stores - these might not be pure code but we can learn a lot from good object design when scaling our systems. In this talk we’ll discuss how parts of a distributed systems rely on each other, how data flow can couple and propagate failure, and how common emergent patterns can encapsulate services to be resilient. This is a journey of close calls, errors, and design smells researched into how a service gets simplified. Twitter: @almostjeremy
Date
Summary
Markdown supported
In the presentation titled "Uncoupling Systems", Jeremy Hanna discusses the complexities and experiences involved in systems design, particularly in the context of distributed systems. He emphasizes the need for better communication and understanding of design principles beyond mere coding practices as organizations scale and evolve. Key points from the presentation include: - **Importance of Systems Design**: Hanna believes that there is a lack of discussion about systems design despite its critical role in addressing business challenges. - **Understanding Dependencies**: He highlights the significance of managing dependencies within applications and how they correlate with team communication. - **Refactoring Challenges**: The speaker discusses the difficulties encountered when attempting to refactor systems and the common pitfalls of creating interconnected yet separate components. - **Design Patterns and Object Design**: He references common design practices from community figures such as Sandi Metz. The importance of encapsulation of roles within the code to simplify the system is stressed. - **External Integration**: Hanna shares insights on managing external APIs, with an emphasis on caching strategies and load management. He advises on using asynchronous processing to enhance performance. - **Database Management**: The concept of partitioning databases by cardinal values is presented as a method to optimize performance while emphasizing the need for transaction management across multiple sources. - **Communication Strategies**: Effective messaging, including the use of message queues and the actor model, is discussed as essential for maintaining system integrity. - **Handling Data State**: He talks about managing data lifecycle and consistency, particularly with caches and ensuring data freshness before any operation. - **Continuous Learning**: Throughout the journey of systems design, Hanna urges practitioners to maintain open communication, share knowledge, and encourage contributions from all team members. In conclusion, Hanna underscores the necessity for simplicity in design, the importance of understanding the interaction between components, and the value of maintaining resilience in systems architecture. This talk is intended to inspire engendered discussions that will help solve common design challenges in software development.
Suggest modifications
Cancel