Cloud computing is the use of computing resources (hardware and software) that are delivered as a service over a network (typically the Internet). The name comes from the use of a cloud-shaped symbol as an abstraction for the complex infrastructure it contains in system diagrams. Cloud computing entrusts remote services with a user’s data, software, and computation.
You are probably already using cloud-based services without your realizing it. Facebook, Twitter, and Google are offering cloud-based software as a free online service to millions of users across the world. Google, for example, hosts a set of online productivity tools and applications in the cloud such as email, word processing, calendars, photo sharing, and website creation tools.
Three Flavours of Cloud – the “service models”
One of the biggest confusions over cloud comes from the fact that it actually applies to a number of different layers in the “stack”. There are three flavors of cloud, which broadly go down in cost but up in the required level of technical know-how in the order I have listed below:
These are usually applications or services that you access via a Web browser. Google Mail and Google Docs are examples of this kind of cloud computing. Some companies host an application on the internet that many users sign-up for and use without any concern about where, how, by whom the compute cycles and storage bits are provided.
SaaS is usually the most expensive form of cloud since you are paying for the software as well as the underlying infrastructure and it requires no technical know-how. Examples of paid SaaS include Salesforce.com, though presently the most widely known examples are “free”.
This is a set of lower-level services such as an operating system or computer language interpreter or web server offered by a cloud provider to software developers. Developers write their application to a more or less open specification and then upload their code into the cloud where the app is hosted and automatically scaled without the developer having to worry about it overly. Appfog, Google App Engine, and cloudControl are examples of PaaS.
Because of the auto-scaling and ease-of-use afforded by PaaS, and the abstraction/obfuscation it gives the vendor, it usually costs a premium over renting the underlying infrastructure directly (IaaS).
IaaS is the provision of virtual servers and storage that organizations use on a pay-as-you-go basis. This is the most powerful type of cloud in that virtually any application and any configuration that is fit for the internet can be mapped to this type of service but is also the most technically challenging to exploit. Amazon’s Elastic Compute Cloud (EC2), Simple Storage Service (S3), HP Openstack and Microsoft Azure are examples of IaaS,
In practice, cloud suppliers often provide additional services alongside IaaS offerings, so the boundary between IaaS and PaaS can become blurred. However in its purest form compute IaaS can be considered as a bunch of un-managed virtual machines (VMs) for which you provide the operating system image, that can be scaled up and down (by spinning up and tearing down VMs) according to your application’s needs in near-real-time (ie. within minutes). IaaS data storage is more simple, working like a giant disk drive where you only get billed for what you are using, usually on an hour-by-hour basis.
Private vs. Public – “deployment models”
Public cloud means that your virtual machines are sat on the same physical host servers as other clients. A private cloud is where the host servers, and in some cases, the physical network or even an entire data center facility, is dedicated to one client. A private cloud is an infrastructure dedicated to one client that scales as necessary. Some people would call that a “virtual private cloud”.