In a previous post we covered a simple decision flowchart for evaluating applications that you might want to move to ”the Cloud”.
We talked about application “fitness” for the Cloud and how to decide which ones in your application portfolio would benefit from the application of Cloud technology.
In that post we covered the branch of the chart that addressed brand-new applications, leaving the more difficult existing applications for later discussion.
The bottom line for a new application, as Bill Wilder so eloquently put it (and with fewer words than I used ) was “Use SaaS if you can… else use PaaS if you can… else IaaS (the last resort!)“
Migrating an Existing Application
Now lets take a look at migrating an existing application to Windows Azure. This involves the other side of the decision flowchart.
Admittedly even this chart is a bit of an oversimplification, but it should serve to frame the discussion.
Two-Tier Web Site with Back-End Relational Database
If your legacy application is a fairly simple two-tier web farm based application backed by a SQL Server (or MySQL) database then the new Windows Azure Web Sites feature might be appropriate.
This new feature, currently in CTP, allows you to deploy a web site backed by a relational database to Windows Azure. In most cases this is the same application that you might already be running on-premises.
If, however ,your application is a multi-tier application or uses any unsupported features then there are other considerations.
Not a Two-Tier Application
If your application is a multi-tier application, for instance architected in separate Presentation, Business Logic and Data tiers, then the Web Sites feature is not appropriate. (There is an exception to this rule, however that we will talk about later on.) In that case your choices are modify it to use PaaS or forklift it into the Cloud as-is using IaaS.
Uses Unsupported Features
Even if it is a well-designed two-tier web application there may still be impediments to moving it to Windows Azure using the Web Sites Feature. For instance in the case of a web site that uses a SQL Server database you may have the situation where your application uses some SQL Server features that are not supported by Windows Azure SQL Database (the new name for SQL Azure) For instance SQL Server features like Full-Text Search, some collating sets, and some other SQL Server features are not yet supported in Window Azure SQL Database. ( See this comparison of features.) If that is the case, consider migrating the application using the new Windows Azure IaaS features. Also, if your application uses any other unsupported features like COM+ then the Web Sites feature may not be appropriate.
Another Windows Azure SQL Database “feature” to be aware of is that there is currently a 150 GB single database size limit in Windows Azure SQL Database. If your database is within that size limit then the Windows Azure Web Sites feature may well be the answer. Of course there is nothing wrong with also migrating your application to PaaS, especially if you plan to start taking advantage of other Windows Azure PaaS services. (We will talk about this in just a bit.
If your current database is larger than 150GB then that you may have to split it up into multiple smaller databases, assuming that is possible given your current database schema. Windows Azure platform provides a Sharding feature to support your doing this but be aware that some database redesign and application modification will probably be required.
If you don’t want to do that then moving the application to IaaS is a possible approach.
There are also other on-premises web site and database features that may not be supported by the Web Sites feature.
Windows Web Sites and Cloud Services Web Role seem to have a lot of similarities so it is useful to understand the benefits of each and when they may be indicated. There have been a number of excellent blog posts on this subject by Larry Franks and Brian Swan, Shaun Xu and others. This table from Shaun Xu is a good summary to help you decide. If you need a feature that is not supported by Web Sites you may need to use a Cloud Service (Web Role).
CLOUD SERVICE |
WEB SITE |
|
OS |
Windows Server |
Windows Server |
Virtualization |
Windows Azure Virtual Machine |
Windows Azure Virtual Machine |
Host |
IIS |
IIS |
Platform |
ASP.NET WebForm, ASP.NET MVC, WCF |
ASP.NET WebForm, ASP.NET MVC, PHP |
Language |
C#, VB.NET |
C#, VB.NET, PHP |
Database |
SQL Database |
SQL Database, MySQL |
Architecture |
Multi layered, background worker, message queuing, etc.. |
Simple website with backend database. |
VS Project |
Windows Azure Cloud Service |
ASP.NET Web Form, ASP.NET MVC, etc.. |
Out-of-box Gallery |
(none) |
Drupal, DotNetNuke, WordPress, etc.. |
Deployment |
Package upload, Visual Studio publish |
FTP, Git, TFS, WebMatrix |
Compute Mode |
Dedicate VM |
Shared Across VMs, Dedicate VM |
Scale |
Scale up, scale out |
Scale up, scale out
|
Another good introduction to Web Sites, together with an overview of how to create one is this one by David Pallmann.
Other Considerations
That about covers our exploration of the decision flowchart for now. As I said earlier in this series even this is somewhat of an over simplification but it is useful to help tease out some of the major considerations in moving applications to the Windows Azure Cloud.
After the first post in this series I received a number of excellent comments via multiple internet channels which I summarized in the comments section of that post. Next time we will cover some of those comments in more detail and also talk about hybrid solutions that combine Windows Azure Web Sites with other Widows Azure services such as Service Bus, Caching, Windows Azure Storage and other Cloud Service role types such as the Cloud Service Worker Role.
Bill Zack
Contact me via Email: wzack@live.com
Visit my Blog: Cloudy In New York
Visit me on LinkedIn
Follow me on twitter: WilliamHZack
Call me at 203 545-2339 (mobile)