Cloud Computing Defined
Cloud computing is all the rage (and hype). In the past few weeks, many of our readers have sent us feedback asking for some basic information about cloud computing for newbies. We aim to please. So this post familiarizes you with some basic terms and concepts surrounding cloud computing, including cloud models such as public, private, and hybrid clouds, as well as Infrastructure as a Service (IaaS) and Platform as a Service (PaaS).
Cloud Terms and Concepts
The basic terminology around cloud computing is somewhat in flux at this stage of its evolution, so not everyone agrees on the definition of cloud computing and other more detailed concepts.
What’s a Cloud?
A cloud, in very simple terms, is a place where information technology (IT) resources such as computer hardware, operating systems, networks, storage, databases, and even entire software applications are available instantly, on-demand. There are many, more complicated concepts and terms that one could try to include in a definition of cloud computing, but why make things harder to understand than they really are? Later on, we’ll add more substance to our fundamental definition.
A cloud is a place where IT resources such as computer hardware, operating systems, networks, storage, databases, and even entire software applications are available instantly, on-demand.
Why a Cloud?
With cloud computing, you can do more, faster, with less. More what, less what, faster compared to what? More productivity on work that matters, less startup cost, less human resources, less time, less headaches when compared to the traditional delayed access to IT resources like hardware, servers, development platforms, and applications.
Several types of clouds are emerging during the early stages of what most industry pundits agree will be a major paradigm shift from the traditional one-organization on-premise data center to mega-organization off-premise data centers. In this light, let’s first take a closer look at the definitions of public, private, and hybrid clouds.
A public cloud is a cloud that anyone can access using the Internet. Someone else constructs, configures, manages, and monitors the guts of the public cloud in their data centers. You manage your custom assets that operate within the cloud (data, apps), and pay just for what you use. Typically, there are no long-term commitments required to use a public cloud, so you are free to ride the cloud whenever you like.
As one would expect, not everyone is ready to ditch their private data centers and entrust the security of their IT operations and data to shared, public cloud utilities. However, the allure of the instant IT resource access that cloud technology provides has given rise to private clouds.
A private cloud is cloud technology operating in a private data center to which only one organization has access. The organization must still maintain its own data center and staff, but IT resources within the cloud are available on-demand to the organization’s employees.
Private clouds can also operate within a private segment of a public cloud. In this arrangement, an organization obtains all of the outsourcing benefits of a public cloud but with a level of security and privacy more similar to a private setting.
Hybrid clouds are the blending of private and public clouds. When an application in a private cloud experiences times of abnormally high demand, the application scales out to use resources in a public cloud (or private segment of a public cloud) – this type of scaling is known as “cloud bursting.”
Cloud Application Platforms
So now that you know some things about computing clouds, let’s continue to refine our definition and introduce the concept of the deployment unit within clouds. Every cloud is essentially an application platform where you or somebody else deploys apps. Some cloud platforms allow you to build apps locally and deploy to the platform, while others require that you both build and deploy an app using the platform itself. The next few sections examine some different types of cloud app platform models.
Different types of cloud platforms support different types of application deployment units and provide resources for different types of applications.
Infrastructure as a Service
Infrastructure as a Service (IaaS) is a cloud app platform model that encompasses a data center, computing hardware (servers, network, storage, etc.), and virtualization layer. The deployment unit for an app with IaaS is a virtual appliance – a virtual machine image that consists of a lightweight JeOS (Just Enough Operating System), web, app, and database servers, and finally the app code itself. Here are some important points to fully understand about IaaS app platforms.
- Theoretically, there is no limit to what you can do upon an IaaS platform. You can design any type of app, any way that you want, using any technology that you want. For example, you might encase all application layers of a simple app into one virtual machine image. For more complex apps that require dramatic degrees of scalability, you might put subcomponents into individual virtual machine images and scale various layers depending on fluctuating loads.
- Scalability is not automatic with IaaS. Should your application require elasticity during times of varying demand, you must design and program such logic into the app itself, although there are solutions that can automate scalability at many layers of an application design.
- You pay for and manage everything about your app that lives above the virtualization layer of the IaaS platform. If your OS and database are not free, you must have a license for them. You must patch your OS. You must monitor logs for security breaches. You must deploy a load balancer to address web traffic. If you deploy a database server, you must back it up and recover it after a failure. And the list goes on.
For reference, some public IaaS clouds available today include Amazon Web Services, RackSpace Hosting, and FlexiScale. Some software for private clouds available today include VMware’s vCloud, Eucalyptus, Nirvanix, and ParaScale.
Platform as a Service
Platform as a Service (PaaS) is a cloud app platform model that is a layer of abstraction above that of IaaS. With PaaS, the deployment unit for an app is primarily just the application’s code. The platform supplies the OS, the database, application server, web servers, load balancers, etc. Although it can vary by platform, you typically don’t have to manage anything below the PaaS application layer. That means there’s no OS to patch, no database to administer, and so on. As you might imagine, managing apps using the PaaS model is generally a lot simpler than the IaaS route.
- Some PaaS options provide for automatic scalability, while others tout features that make application elasticity “easy.”
- Some PaaS systems limit what you can and cannot do to preserve the reliability, availability, and predictable performance of the overall platform. Such restrictions may limit what type of applications you can build.
PaaS offerings include Force.com, Google App Engine, Heroku, and Engine Yard.
So there you have it, our basic introduction to cloud computing concepts. I hope that I’ve made it easier to impress all your friends with your new found ability to explain cloud computing using simple, understandable terms.