What is cloud, or cloud computing… or more importantly, what is cloud to you? To Netflix it is a way to get large amount of (streaming) data to a wide audience across significant geographical regions with sufficient capacity and elasticity to meet all loads. To my bank, it is a way to gain customer favor by making an easily available customer portal, widely available regardless of platform or location. To a developer it’s a consistent development environment and a way to quickly and easily create a test environment that can as easily be removed. Cloud is many things to many people.
Arguably, the bank example is simply the bank’s website but the cloud is, or can be, the flexible engine that drives the company website. The Internet / World Wide Web is not cloud but cloud is providing the tools and compute resources to drive the Internet. That is one of the advantages of cloud it has both Public (Amazon, Azure, etc.) facing elements, but it can also be created locally, or privately. In many cases, it can by Hybrid, where the work that is public facing is in the public cloud and the work (and private data) can be kept locally, or in the private cloud.
So what characteristics do we associate with cloud? Certainly a user self-service portal, which equates to ease of use. Usually, scalability – the ability for an application infrastructure to grow. Often there is elasticity – not just growing to meet demand but also shrinking when the demand is reduced. There is typically some level of fault tolerance built in – the ability to recover quickly in the event of machine or application failure – sometimes to another, geographically isolated failover location.
Delivering this compute, storage and network capability is the infrastructure… the hardware behind cloud. It is important to note that the infrastructure does not define the cloud. That is, cloud is a user experience and a set of capabilities and features that provide a certain value, however the underlying hardware does not define the cloud. Whether the hardware is discrete components, hyperscale or hyperconverged, it does not matter. Cloud isn’t defined by the infrastructure it simply uses it and is independent of it.
What else is cloud? With that dynamic model comes a similar dynamic cost model. With the exception of a build-your-own private cloud, cloud is typically billed “as a service”. Cloud is paid as a monthly recurring bill based on utilization. The cost of purchasing a large amount of hardware to start a project goes away… instead hardware can easily be rented, on a consumption basis, and as quickly removed, creating a cost model more in line with a typical IT project.
Finally, cloud is a platform, as in Platform as a Service. When virtual machines first started to be popular, their primary purpose was server consolidation. Very quickly, the ease with which a VM could be deployed became of factor. Rapid VM deployment is essentially a dynamic IaaS environment where VMs can easily be created or decommissioned to meet dynamic IT demand.
The modern cloud takes that a step further. Instead of spinning up a VM for a database why not simply rent Database as a Service. Instead of buying backup software why not rent it as a service. You can rent scalability services to monitor utilization and add or remove capacity to meet performance and availability requirements. The list goes on.
An API or Application Programing Interface typically delivers these services. So now, a programmer needs function XYZ. Instead of coding it, they can call it, or rent it. The cloud becomes a platform for delivering these capabilities and advanced functionality.
Containers are a hot new technology and cloud can embrace that as well. Instead of spinning up a VM… an entire machine with an operating system and full application stack, you can spin up a container… a safe environment for running your applications with all of the features we’ve discussed.
So, is cloud for you? If not now, then certainly someday. It is easy to use, dynamic, scalable, elastic and resilient. Additionally it is a consistent, easy to use development environment. These advanced capabilities have a cost but as the cloud matures that cost will shrink. A static environment will likely cost less than a dynamic one but there are many dynamic workloads in IT today. As more work is shifted to cloud, there will be less workload for static environments and we’ll see a slow but continuous migration toward cloud.