Moving Your Application to the Cloud

When considering Windows Azure and the Cloud, architects and developers are often discouraged, thinking that in order to move a solution to the Cloud it must be reengineered to support the Cloud. Fortunately, that is not the case as there are different ways that a solution can take advantage of the Cloud.

Designed For Windows Azure – Consider this option if you are in the process of planning or developing the next release of your solution. When you design your solution for Windows Azure, you take advantage of the cloud-based services available with Windows Azure – commonly Blob Storage, Tables, Queues, and SQL Azure. Going a step further, you may leverage the programmatic scalability of Windows Azure to allow your solution to scale up and down as it needs in order to handle additional traffic or increased processing loads. The Windows Azure programming model is what enables this for your solution (and the application(s) with in it) and it is worth getting familiar with it in order to optimize how your solution can leverage the power of the Cloud. To learn more, you can download the Why Develop in the Cloud: The Windows Azure Programming Model whitepaper.

Compatible with Windows Azure – if rewriting portions of your solution to use cloud-based services is not an option or is not on the product roadmap in the near future, it does not mean that you cannot leverage Windows Azure to realize the infrastructure and cost benefits that come with the Cloud. For non-complex solutions, within an hour, you can convert an existing web application or service project to a Cloud project, deploy your database to SQL Azure, connect the application or service to the SQL Azure database, deploy the Cloud package, and you are up and running (if you would like to see how this is done, try it yourself by following the steps in Deploying a Simple Cloud App). You do not have to use all of the additional services provided by Windows Azure. If and when your solution expands further, you can look at the additional services as available tools when you go to architect your new features.

If you have a more complex solution, the parts of your solution may not necessarily work well in Web and Worker roles. With the Windows Azure VM role, you can run your solution in the Cloud without any modifications. Though you manage the VM completely and are required to maintain the VM (patches, fixes, etc.), you are still taking advantage of the Windows Azure environment: immediate scalability, in-place upgrades with no service downtown, and load-balanced traffic. This is a great option with which to get started on your journey to adopt the Cloud.

Having said that, the best way to determine which areas of your solution can and cannot be modified easily to leverage Cloud services is to give it a try! Before you go ahead, make changes to your solution, and start testing those changes, you are going to want to:

  1. Make sure that you understand Windows Azure under the hood. To do that, take the Windows Azure Jump Start course.
  2. With the concepts understood, take a sample application, as in Deploying a Simple Cloud App, and migrate it to Windows Azure. This will give you an idea of the effort involved in moving an existing application to the Cloud and will allow you to extrapolate and plan migration efforts for your application.
  3. For more in-depth application of the concepts, go through the labs included in the Windows Azure Platform Training Kit. These labs will materialize those concepts for you at depth and make sure that you are ready to implement them in your application.

When you are ready to leverage Cloud services in your solution, send me an email or a message on Twitter. I’d love to connect and see how I can help you and/or connect you with various local Windows Azure experts that can help you, and your organization, on your journey to the (Windows Azure) Cloud.