You may have heard about Amazon’s Elastic Cloud Computing platform. It’s a way to run virtual computers in the cloud and it’s changing the way a lot of IT business operate.
Virtual machines? In a cloud? Huh?
Ok, they sound confusing for the non-technical folks. However, it’s actually straight forward. For the savvy who already know, feel free to skip to the next section.
Still with me? Ok, lets cover virtual machine first. Traditionally operating systems (OSs like Windows or Linux or Mac OS) run directly on top of hardware. And then several application run on top of the OS. You see this on the figure below.
Now a virtual “machine” is basically a small but powerful piece of software (called hypervisor) that runs on top of real hardware. It’s only job is to run other OSs on top of itself. The traditional OS that runs on the top? Those marked as OS 1, OS 2, OS N etc above? They thinks they are running on “real” hardware while they are in reality, running on the virtualization layer. This virtualization software layer, called a Hypervisor, then runs many OSs on itself and each such OS can run multiple applications.
So why bother with this complexity? As usual, it’s about the money. The real hardware machine costs money. If one OS is not busy, the other OS can consume the real hardware, effectively sharing the cost of the real hardware. It’s analogous to sharing the freeway system with other drivers/taxpayers or sharing the cellphone towers with other cellphone users.
Ok, virtual machine done. What about the cloud? Well, if you take that real hardware, (the actual computer box you can touch and feel) and put it inside a secure building with continuous electricity,back generators, air conditioning/cooling systems and some really FAST internet access, you basically have put your virtual machines in the cloud. The main differentiating factor is that you no longer own that server box – someone else does. You are simply renting it and have no obligations on it’s hardware maintenance or electricity bill. And that secure building? That’s called a Data Center and usually hosts thousands of ‘real’ hardware servers. Why so many physical servers? To share the costs of the expensive building itself. It sort of looks like the figure below.
Back on track
With that quick education, lets resume our story. So, I’ve been using Amazon’s Elastic Cloud Computing (ECC = EC2) platform a fair amount recently. I find it a great way to rent servers/computer on-the-fly on hourly basis, with no contractual commitments (eg. one year etc). So you want to use a powerful quad-core server for 4 hours? Or maybe you need a monster 16 CPU cluster computer to grind through some heavy duty number crunching? Well, with EC2 you can create and start these as virtual machines in under 5 minutes!!
In case this doesn’t hit you, it’s a dramatic change from 2+ years back when you’d need to call up Dell/HP/Sun and order that server hardware for many thousands of dollars, then wait for it to come and then start using it. And once you’re done with your computational tasks – then what? Well, you lost a lot of money. So many such projects never saw the light of day. To put realistic numbers, that monster of a 16 core cluster computer would cost you about $6000 to buy. The same processing power is available for about $2/hour from Amazon EC2. So you can now own your own supercomputer for 2 days, get done with your work – all for under $100!! On top of that, with Amazon’s EC2, you don’t have to worry about hardware failures or maintenance – it’s all covered by Amazon. To draw a common analogy, imagine that instead of renting you had to you had to BUY a taxi cab each time you needed one!
That enables an entire class of software applications and services to spring into existence. They can all of a sudden access vast amounts of computing power without large capital expenditure. Business is growing? Great, fire up new EC2 computers ! You can scale the IT side within a matter of minutes. EC2 basically allows you to switch from a large fixed cost (buying the server) to much smaller variable costs (per hour rental of server). This is great because computer servers are depreciating assets (unlike, in normal times, say real estate). So the allure in ‘owning’ the asset doesn’t exist either. Score one more for EC2!
But all the attention and spotlight at the high end supercomputer end doesn’t mean that there isn’t any use at the low end either. In fact, Amazon makes it very inexpensive to quickly fire up a handful (eg: 6) modest, cheap computers that do mundane tasks like serve web pages or read-write to databases. Here each computer is not very powerful but collectively they distribute their workload and get some real tasks done.
There is yet another category of computing that I guess will gain popularity over time. That is of moving your desktop computer into the cloud. That’s what I’ve been doing recently. I needed another computer system for accounting and instead of buying another physical computer, I simply created a virtual EC2 computer in the cloud. When it’s time to do accounting, fire that up and your rental starts. When I’m done, shut it down and my rental stops/pauses. If my accountant needs to review the financial statements, she simply remotes into the system (via Windows Remote Desktop, RDP) and enter her credentials. It won’t work for every scenario (eg. on airplanes without internet access) but for the most part they are enabling.
I suspect we’ll be seeing a lot of innovation in the coming months and years. Small companies can now compete with the big boys in certain areas that were previously capital intensive. As more players enter the cloud computing market, the prices for renting cloud computers will also decrease. At a personal level, I’ll be tinkering with EC2 for some more time too. So expect some more articles here as time passes on.