I have covered the topic of defining cloud computing a few times on this site, but I think that it is a good time to revisit that definition again. Cloud computing has evolved somewhat since I wrote those articles, and although everything still holds true, I feel that Information Technology professionals are now spending more time trying to understand cloud computing than ever before. Now is a great time to revisit the definition of cloud computing as the researching of the technology is trending upward.
One of the most basic definitions given for cloud computing is computing that takes place on the internet. This is a result of the long lasting moniker assigned to the internet in the tech community - the cloud. It would make sense that if you are computing across the internet, you are cloud computing. Right? Well, in the most basic sense, yes that is true, but cloud computing much more than that. It is safe to say, however, that you can not have cloud computing without network access like the internet.
So what is cloud computing? Well, it depends. There are several definitions that take into account whether you are a cloud provider, consumer or perhaps both. I'll start with the easiest - the consumer. Have you ever used internet-based services like Gmail, Google Docs, Salesforce.com, Facebook or Twitter? If you have, you are on the consumer side of the cloud computing spectrum. You are using a service that is offered (sometimes free) and it sits out in 'the cloud.' You do not have to run servers or other infrastructure to make it work. You just access the services via a web browser or mobile device. These services are often very easy to use and easy to access in many ways. You are not aware of the processes and technologies that take place behind the scenes to make these services work, and you really don't need to be.
On the flip side, if you are providing a web-based service to customers or the public at large, you may know a little more about the back-end technologies that make it happen. You may have an application or website that is hosted for you by a company like Rackspace or GoDaddy. These hosting companies provide the infrastructure and you provide the service (application) to your customers. While this is getting closer to cloud computing, it may still not be cloud in that a static hosting service is not really a cloud infrastructure. Now if your application needs to scale to accommodate more users on-the-fly and then shrink back to a pre-determined size (in order to reduce operation costs), companies like Rackspace provide cloud servers for you to build on. Here is where we start first dipping our toes in the true cloud world.
When you leave the realm of static hosting and move to a platform that can scale based on demand, you have now stepped into the cloud. There is a level of automation going on behind the scenes that assigns resources as needed to your application or service. In the most basic sense, this is all based on demand. The infrastructure serving up your application is elastic. It can scale up and down according to demand. This elasticity and scalability based on demand is cloud computing in its true essence. With this model, however, we are still stuck with a monolithic application silo that can only scale vertically. An application instance on a server can only scale as large as the server will allow. What do you do when that happens?
This brings me to what I see as the true definition of cloud computing. Cloud computing is the combination of an elastic infrastructure which leverages automation via an 'aware' application and can scale itself horizontally as well as vertically on demand. Whew! Let's break that one down. You already know about the elastic infrastructure and automation for scalability. An aware application is one which is written to function and interact with the cloud computing platform to scale as needed. In this sense, the application will monitor work load and demand. When it senses that it is becoming over-taxed, it can communicate to the elastic infrastructure that it needs another instance spun-up and put into service. This instance can be on the same server, or another server. The ability to spin-up instances across multiple servers, and have these instances work as a cluster, is what gives horizontal scalability to the application. If the application is written correctly, there is no limit to the horizontal scalability of the application. Being able to identify events in the application layer and trigger events in the elastic infrastructure based on a pre-defined response set is what we call orchestration. Think of an orchestra conductor signaling musicians as it is their turn to play in an intricately weaved symphony. The fluidity with which this happens as the many parts contribute to more than the sum is orchestration at its finest, and this is where cloud computing can deliver the best value. When we write applications that are aware of all parts of their make-up, from hardware to code, we provide the ability to orchestrate various processes based on events that occur.
Hopefully this sheds a little more light on what cloud computing is and how you can leverage the technology in your businesses.