This table is just a quick comparison for the types of services that the major cloud providers offer as of the posting date. This is by no means a comprehensive comparison, as I am sure there are other providers and types of services I’m not listing. And I’m not being feature or platform specific either. For instance I realize that Google’s App Engine and Windows Azure don’t allow for the same development platforms. But they do provide a similar service at a high level. Also I’m sure the features for each category vary by provider.
As a consultant, I am always trying to see where new tools may fit so that I can help my clients. So I really need to know where the cloud fits into application development recommendations. Really, it’s just another platform that expands the options for a client. This is my 10,000 foot view of criteria for when Azure applies to solution (given what I know today):
Lower cost of maintenance. You don’t own the hardware, you don’t fix it, update it, etc.
Pay as you go. A short term app (say for a marketing campaign) is very cheap to run.
The app is abstracted from the infrastructure. You don’t have access to it, so now you ignore it.
Scalability is easy. Apps that are seasonal or have know traffic spikes benefit from this greatly. Also apps that become more or less popular are easier to scale up or down in a very short period of time.
The base cost for Azure is about ~ $1000/yr just to have one active app instance ($0.12/hr). Bandwidth and disk space are extra charges on top of the base cost, but seem inexpensive to me.
Since bandwidth and storage are cheap in Azure, so if you have a high need for either Azure is a good idea.
Reliability. Azure has Service Level Agreements (three nines or better) with penalties for Microsoft if they fail.
There is alerting/API integration with SCOM, so if you want to monitor an Azure app with your in-house tools you can.
Geo-location. You can have multiple instances of your Azure app in geographically disparate locations. Of course there are issues with data sharing, authentication, etc. But it’s significantly easier with Azure than other options available today.
You can use Azure as a storage-only option and split your app between self hosting and Azure, or vice-versa.
Having an app in the cloud may not be compliant with some regulatory guidelines
Cloud applications are web apps only. Not all solutions use web apps.
Identity and authentication are a challenge. The app is no longer in your domain, so you will need to look at federation or other options.
Most out-of-the-box apps are not hosted on Azure. Think CRM, ERP, financial, etc.
Apps that need access to the infrastructure aren’t going to work or need to be re-designed for the new paradigm.
It’s a new platform, even if it seems just like ASP.NET. This means you design differently, you develop a little differently as well. So there is a learning curve.
You are still responsible for data backups, I’m still not clear on how this works for the non-SQL storage options.
Overall, I think this is a significant new option for all sizes of companies. I’m not sure many companies are ready to give up the security of having mission-critical apps in-house, but I think for smaller companies Azure is a huge step forward. If you are already paying for hosting an app of some kind, give Azure a look.