Software Architectures That Bend Without Breaking

All software architectures have to deal with stress. It is simply the way the world works! Stressors come from multiple directions, including changes in the marketplace, business models, and customer demand, as well as infrastructure failures, improper or unexpected inputs, and bugs. As software architects, one of our jobs is to create solutions that meet both business and quality requirements while appropriately handling stress. We typically approach stressors by trying to create solutions that are robust. Robust systems can continue functioning properly in the presence of internal and external challenges, but they also have one or more breaking points. When we pass a robust system’s known threshold for a particular type of stress, it will fail. When a system encounters an unknown challenge, it will usually not be robust! Recent years have seen new approaches, including resilient, antifragile, and evolutionary software architectures. All of these approaches emphasize the notion of adapting to changing conditions in order to not only survive stress but sometimes to benefit from it. This presentation examines the theory and practice behind these approaches for software architecture.

Video producer: