1 min readfrom InfoQ

Presentation: Understanding Progressive Collapse: How To Avoid A Cascading Failure

Our take

Understanding Progressive Collapse, as explored by Sam Newman, offers critical insights for software resilience. Drawing parallels between civil engineering failures—like the Ronan Point tower collapse—and distributed system outages, including those on AWS, Newman reveals how seemingly isolated incidents can trigger cascading failures. This presentation equips software leaders with actionable resilience engineering strategies. Discover techniques to strengthen individual components, strategically isolate failures, and minimize interdependencies, ultimately preventing catastrophic system collapse.
Presentation: Understanding Progressive Collapse: How To Avoid A Cascading Failure

The concept of progressive collapse, initially a critical consideration in civil engineering, is increasingly vital for those building and maintaining distributed systems. Sam Newman’s recent presentation, and the subsequent discussion around it, elegantly demonstrates how principles honed in preventing structural failures in buildings translate directly to preventing catastrophic outages in software. It’s a powerful reminder that seemingly isolated incidents – a single failing component – can trigger a domino effect, leading to widespread disruption. The parallels between the Ronan Point tower collapse, where a small initial failure led to a devastating chain reaction, and recent AWS outages, where cascading failures impacted numerous services, are stark and underscore the need for a proactive, resilience-focused approach. This isn't simply about building robust individual components; it’s about architecting systems that can gracefully handle failures without propagating them. Understanding these dynamics is paramount in today's increasingly complex and interconnected digital landscape, where the potential impact of a single point of failure is magnified exponentially. For further reading on building resilient systems, consider Designing Resilient Systems and Chaos Engineering: Building Confidence in Complex Systems.

Newman’s presentation rightly highlights the importance of strengthening components, isolating failures, and reducing interdependencies – all strategies rooted in resilience engineering. The idea of "loose coupling" isn’t new, but its practical application and the recognition of its critical role in preventing progressive collapse often get lost in the rush to build and deploy. Traditional software development often prioritizes efficiency and integration, which can inadvertently create tight dependencies that amplify the risk of cascading failures. Instead, a deliberate effort to create modular systems, with well-defined interfaces and robust failure handling, is essential. This means embracing techniques like circuit breakers, bulkheads, and retries – not as afterthoughts, but as core architectural principles. Furthermore, the discussion around failure isolation emphasizes the importance of understanding potential failure modes and designing systems to contain them. A well-isolated failure may impact a single service, but it shouldn't bring down the entire platform. The shift in mindset from simply *preventing* failures to *containing* them is a crucial one.

The broader significance of this shift extends beyond just technical architecture. It requires a cultural change within organizations, fostering a culture of experimentation and learning from failures. Chaos engineering, as mentioned in Chaos Engineering: Building Confidence in Complex Systems, provides a practical framework for proactively testing system resilience by intentionally injecting failures and observing the response. This approach allows teams to identify weaknesses and vulnerabilities before they manifest in production, preventing costly and disruptive outages. Moreover, Newman’s perspective encourages a more holistic view of system resilience, recognizing that human factors – from code deployments to operational procedures – can significantly impact system stability. A robust technical architecture can be undermined by inadequate monitoring, poorly defined escalation paths, or a lack of training. Addressing these human-related aspects is just as crucial as strengthening the technical components.

Looking ahead, the increasing adoption of microservices and serverless architectures, while offering numerous benefits, also presents new challenges for resilience engineering. The distributed nature of these architectures inherently increases the potential for cascading failures, making the principles of progressive collapse even more relevant. The ability to quickly diagnose and isolate failures in a complex, dynamically scaling environment is becoming increasingly critical. We’ll likely see continued innovation in areas like observability, automated fault detection, and self-healing systems, all aimed at mitigating the risks associated with distributed architectures. A key question to watch is how organizations will effectively balance the agility and scalability benefits of modern architectures with the need for robust resilience and the ability to prevent progressive collapse – a balance that will ultimately determine the stability and reliability of our increasingly interconnected digital world.

Sam Newman discusses the concept of progressive collapse in civil engineering and how it applies to distributed systems. Using real-world examples - from the 1968 Ronan Point tower failure to AWS outages - he shares crucial resilience engineering strategies for software leaders. Learn how to strengthen components, isolate failures, and reduce interconnections to prevent catastrophic cascades.

By Sam Newman

Read on the original site

Open the publisher's page for the full experience

View original article