What is an antifragile system?

Antifragility is the next evolutionary step, after the adoption of agile practices and close cooperation and alignment between the software dev teams and the operations team of an organization.

Consider the following 3 stages of evolution:

Fragile: a system is fragile when the smallest change has a significant impact on its output or performance. These are systems without a proper architecture, so that a small required code change will pose huge problems for both software and operations teams.

Robust: a system is robust when predictable changes have no impact on its output or performance. This can for example be achieved by overscaling server infrastructure. However, an unpredictable change can still have disastrous effects. A good example in biology is the extinction of the dinosaurs; they were the rulers of the planet and on top of the food chain, but a meteorite impact almost completely wiped them from the face of the Earth.

Antifragile: a system is antifragile when even an unpredictable change has no impact at all. In the contrary, such a change allows the system to evolve further into an even more stable state.

Prerequisites of antifragility

Personally, I feel there are three important minimum prerequisites before a system can be truely antifragile:

DevOps

DevOps is a  close interaction between software teams and operations, with a common adoption of agile practices. It allows both teams to work collectively in an adaptive and iterative way so that incremental product updates are delivered within short cycle times.

Cloud

A true antifragile environment should be able to scale fast, without having to rely on hardware or other purchases. Amazon and other cloud providers offers brilliant solutions that allow an environment to scale automatically and fast when required.

SOA

In larger systems, updates to one part of the system should have no impact on other parts of the system. This is possible when a Service Oriented Architecture is applied and when the different elementary parts of the system communicate via defined API’s with proper version control.

Which do you see as additional prerequisites for an evolution to an antifragile state? Let us know at info@agilerangers.be 

 

twitterlinkedin