Monday, July 25, 2011

Cloud computing - Pie in the sky or real time solutions?

Up until a few weeks ago I thought Cloud Computing was just virtualisation with a marketing spin. The Irish economy, in the depths of despair, is touting Cloud Computing as the answer to many of it’s financial problems. If I, a fairly up to date member of the tech community, struggle to get my head around it, what hope do a bunch of Guinness drinking politicians in Dublin have? And is it really that easy? Can Cloud Computing help not only the ailing Irish economy, but also turn a profit for others? and if it can, what’s it all about and how do we get on board?

The Cloud and Virtualisation

Virtualisation is a term used in tech circles to describe the technology that allows computers to run within computers - essentially a program within a program, or more technically, a host operating system to run different guest operating systems on the same hardware.Virtualisation is useful because, for instance, it allows you to fire up the latest and greatest linux distribution in a sandbox without disrupting your everyday activities, and then when you’re tired of it, you can just delete it. Essentially then, Cloud Computing is running a virtual computer on hardware somewhere else in the country (or world) that you access via the Internet.


So how do you get from virtualisation and Linux distributions to solving the Irish economy’s woes? With cloud computing apparently.

What is Cloud Computing?
Wikipedia says the following about Cloud Computing: it is “the practice of using a network of remote servers hosted on the Internet to store, manage, and process data, rather than a local server or personal computer.”


Essentially they’re saying Cloud Computing is accessing programmes on computers through the Internet instead of accessing programmes on the physical computer you have direct access to. Not really amazing or ground breaking is it? For years we’ve been checking our email on Gmail and Hotmail, translating swear words with Babel fish, and storing photos and files with Dropbox and Picasa.

However, while it’s not ground breaking, it is the next logical step in the progress of computing. In the past a computer or server has only been as useful as the software on it, in other words a user could only do things based on what software was installed on the physical computer in front of them, if you wanted to manipulate images you would have to use a programme like Coral Draw or PhotoShop, if you didn’t have these programmes on your computer there was no way to decently manipulate images. This left you with two options: 1. Don’t manipulate images or 2. Go out and buy (or some people pirate) the software, which is a problem if you live on a desert island.

And this, essentially, is how programmers made money - develop a program, keep as much of the code as possible top secret so no-one can copy it and then sell it to thousands of people at high prices. Over the years this led to a certain amount of stratification in the computing world with some users swearing by Mac or Linux or Microsoft and none of them were really compatible with each other unless you had infinite amounts of time on your hands.

Caution: Change ahead

This is where Cloud Computing is beginning to change things. My realization is this: Cloud Computing is beginning to create a more broad spectrum uniformity in terms of what you can do on the hardware you have at hand. Cloud Computing helps us become less and less dependent on the actual software we have on the computer in front of us. As long as you have a decent Web Browser on your machine, you don’t really need the fancy software because someone else has it somewhere else, and you have access to it.


Cloud Computing also expands the concept of ‘programmes’ from only web pages to a wide spectrum of things that include services (like embedding maps and location data with Google Maps), a hosted runtime environment that will run software customised programmes, and virtualised computers that require a lot less capital outlay than a real computer (because you’re not paying for the hardware, just the sandbox).

A real time example

Let’s say that you have an idea for a smart phone app: the Lotto Number Predictor. This app implements an algorithm that uses past lotto winning numbers to try and predict the next one. Seeing as it’s going to have to store every lotto number in history, it needs to have a place to store data, a place to do some chunky searches and calculations : it would need to have access to services on the Internet.


Before cloud computing you would have had to approach a company hosting servers on the Internet and rent an actual server in a rack, and pay for it every month. You would probably have a bandwidth allowance, that you would probably exceed, so your monthly bill would be for rental, and whatever bandwidth you used. If the app was popular, and your server started slowing down because it was unable to handle the load, you would have to buy another server, set it up, and then figure out a way to make both servers balance load from clients. These things take lots of time, and the process provides lots of opportunities to make mistakes.

You would also have to worry about my data - what happens if the hard drive in my server crashes? It’s probably all lost. So all your your code and all your work has to be repeated, and, more importantly, you customers who paid for the phone app won’t be happy. An alternative would be to outsource all of this, but you’re probably barely breaking even with all the costs so far.


It’s all in the name

This is where these new Cloud concepts come in. Cloud pundits throw around terms like PaaS, SaaS and IaaS, but what do they mean and do? With Platform as a service (PaaS), a company, like Google with Google App Engine or Amazon with Beanstalk, writes a platform that runs the code you have written for your lotto calculator. They set up the servers, they worry about hard drives failing. If the app is popular, the platform ‘grows’ to accommodate it without having to physically rent more server space. The only thing the programmer does is deploy the code, and pay for resources that are consumed (hard drive space, network bandwidth, memory, etc).


Software as a service (SaaS) allows you to add functionality to the your programs without re-inventing that functionality from scratch. You might decide that you need to show a map of lotto winners - hey presto, with a SaaS product like Google maps, it’s as simple as calling the service (and paying for it).


Lastly, if you decide that you can’t find someone out there that provides the platform that you need, you can get a virtual server for a fraction of the cost of a real server. You have some pain in setting it up, but companies that offer virtual servers solutions provide pre-built server templates: e.g. with a data base or web server that you might need. The company providing the instance takes care of hardware breakages, load balancing and even spawning a new instance when one is needed. This is generally referred to Infrastructure as a service (IaaS) - think of it as getting a server in the same way that you’d get an email: you can’t touch it, but exists on the hard drive and in the memory of a server.


Back at Home

For the person wishing to generate a winning set of Lotto numbers, the exposure and options for hooking into the cloud are just as many and varied. A ‘cloud client device’ is generally accepted to be an end user product that, without the cloud, is otherwise useless. I suppose, generally, a mobile phone is the typical cloud client device - without a mobile network it’s a hunk of plastic pushing electromagnetic radiation into your body. Certain mobile phone apps - like the lotto app - are also cloud clients, as without the service working away to gather and collate information for you, the app is useless.


But more recently, there have been some even more specialized devices put on the market. Google has released it’s ‘Chrome book’ which essentially appears to be a browser with a computer attached. The by line “Nothing but the web” is a dead give away. In fact, I would go so far as to say that most smart phones and tables are cloud client devices - yes, you can do things on them when you’re away from the internet, but it’s a very frustrating and limited set of things.


The Cloud Economy

What has become clear is that Cloud computing isn’t any one technology or practice; it’s an entire economy. It’s analogous to the production process: the raw materials are extracted from a mine and through various process are enriched until they’re the shiny ring on your finger or the bling on your handbag. Server hardware is the raw materials, and many layers of infrastructure enable the services that enable the apps on your I-phone or the tablet. And given the rate at which these services are growing, it’s not surprising that an eager Irish government would like to hop onto the bandwagon!


One such Irish company is Digital Mines, who recently made a few waves by securing €750,000 for funding in a very depressed economic setting. Digital Mines is a company that is offering an easy way of spawning virtual servers off Amazon’s Elastic Cloud infrastructure. They are brokering IaaS services without actually owning a server - a very clever idea.


Clouds are here to stay

It’s safe to say that cloud computing is well and truly here: it’s in our pockets and in our homes, and is shaping the way that developers and IT professionals work. It’s enabling the evolution of data into knowledge and doing so at a compound rate: 5 years ago just pulling up a map on your computer screen was a big deal. Now, it’s a map with with your location, coffee shops, pubs, stationers and tourist attractions all marked out and easy to see, all rendered down to a 5 inch screen that travels around with you. Cloud computing is putting the world in the palm of your hand.