Cloud computing Part 1 – Local Application vs Web Application
Cloud Computing Part 2 – Virtualization (Physical vs Virtual Servers)
This post: Cloud Computing Part 3: IaaS (Infrastructure as a Service)
Infrastructure as as Service (IaaS) describes what many people would consider the real power of the cloud. IaaS basically provide virtual computing which can be controlled independently and programmatically, usually from a large pool of physical components and data centres. Computing “services” are usually offered and priced separately in contrast to standard virtual servers. This means that disk space, computing power, network resources such as IP addresses and domain name servers can often be provided separately, rather than as one block. IaaS providers include:
• Amazon Web Services (AWS)
• Windows Azure
• Google Compute Engine
• Rackspace Open Cloud
• IBM SmartCloud Enterprise
Here’s a helpful post comparing the top three. AWS is one of the most well known, for example AWS’s S3 (simple storage service) which is simply disk space. There is no command line access to a computer, you are simply given a way to store and retrieve files over the web. This often means it is easier to manage as you are dealing with resources in isolation (although you could argue this is really PaaS – part 4!). You don’t need to run and manage a whole server to get access to cloud disk space. You might be thinking – hang on aren’t there other options out there for cloud based storage such as Dropbox? Yep – and guess what dropbox is built on? AWS’s S3! Here’s an interesting article about the growth of AWS and some well known web sites that use it. Another use case could be that you need an online database (such as MySQL) that is accessed by a mobile app or a local program. Again, with IaaS, you can just set up a database, pay only for the amount of storage and input/ouput operations, and there is no need to run a server or worry about software updates, manually setting up all the security required, thinking about how much disk space you will need in the future etc. You setup the database from a web interface, and everything else is managed for you.
On of the major advantages of IaaS is scalability, the ability to add or reduce the amount of computing power / disk space / databases / load balancing / API gateways / Content Delivery etc on the fly as your requirements change. Although this is possible with standard virtual servers (which we discussed in Part 2), with IaaS you get much more control since each computing item can be controlled individually.
Let’s return to our example application – a document converter that converts MS Word files to PDF. The basics of the application on the web won’t change from our description in part 1, however, with IaaS we have a few more advantages over a single virtual machine. Let’s say we want to scale up our application for millions of users, and restrict access to registered users only. Even if we used the best spec single virtual machine available, it probably wouldn’t be powerful enough to cope with so many users all converting PDFs at the same time, and would become very slow. However, if we designed if for deployment to IaaS, we could access a virtually limitless amount of computing. Firstly, through load balancing which is much easier to set up with and IaaS, such as AWS’s Elastic Load Balancer. In this scenario, we’d have a number of identical virtual machines running the same application, and a load balancer acting as the gateway. The load balancer is the first thing to receive a request from the user’s web browser, and it automatically routes users requests to different virtual machines. When all of the machines are at maximum capacity, we can trigger the IaaS to immediately spin up a brand new identical machine. That’s not quite everything though. Since we need to use a database to hold user’s data for registration and log in purposes, we come up against a bit of a problem, since each virtual machine is identical, we’d have many different copies of the database which would quickly become out of sync, since the only one to get updated would be the one the load balancer directs you to. What we can do instead is run the database as a separate, single service (no need to configure a whole server just for the database), which all the virtual machines have access to. So we have a central database to get user’s log in information, but the processing of the PDF’s can be done on any machine.
The line between virtual computing providers and IaaS is a bit blurry, but for both, the simplest way to look at it is that computing hardware is provided as a service over the internet billed by in small time increments, rather than requiring upfront purchase and physical installation, and so the hardware and virtualization is the responsibility of the IaaS provider.
In Part 4 we’ll look at PaaS (Platform as a Service), which builds on top of IaaS!