Talks
Speakers
Events
Topics
Search
Sign in
Search
Home
Talks
Speakers
Events
Topics
Leaderboard
Use
Analytics
Sign in
search talks for
⏎
Suggest modification to this talk
Title
Description
By, Smit Shah Modern distributed systems have aggressive requirements around uptime and performance, they need to face harsh realities such as sudden rush of visitors, network issues, tangled databases and other unforeseen bugs. With so many moving parts involved even in the simplest of services, it becomes mandatory to adopt defensive patterns which would guard against some of these problems and identify anti-patterns before they trigger cascading failures across systems. This talk is for all those developers who hate getting a oncall at 4 AM in the morning Help us caption & translate this video! http://amara.org/v/GF2o/
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
The video titled "Resilient by Design" presented by Smit Shah at the Garden City Ruby 2015 event focuses on the importance of building resilient modern distributed systems to handle issues such as downtime and high traffic. The speaker emphasizes that developers, especially those who dread late-night on-call pages, need to prioritize resilience in their systems to prevent cascading failures and minimize business ramifications. Key Points Discussed: - **Importance of Resilience**: Resilience is crucial for software systems to function effectively under failure conditions. Developers often lose sleep over system downtimes and the customers affected by them. - **Real-World Analogies**: Shah compares resilient software systems to cars and nuclear reactors, highlighting how both are designed with built-in failure mechanisms from the outset. - **Common Pitfalls**: Many developers realize the importance of resilience too late, often after production failures. The need to anticipate potential issues, such as service dependencies going down or database failures, is emphasized. - **Resilient Design Patterns**: The talk introduces several design patterns intended to bolster system resilience: - **Bounding**: This involves setting limits for timeouts, memory usage, and queue sizes to handle failures gracefully and maintain service continuity, stressing the need for proper timeout configurations and memory management strategies. - **Circuit Breakers**: This pattern prevents system overload by stopping repeated calls to unreliable services and allows for fallbacks to maintain user experience during failures. - **Bulkhead Design**: This concept involves compartmentalizing services to ensure that failures in one service do not lead to the collapse of others, enhancing overall system reliability. - **The Role of Specifications**: Detailed specifications can uncover potential pitfalls in the coding process, allowing developers to address edge cases and enhance the reliability of their services. In conclusion, the video stresses that planning for resilience throughout the software development lifecycle, even for simpler services, is essential in today's complex distributed systems. By adopting resilient design patterns, developers can significantly reduce the chances of unexpected production issues and ensure more stable systems.
Suggest modifications
Cancel