Web Sites or Cloud Services?

The latest update to the range of Windows Azure services includes a nifty feature called Web Sites that provides a really great way to deploy your own websites to the cloud. It's quick and easy, you can progressively update the site by uploading individual files, and it's cheap. In fact at the moment, if you can get onto the public preview program, it's actually free!

Here at p&p, as part of the regular update cycle for our series of guides about Windows Azure, we're looking at Web Sites as a way of deploying the example applications used by the fictitious companies described in our guides. In today's fast changing business environment, you'd expect that the ability to rapidly build, test, deploy, and update applications using a wide range of tools and deployment methods would be a huge advantage. However, so far, I'm not sure.

Business-critical applications typically have a life cycle that requires them to pass through several rigidly enforced processes. The code must undergo rigorous pre-deployment testing, validation, and certification. It must be deployed to a staging environment that is as near identical to the final runtime environment as possible, where it must undergo another full test cycle before release. It needs to be performance tested under load, and tested with real data over the connections and networks it will use when running live. Finally, it must be versioned so that bugs and updates can be tracked, and full integration testing can occur for each deployed version.

But what about prototyping, proof of concept, and initial development? This seems to be an ideal scenario for Web Sites. Unlike Cloud Services, developers can use any tool they wish, and any of several development languages and deployment methods. Updates to the running application are quick and easy without requiring a full packaging and deployment cycle, and the changes are visible in the application almost instantly.

However, unless you pay for reserved instances rather than using the default (free) shared instance model, load and performance testing is unlikely to provide a realistic result. And the cost of a reserved instance is about the same as a Cloud Services instance. You still get the advantages of support for lots of different development tools and languages, but your application will need to be modified to run under the .NET Framework using Visual Studio's Cloud project structure later if you want to use Cloud Services.

We're still evaluating the options here, and I'd welcome any feedback around this topic. If you are building business applications for Windows Azure, let us know your thoughts...