If you read a dozen articles on cloud computing, you’re likely to come away with a dozen different definitions of exactly what cloud computing is, and what it can do for you, with various levels of hyperbole based on where the article falls on the marketing vs. technology spectrum. In order to keep things straight, I’ve adopted the NIST definition for cloud computing - here we will go over the Five Essential Characteristics of Cloud Computing:
A consumer can unilaterally provision computing capabilities, such as server time and network storage, as needed automatically without requiring human interaction with each service provider.
Broad network access
Capabilities are available over the network and accessed through standard mechanisms that promote use by heterogeneous thin or thick client platforms (e.g., mobile phones, tablets, laptops, and workstations).
The provider’s computing resources are pooled to serve multiple consumers using a multi-tenant model, with different physical and virtual resources dynamically assigned and reassigned according to consumer demand. There is a sense of location independence in that the customer generally has no control or knowledge over the exact location of the provided resources but may be able to specify location at a higher level of abstraction (e.g., country, state, or datacenter). Examples of resources include storage, processing, memory, and network bandwidth.
Capabilities can be elastically provisioned and released, in some cases automatically, to scale rapidly outward and inward commensurate with demand. To the consumer, the capabilities available for provisioning often appear to be unlimited and can be appropriated in any quantity at any time.
Cloud systems automatically control and optimize resource use by leveraging a metering capability at some level of abstraction appropriate to the type of service (e.g., storage, processing, bandwidth, and active user accounts). Resource usage can be monitored, controlled, and reported, providing transparency for both the provider and consumer of the utilized service.
The gist of the NIST essential characteristics is that cloud computing is a commoditization of computing resources – with resources delivered as requested, as needed, paid for as used, and accessed over a network.
Other than being an interesting academic exercise - should the NIST cloud definition matter to you? If you are under a mandate to implement cloud computing, then yes, it should matter, whether that mandate be legislative or from the CIO’s office. Each of the characteristics, deployment models, and service models should be evaluated in terms of what your users need, and whether a cloud model would be the best fit for you rather than a bare metal or virtualized environment.
In addition to the networking, data security and outage considerations from the previous post, there are additional concerns when migrating to a cloud architecture:
Moving an application across the internet adds an additional layer of latency to applications. On top of that, if you’re sharing a server, it is possible that a rapid increase in resources for another user on the server would take resources from your application (even if, in theory, those resources should be instantly migrated to the server). To check for latency issues, configure an SLA that looks at latency at critical points in an application (e.g. database queries, URL requests) – set up a baseline before migration, and then compare performance to that baseline after migration.
Vendor lock in:
If you commit to a cloud vendor, and performance is not satisfactory, it can cost significant time and money to migrate to another vendor or back to physical servers. Using IaaS can make it easier to move to another vendor or a virtualized architecture if cloud performance is not satisfactory. If you use PaaS, choose the platform carefully to ensure that it’s supported by other vendors
Training and IT Staff:
This is the one most people forget. Moving to the cloud often means users will need to have their workstations reconfigured, and they will need to be retrained. Your IT staff will need to address these requirements, and they will need to learn how to monitor cloud applications for satisfactory performance. And, if things go wrong, the IT staff will be the ones on the phone with the vendor in the middle of the night.