Cloud Computing / Virtualization

Cloud computing is mostly a buzzword. In the old days when people wanted a
server to put run their software on it (like a website), they used to order a
dedicated (also called bare metal) server with a hosting company (like
rackspace.com), these companies would setup a server with your configuration and
then give you access to it so that you could put your software and use it anyway
you want. This usually would take days and the server companies needed upfront
payments for setup and monthly fees for server costs. So, if you wanted to put a
website for a week for a small conference you would have to pay for the setup
and the fee for the minimum rent duration (which would typically be a month).

With this kind of setup it used to be hard for website developers/maintainers to
scale their website. Scaling usually means adding more servers to your setup or
adding more resources (CPUs/RAM etc,.) to your existing servers, to be able to
handle an increase in traffic to your website or software.

With the advancement of technologies, and with the inception of virtualization,
hosting providers have become more flexible. Virtualization technologies allow
you to have any number of ‘virtual servers’ running on any number of
‘real/physical servers’. So, you can have one real computer running two ‘virtual servers’, one
might be a linux operating system and another a windows operating system
simultaneously. Virtualization is useful because not all servers run at their
full capacity all the time. So, if there are two ‘virtual servers’ running on
one physical server, they share their resources (CPU, RAM etc,.) and since they
are not using all their resources all the time, the resources can be shared. The
important thing about virtualization is that you can create as many virtual
servers as you want (as long as your hardware can handle the load) very easily.
So, this has allowed hosting providers to setup huge clusters of hardware
running virtualized servers on top of them. So, now if you want a virtual
server, it will be ready at the click of a button. You can even create a virtual
server, increase its RAM size by running a simple command. This allows web
developers and administrators to automatically increase the number of servers
when their is an increase in traffic and shutdown servers when there is less
traffic. And since you only pay for the amount of time your servers are running
and not by months, you can have efficient setups without wasting your money. If
you had a supermarket wouldn’t it be awesome if you had 100 checkout lanes when
you had a huge amount of customers (on weekends) and only 1 when there are no
customers? Virtualization/Cloud computing allows web administrators to do this.