We’re living cloudy times

Posted by | January 15, 2011 | Uncategorized | No Comments

The increasing number of users who have access to the internet has lead technology as we knew it to a new evolution step, I am specking about cloud computing and the way this new paradigm   is affecting the way we are thinking and writing applications. Today there are 3 main giants witch are providing cloud hosting solutions/platforms: Google, Microsoft and Amazon. The price are almost identical, the big   difference is in the supported technologies/ programming languages. In the next list are compared some  aspects of the main three cloud solutions:

Feature Microsoft Amazon Google
Computing Architecture You provide .NET code for front-end and back-end servers which
Microsoft then runs on Windows 2008 virtual machines according to your
environment specifications (how many machines of each kind you need, and so
on.)
Elastic Compute Cloud (EC2) allows you to upload your XEN virtual
machine images to the infrastructure and gives you APIs to instantiate and
manage them.
You write your web application in Python,  Django and Java with a specific
set of limitations set by Google and submit the application code to them.
Load balancing Yes Yes Yes
Storage Yes: application storage and SQL services Yes: Simple Storage Service (S3) and SimpleDB Yes: database Datastore APIs
Message queuing for machine communcations Yes: queues in Windows Azure storage Yes: Simple Queue Service (SQS) No
Integration with other services So called .NET services (aka BizTalk in the cloud):

Access control services, workflow service, service bus.

Live Mesh

Various Live services (contacts, mail, maps and so on.)

At the moment, all these components do not seem to be integrated with
the solution but rather bundled.

No Yes, with existing Google services: authentication, mail, base, calendar,
contacts, documents, pictures, spreadsheets, YouTube.
Tied to the vendor datacenter Yes Yes Yes
Development tools Yes, integration into Visual Studio, support for any .NET languages, Not applicable. Amazon simply runs your virtual machines and does not
care which development platform you are using on top of the base OS.
Yes, have basic editing, local simulation, and deployment tools.
Language selection limited to Python, Django and Java.

Now the GWT ca be really simple integrated with Java App Engine applications

source (http://cloudenterprise.info/2008/10/29/microsoft-azure-vs-amazon-google-and-vmware/)

From this three solution, the truly cloud solutions are from Google and Microsoft,  Amazon is actually providing a visualization solution. The thinks  that are so cool about cloud technologies is that we pay only for what we consume, we can easily scale up and down our applications and my favorite the automatic load balance. If in the case of traditional hosting solutions you pay a fix amount of money for some resource event if you use them or not in the case of cloud hosting solutions you pay only for the amount of resources that you use, is just as in the case of the electricity. I personally like on cloud the so called “computation on demand” or with other words the possibility of  scaling up you’re application making it available to more users. To understand the importance of cloud computation let’s suppose that you have just created a really new cool application and customers start using it, but the application is so  awesome that you’re clients start sharing it with they’re friends and they friends with they’re friends and so on. In this way you get a traffic spike, but the hamsters that are powering you’re servers get tired. To avoid this you have to able to predict when you will have a traffic spike and buy or rent more servers where to host you’re application so that it can handle the heavy load.  Maybe you’re application has a shortly glorious moment of couple of days and the number of users start to decrease, but you have already payed for the extra hardware resource and you have used it just for a short period.   Well in the case of the cloud the story is more simple because you don’t have to predict anything, the amount of resources that are needed to run you’re application will be automatically scaled  up and down as they are needed.

Well of course, you can’t just take you’re old application and just put it on cloud, there are some rules and constrains imposed by  the cloud computing model.

In short time I will come back with samples of cloud application on Google App Engine (Java & Python) and of course on Windows Azure (C# and F#).

About Andrei Tara

Andrei is a developer/geek who loves creating high quality and efficient applications, always following the best practices in software engineering. He loves the challenge of learning new, exciting things and playing with new languages, frameworks, and tools.

Leave a Reply