With his GigaOm post, Cloud is complex - deal with it, James Urquhart triggered quite a discussion in the cloudosphere. He described IT in general, and cloud in particular as a complex system. Complexity in this case does not necessarily mean harder to use, just that the whole is more than a sum of the parts.
Sam Johnston led the response, but, along with many others, focused on the wrong meaning of complexity. I can understand the confusion - Urquhart’s headline and introduction focus on ease of use. But that’s not really what he was trying to say. His use of complexity was descriptive and particular to the science of complexity.
A complex system, such as Urquhart describes, is a system in which interconnected components lead to behaviors not directly predictable from the behavior of any given component. That can lead to extremely fragile systems - such as the web of automated traders mentioned in the original post, or a power grid where a few trees in Ohio can blackout 55 million people. It can also lead to very robust systems - like the packet-switched network that forms the backbone for all of this stuff we’re arguing about (and arguing on). While not a requirement for a complex system, you’ll find the amplifying effects of power laws underlying many instances.
When you take a complex system and imbue it with an “intelligent” change agent, you end up with an adaptive system. Intelligent in this case doesn’t necessarily mean driving with a purpose; rather some sort of feedback loop that influences the actions of the system. In the adaptive scenario, you end up with self-organization and potentially a whole host of emergent behaviors.
And that leads us back to cloud as a complex adaptive system as classified by Urquhart. As I mentioned above, the underlying communication mechanisms for the Internet and cloud are clearly a complex system. But the compelling value propositions of the cloud - self-service, infinite scale, pay-as-you-go - are all features that arise from an interconnected set of components working together. Add developers and businesses to the mix, and you get a rapid feedback loop that influences the direction of the cloud.
One interesting example is the adoption of the Amazon Web Services APIs as the de facto standard for IaaS management. Nobody decreed that AWS was the right way to manage infrastructure. Instead a critical mass of companies and individuals looked at their specific goals, and were influenced by the influx of adopters (i.e. network effects) such that the AWS API emerged as THE answer for IaaS management.
The AWS story is a great example of a complex adaptive system leading to simplification. Rather than having a morass of competing options (and the resulting difficulty to use and manage), a single answer emerged.
That’s not to say the emergent behavior of an adaptive system always leads to the best answer, or even a right answer. There are plenty of dead-ends and failed pathways (think the ASPs of the dotcom era). But in general, the feedback mechanisms inherent in the adaptive ecosystem eventually lead to progress -without any grand design - and often before anyone even truly grasps what’s happening.
So while Johnston is right that end users should be protected from the difficulty inherent in executing a cloud environment, that should be true of any service IT provides. That should be the goal of any abstraction - and really isn’t a novel point. The much more interesting endeavor is understanding the interconnected nature of all things cloud and identifying and influencing the emergent behaviors. The companies that can do that are the ones who are going to win.
