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:
Google App Engine
Google's App Engine Breaks Down
Google explains why App Engine failed
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.