Monday, November 10, 2008

Windows Azure an introduction and what will it mean to the corporate developer? (Part 2)

The previous post about the Azure Platform was more along the positive vibe so this time I tought we would have a go at the negative stuff, or atleast with some of the concerns buzzing about around in my head. I am going about this from a perspective in how this could benefit the LOB applications that we produce where I work and the problems that we might occur whilst trying to incorporate the Azure Platform into our overall architecture, that said lets get down to business.

So when it comes to outsourcing in general (which applies in both SaaS and PaaS scenarios) we are confronted by the issues concerning trust. We need to have a really trusting relationship with our partners to be able to put parts of our business in their hands. Basically the trust issues boils down to two things as I see it Data and Availability.

Data, the concern here revolves around data ownership if we lock into on vendors storage solution it will become very difficult to move that data to another provider at a later point in time (I doubt that we will get much help from the vendors in a migration effort). Also regulatory issues are a big concern for many companies.

Availability, altough one has to remember that no system can really in practice garantuee 100% uptime there are simply to many fault factors in the equation. However I see one major difference which is that we are in control when a failure occurs on-premise (or atleast we like to think we are). Wether or not we actual are in control we do control the triage process of how we should go about to resolve the problem. I pretty sure that this procces will look completly different when left in the hands of a service provider (I'm guessing the ammount of dollars spent will affect the priorty you get and there is nothing wrong with that just simple economics).

Below you can find a few links concerning availability issues from the current players such as Amazon, Google and Salesforce and I am worried that we will see the likes for Microsoft as well once the load starts to increase for them:

Amazon EC2 & S3

Amazon Web Services Gets Another Hiccup
Amazon's S3 utility goes down
Google App Engine

Google's App Engine Breaks Down
Google explains why App Engine failed
Salesforce's hiccups down…again
Another issue that I think is even more important is the fact that in a multi-tenant environment we have issues with things such as resource exhaustion (it only takes one bad apple to spoil the bunch) in the Azure Platform they intend to tackle this with a configuration model that specifies things such as intended cpu load and average response times, using this information they will automate the process of scaling out the application when needed. However I still don't see this handling the poor suckers that end up on a machine with a bad app!

Finally moving into the cloud will have some effect on the way we write applications, many of the aspects we know and love from writing scalable solutions on-premise just gets even more critical. Things such as stateless execution and node affinity (or rather the lack of) will be absolutly nessecary to be able to handle provisioning when a catastrophic failure occurs. Upgrading your application will become much more difficult since you'll have to build your applications in a way that they have no downtime, therefore we have to be both forward and backward compatible in both the interfaces, implementation and storage schemas (and belive me if you don't have any experience in this area, it is hard to not break anything).

All in all I'm looking forward to tackle these issues in more detail when I get back from my paternety leave, altough I expect that I will not be able to drop the issue entirely before that and so I might write something more along the lines on what I think around the design considerations for using the Azure Platform in conjuction with an LOB appliction running on-premise.

Next part in this series will look abit more at the details concerning Windows Azure followed by the final installment taking a little closer look at the building blocks closest to my heart .NET Services and SQL Services.


  1. Great to hear your thoughts about this. One nitpick: in the current Windows Azure model, you're guaranteed resources based on our virtualization. That means you don't have to worry about some other misbehaving application starving yours for resources.

  2. Steve, that's great to hear. I guess that you are not intending to have multiple tenants on the same physical boxes then? Since even in a virtualize environment the physical resources are affected by a rouge application consuming 100% of the resources in a virtualized instance, are they not?

    Btw love your shoes :)