Infrastructure as a Service
Software as an asset (business and consumer)
SLAs; UI powered by thin-client applications; cloud components; communication via APIs; stateless; loosely coupled; modular; semantic interoperability
Thin client; client-server application
Avoid capital expenditure on software and development resources; reduced ROI risk; streamlined and iterative updates
Centralization of data requires new/different security measures
Primary facets of IaaS
Rather than imagining the Internet as a single global cloud, it is perhaps more accurate to imagine it as a system of many clouds, like a thunderstorm. With this metaphor, it could be logically asserted that lightning is the weather system equivalent of communication among clouds. This metaphor is perhaps more accurate in the sense that clouds systematically interact with each other to create a single result: the Internet.
It is unlikely that the Internet will be made up of one single cloud at least in the near future because of the lack of standards in cloud computing and obvious attempts by companies to capitalize long term through vendor lock-in. Nevertheless, cloud computing would not have advanced to where it is currently if it weren’t for innovation in the spirit of capitalism. Perhaps one day, the Internet really will be a single, interconnected cloud in which VMs could be transferred effortlessly to “the cloud” without concern for file format and interconnected clusters of VMs could be managed across service providers, all through a single interface. But that day is a long way off. In the meantime, we’ll speak of the Internet as consisting of many clouds. (Ironically, I’m using the Apple MobileMe cloud to store this article so I can work on it on across several devices.)
Meet the elastic infrastructure
Elasticity is the first critical facet of IaaS. To illustrate the concept of elasticity, I’m going to require you to use your imagination for a moment. Pretend that clouds are actually made of marshmallow clusters stuck together so that people can sit and ride on them. Each marshmallow cloud can hold a certain number of people, depending on the number of marshmallow clusters that make up the cloud and how many marshmallows are contained in those clusters. As more people get on to ride the marshmallow cloud, you can expand the marshmallow clusters by sticking more marshmallows to them, increasing the surface area. As you have probably already figured out, the people represent the applications that require compute resources, such as those that host Web sites and run software services. The marshmallow clusters represent clusters of VMs, with each marshmallow a VM.
Although this might sound like something you’d expect to find in a Dr. Seuss book, it provides a means of understanding a concept considered by many a dark art: elastic clustering. Clustering of physical servers to form a virtual cloud is a concept known as cloud clustering, and if it is in fact a dark art, then mastery is measured by the scalability of an artist’s system design.
Let’s look at an example. Say that you’re a statistical researcher working for the U.S. government. The government is a bit short-handed, and you’ve just been tasked with compiling all the data from the latest U.S. census. You’re responsible for formulating the necessary statistical data so that Congress can make important decisions regarding the allocation of economic recovery funds and tax dollars three days from now. Needless to say, this is a pretty important job, and you’re on a bit of a time crunch. What’s more, the amount of data you must process is astronomical, and you just found out that the compute resources required to compile it is going to take the IT department three weeks to get ready!
This is exactly the kind of problem that you can easily mitigate using IaaS. As a matter of fact, using IaaS, you could have the entire U.S. census data analysis completed within an hour. You’d start by creating a single instance of a server that contains the database software to run queries on the data. This is called an image.
After you deploy the image and import the data into the database, you could then duplicate that image as many times as necessary and start running your data-processing tasks. While the tasks are running, you might manually or automatically add and remove resources. For example, if the compute tasks were not running quickly enough, simply add more duplicate machine instances to the cluster.
Now that you understand the concept of elasticity, let’s take a look at the second major facet of IaaS: virtualization.
Sergey Brin and Larry Page, the founders of Google, had the right idea back in 1995 when they spent their evenings sifting through dumpsters behind Stanford University’s computer science building, pulling out disregarded computer parts. They’d bring these random x86-based computer parts back to their dorm room to add to the Frankenstein machine hosting the legendary rogue Web crawler that took down Stanford’s entire network twice.
Today, it is estimated that Google has more than 1 million x86 servers in 12 major data centers and about 20 smaller centers on different continents. That’s a pretty big cloud. Two key factors to the system design allowed them to scale the dorm-room beast in 1995, and it still holds true for the million-plus servers in the Google network today. To this day, Google continues to use inexpensive x86 parts instead of the much more expensive enterprise server components found in many corporate data centers. Second, failover, redundancy, monitoring, clustering, and other infrastructure management tasks are handled by a virtualization system that runs beneath the operating system level rather than using separate hardware such as load balancers to handle such tasks.
IaaS is easy to spot, because it is typically platform-independent. IaaS consists of a combination of hardware and software resources. IaaS software is low-level code that runs independent of an operating system called a hypervisor and is responsible for taking inventory of hardware resources and allocating said resources based on demand (see Figure 1 ). This process is referred to as resource pooling. Resource pooling by the hypervisor makes virtualization possible, and virtualization makes multi-tenant computing possible a concept that refers to an infrastructure shared by several organizations with similar interests in regard to security requirements and compliance considerations.
Figure 1. The relationship among VMs, the hypervisor, and the computer
With IaaS, you have the capability to provision processing, storage, networks, and other computing resources, where you can deploy and run arbitrary software such as operating systems and applications. Most use cases for cloud computing follow the same fundamental layering structure you are already used to: a software solution stack or platform is deployed on a network infrastructure, and applications are run on top of the platform. However, virtualization makes the cloud paradigm unique.
In this article, you learned about many of the basic principles of cloud computing as well as the anatomy of IaaS and how it might be used in a real-world situation. The second article in this series will dive into the second major classification of cloud computing: PaaS. In the meantime, check out the Related topics section for links to more information on IaaS.