Defining "cloud computing"
For the sake of this blog post, we'll peruse the definition of "cloud computing" by NIST :
"Cloud computing is a model for enabling ubiquitous, convenient, on-demand network access to a shared pool of configurable computing resources (e.g., networks, servers, storage, applications, and services) that can be rapidly provisioned and released with minimal management effort or service provider interaction. This cloud model is composed of five essential characteristics, three service models, and four deployment models."
There are many factors to consider: Performance, availability, integrity, confidentiality, cost, compliance, data protection, and privacy. We do not know what services will be cloud-based, but we have to assume that – as services become commoditized – running systems on-premise will return diminishing results. As part of our Services Business Strategy, we identified cloud agnosticism as one of our strategic goals. What do we mean by this? Today, we buy a certain amount of capacity to run hosted solutions in a rented facility. By design, a part of this capacity sits idle in anticipation of additional demand by existing or new customers. Meanwhile, we’re running dev systems in Amazon Web Services (AWS EC2) where we pay by the hour. Additionally, we have old systems (that could be retired) still occupying space in our hosting infrastructure.
This leads to a sub-optimal cost and capacity structure, amateurish depicted in the following picture.
Advantages of being cloud agnostic
Our goal must be to maximize return on investment (ROI) on the hosting environment and to use public cloud providers as a buffer for peak demand. To achieve this, we need to make sure our services are cloud agnostic – so we can deploy them internally or to an external cloud without re-engineering. Adding cloud cost management will then allow us to broker the best price/performance ratio for us and our customers and whilst preventing vendor lock-in.
I've been asked if I believe we will still provide our own hosting infrastructure in the future: I'm absolutely convinced that providing full service including having our own infrastructure is not only a major differentiator to our competitors – but also a guarantee we'll properly understand the caveats and dynamics of a cloud-based service delivery model. I'm also convinced public cloud providers will further lower their cost and a price/feature war will make them more attractive over time. However, vendors will also continue to differentiate their services and create lock-in models so we have to remain vigilant. Nonetheless, I see more opportunities than threats.
Being cloud agnostic will allow us to leverage a unique proposition to broker the best solution for our customers while maximizing our return on investment in physical hardware and engineering. However, we have to solve the technical challenges to enable this flexibility. A strong collaboration between developers and engineers is fundamental to build the necessary abstraction, standardization, and automation to achieve our goal.