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:
|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
|Elastic Compute Cloud (EC2) allows you to upload your XEN virtual
machine images to the infrastructure and gives you APIs to instantiate and
|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.
|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.
Various Live services (contacts, mail, maps and so on.)
At the moment, all these components do not seem to be integrated with
|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
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#).