To Cloud or Not To Cloud–Part 2

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 Smile) 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.

image

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)

 

About CloudyInNashville

I am a Cloud Architect and Consultant. Over several years I have been working with companies to help them design and build .NET based applications for public and private clouds. My focus is the Cloud, Public Clouds and Microsoft's Windows Azure Cloud platform in particular.
This entry was posted in Uncategorized. Bookmark the permalink.

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s