Cloud as a complex system
What’s interesting is that it turns out science has a whole body of work around complex systems. A complex system, according to Wikipedia, is “a system composed of interconnected parts that as a whole exhibit one or more properties (behavior among the possible properties) not obvious from the properties of the individual parts.”
That’s certainly true of the modern interconnected IT environment. Just look at automated trading systems and the famous “flash crash” for an example—systems designed for increasing market returns reacted to each other in a way that temporarily crashed that very market. Other examples abound, and I’m sure your own IT environment often behaves in ways that no single application or other element was designed to do explicitly.
What science teaches us about complex systems is that they are made up of many individual agents, each of which effect and are affected by agents around them. The feedback loops of events created by agents affecting each other both directly and indirectly, combined with the mechanisms that choose behaviors to in response to those events, combine to create the systemic behavior that is so unpredictable.
Cloud as an adaptive system
The thing is, however, a certain class of complex systems, complex adaptive systems, have the additional trait that they can change their behavior in response to the success or failure of previous behaviors when a given event occurs—or when a certain series of events occurs. This ability to “learn” and adapt to the surrounding system environment creates amazing outcomes, including many of the most rich, enduring and powerful systems in our universe
The developer as DNA
I want to leave you with one last thought, however. One of the things about complex adaptive systems is the learning or adapting traits of the agents in the system. In the world of evolution, the main agent of learning or change is DNA. In the world of IT, the agent of learning or change is the engineer or software developer.
If something goes wrong with an application, developers are on the hook to fix it, change it or kill it. If existing hardware fails to create new opportunities to innovate, engineers find new approaches to introduce into the ecosystem to shake things up.