The public cloud proponents often wonder -- why is that the enterprise IT world is not beating a path to their door? After all, each of these services provide great functionality coupled with an attractive consumption model.
I patiently explain to anyone who will listen: enterprise IT is different.
And one of the ways enterprise IT is very different is the critical need to manage availability.
Availability is one of those things that everyone takes for granted -- until there's a problem. When there is a problem, a speed recovery is expected: service resumed, data restored. It doesn't happen by magic -- there's an enormous amount of hard work that goes into creating highly available environments that protect predictably. And never enough resources to do this right.
Most people not deeply entrenched in the topic think this must be a simple matter: a public cloud vendor simply establishes an SLA around their services, and incurs penalties if this is not met. Case closed.
The reality is far more complex: effectively managing availability at scale is a difficult and nuanced discipline. It's incredibly hard to get right in a traditional enterprise setting; much more so when external services are part of the landscape.
What stands out for me is that one of the core tenents of virtualization and cloud -- abstraction -- is in direct conflict with what many availabilty professionals demand: a precise knowledge of configurations and associated failure domains.
And, until we solve that one, I don't think we're going to see a lot of critical enterprise workloads using cloud resources.