One of the responsibilities in my new job
is to help customers adopt and migrate to Windows Azure. A majority of our customers choose Windows
Azure as the cloud platform for optimizing costs while improving the performance
and scalability of their apps.
While it would be great to architect an app
ground up for the Azure platform, real life customers have a lot of their
existing apps that need to be migrated.
Typical customers’ on premise applications
are web applications developed in .NET 2.0, .NET 3.5 or .NET 4.0 running SQL
Server as the back end. Some of the apps
also have middleware services built using Web Services or WCF Services.
There can never be a complete architecture
without integration of existing LOB Applications. Not surprisingly, most of these apps have
integration with their internal AD, LDAP or other authentication
subsystems.
Most of these apps were developed in days
where the organization had lesser man power, more time to manage and fewer
demands for these systems. With the increase in employee workforce,
more and more demand for these applications, the decision to move to cloud
becomes all the more important.
But the biggest question customer’s face is
how does one go about re-architecting these systems for Windows Azure?
In the following series of posts we will see where each of the components fit. We'll delve through different scenarios and also on which Azure offering best fits the scenario.
Scenario I
A Retail customer has several of
his web applications written using .NET Framework with SQL Server as backend.
The applications are enterprise applications which are multi-tiered, with several scheduled jobs that are run in backend. The
application is architected well using Best Practises prescribed by Microsoft.
The following are some of the
top challenges he is facing currently and evaluating the options for moving to
cloud:
1. The web applications are
being used by customers world-wide and the performance becomes a concern many
times, during Promotional offers.
2. The customers using the
applications are increasing by time and its becoming difficult to increase the
hardware for scaling out the applications.
3. Managing IT operations costs
is becoming huge and this needs to be optimized
Which Azure offering best suits this scenario?
With this scenario, we see the first and foremost component to be migrated are Web Applications – typically
built using ASP.NET 3.5 or ASP.NET 4.0 in the recent past using Visual Studio
2008 or Visual Studio 2012. This looks a
straight forward candidate for Windows Azure Cloud Services.
Windows Azure Cloud Services offers Virtual
Machines or what we call as Web Roles that run your ASP.NET Applications on the
cloud with little bit of additional packaging and configuration.
The scheduled jobs and other start up tasks that the customer runs are taken care by what are called as Worker Roles, which are basically Windows Services that are run in Virtual Machines.
The "How" part:
For migration to cloud using Cloud Services, all you need is Visual Studio and the Windows Azure SDK (a free download toolkit that can be downloaded from here). In case you are fine with command line utilities, you can even use the Windows Azure Powershell commandlet to compile and package your application to deploy in cloud services.
You can download windows azure command line utilities from here.
As per the scenario in discussion, you have an ASP.NET Application
which reads data from SQL Server Database or any other Service. There are also some scheduled jobs that need to be migrated. Both these applications ("Projects" in terms of Visual Studio) can be migrated by adding a Cloud
Project Template (available in Visual Studio 2010/Visual Studio 2012). You can even simulate the cloud platform
using the Emulator that ships along with the Windows Azure SDK. So, the first time you add the cloud project
template and run the application locally, it would open up the emulator where
you can see how, in the cloud environment the web roles would be
provisioned. Is this not awesome? Having seen how difficult it is with other cloud providers to simulate a "cloud-like" environment and debug in local machine, Windows Azure is definitely a boon!
Finally publishing to Azure is as simple as a right-click -> Publish from Visual Studio
In the spirit of DRY (do
not repeat yourself - keeping things in a central place), I am going to provide
the resource available in windowsazure.com for a step by step detail on
migrating existing ASP.NET Applications to Cloud Services:
Summary
To sum this post, if you have an ASP.NET
Application written using .NET 3.5 and above, the logical choice to port to
Azure would be is to use a Cloud Service Project.
Moreover, Cloud Service Project offers the
flexibility of using Remote Desktop to remote login and manage the virtual
machine, in addition to setting up preconfigured installers that are required
for the application (installing a reporting component or any dependant
assembly).
Finally, if you want to migrate a
three-tier application with Web Services/WCF Service in a separate Service or
having them on-premise etc., then Windows Azure Cloud Service is your best bet.
Subsequent posts will concentrate on other scenarios that will best fit for Azure Websites and other Cloud
Components.
Trivia: A
Web Role can have multiple web applications hosted and a web application can be
hosted in multiple web roles.
No comments:
Post a Comment