How Microsoft IT Deployed a Customer-Facing Application to Windows Azure in Six Weeks
Technical Case Study
Published: August 2011
When planning one of the first Microsoft application migrations to the new Windows Azure™ platform, the Microsoft IT wanted to migrate a customer-facing application that was internally hosted. By leveraging the flexibility and scalability of Windows Azure and its associated components and technologies, Microsoft IT was able to migrate the application completely in six weeks.
IT Decision Maker, IT Implementer
Microsoft IT identified the Online PUR/SPUR tools as the first application to migrated to the Windows Azure platform by Volume Licensing IT. The Online PUR/SPUR tools migration was a showcase to demonstrate the Windows Azure platform's ease of migration qualities. The migration was also an opportunity to develop best practices for future Windows Azure migrations.
|Microsoft IT utilized the core Windows Azure platform components to migrate the Online PUR/SPUR tools from the internally hosted Microsoft.com domain infrastructure to the Windows Azure platform. Microsoft IT gained valuable knowledge of the Windows Azure platform benefits and best practices for migrating subsequent applications to Windows Azure.||
The Online Product Use Rights (PUR) and Online Service Provider Use Rights (SPUR) tools on the Microsoft Volume Licensing site lets current and potential volume licensing customers create customized product use and service provider use documents based on their current or desired licensing purchases. These documents inform current and prospective customers about the differences between products and licensing models. Customers can analyze the information provided by the tool to determine which model fits the need of their organization.
Microsoft IT identified the web-based Online PUR/SPUR tools as good candidates for one of the first migrations of a customer-facing application to the Windows Azure platform.
Windows Azure enables organizations to build, host, and scale applications that are centrally hosted in Microsoft datacenters. Customers can deploy a solution to Windows Azure without up-front expenses for hardware procurement, maintenance, and support. Windows Azure–based solutions also provide a hosting environment that is fault-tolerant and highly available. Windows Azure–based solutions can also scale to meet the changing computing requirements of an application deployment.
For the first Microsoft IT migration project, the team needed an application that would fulfill certain requirements:
- The application should have a relatively simple configuration and deployment scope to make the first migration as simple as possible.
- The application should have a public user-facing interface that would allow Microsoft IT to showcase the Windows Azure platform in action.
- Application databases should be relatively small to avoid unnecessary complexity.
- The application should contain only low business impact (LBI) information to reduce deployment security risk and implementation complexity.
- The entire application infrastructure should be transferable to the Windows Azure platform (no additional on-premises components required).
Online PUR/SPUR Legacy Architecture
The Online PUR/SPUR tools were originally developed and then deployed on internally hosted servers as part of the Microsoft.com domain. Designed for anonymous access, the tool provided a click-through browser-based experience that resulted in a downloadable Microsoft® Office Word document. Online PUR/SPUR were designed and developed using Microsoft ASP.NET, and was hosted on an Internet Information Services (IIS) web server. An ASP.NET web service managed the business logic of the application and a Microsoft SQL Server® database provided application data storage in two separate databases.
Figure 1. Online PUR legacy architecture
The Windows Azure Platform
The Windows Azure platform is designed to provide a hosted, location-independent environment for hosting applications and their supporting data and infrastructure. Microsoft administers hardware implementation and maintenance in their datacenters, allowing customers to focus instead on their application development and deployment. Microsoft operates the Windows Azure platform on a large scale, and benefits from the related cost-savings that it then passes on to customers and partners. The platform's two key components—Windows Azure and Microsoft SQL Azure™—provide the majority of Windows Azure platform functionality.
Windows Azure is composed of three separate roles that provide three individual ways to host services on the Windows Azure platform:
- Web role. The Windows Azure Web role is customized for web application programming, as supported by IIS 7.0 and ASP.NET. The Web role commonly acts as an application's front-end by hosting the user interface (UI). Since IIS 7.0 is the core of the Web role, developers can create applications more easily using ASP.NET, Windows Communication Foundation (WCF), or other web technologies. Developers can also create applications using native code in languages such as PHP and Java.
- Worker role. A Worker role is used typically for business logic components or background services. A Worker role will commonly perform background processing for a Web role. The biggest difference between a Web role and a Worker role is that Worker roles do not have IIS configured inside them, and therefore the code they run is not hosted by IIS. The Worker role can host software developed on the Microsoft .NET Framework, or other software that is designed to run on Windows.
- VM Role. In a Web role or a Worker role, the focus is on creating and running code in an operating system that Windows Azure manages. With the VM role, developers use a preconfigured operating system image. Developers have full control of the operating system image, so the VM role is typically used when the customizations required for the application are large in number or cannot be automated.
SQL Azure provides the Windows Azure platform's native database component for data storage and management. Built on SQL Server technologies, SQL Azure provides a familiar database development and hosting environment that is centrally configured and maintained. This allows developers to focus strictly on developing and managing their data structures. SQL Azure uses the same T-SQL based relational model, and the same development and management tools that are found in SQL Server on-premises versions.
When Microsoft IT created the initial Online PUR/SPUR to Windows Azure migration plan, they recognized certain migration aspects that could present challenges or obstacles:
- First Implementation. Even with a relatively simple migration, Microsoft IT expected to encounter issues that would need to be solved and subsequently documented for use in future migrations.
- Application refactoring. Although the Windows Azure development environment is based on IIS and ASP.NET (the same environment in which the application resided on in the Microsoft.com domain), Microsoft IT anticipated the need to modify the application code or infrastructure to ensure that the application provided the same functionality and user experience on Windows Azure as it did when it was hosted on Microsoft.com.
- Redirecting traffic to the new application. The migration team at Microsoft IT knew that they would need to seamlessly redirect user traffic without affecting the user experience. They also wanted to maintain the address of the previous version of the tool.
- Microsoft IT wanted the Windows Azure migration to fulfill several design goals:
- The migrated application should be hosted entirely on the Windows Azure platform.
- The migrated application should provide the same user experience and performance as when it was hosted on the Microsoft.com domain.
- The solution should be designed to take full advantage of the Windows Azure platform components and capabilities.
- The solution should be efficient by reusing as much code and
as many application components as possible.
Microsoft IT originally planned to map the different Online PUR/SPUR tool components to the corresponding Windows Azure roles. The web-based UI seemed like a good fit for the Web role, and the various pieces of background process code and WCF-based components mapped well to the Worker role. The database component (which was hosted on SQL Server in the legacy version of the tool), would logically be transferred to SQL Azure, its cloud-based counterpart.
Web Application UI to VM Role
As anticipated, Microsoft IT met its first challenge when the web UI did not migrate directly into the Windows Azure Web role. This was because the MNP Framework—a core component of the Online PUR/SPUR tools—did not transition over to Windows Azure as expected. The framework would not run within the Windows Azure Web role, so Microsoft IT needed an alternative method for providing the MNP Framework to the Online PUR/SPUR tools in Windows Azure.
The team turned to the Windows Azure VM role to provide a solution. Because the VM role is a pre-configured virtual hard disk (VHD) running the Windows Server® 2008 R2 operating system, the Microsoft IT team could configure the VM to properly host the MNP Framework and the necessary components of the web UI. This provided an excellent opportunity for Microsoft IT to make use of VM role flexibility.
By using this approach, Microsoft IT took control of their application environment and encapsulated the problem component within the VM role. The team also ported the web UI components to the VM role by configuring and enabling IIS and other related components. In doing this, Microsoft IT placed the entire web UI within a single Windows Azure role, which will make for easier future modification and growth.
Web Application Business Logic to Worker Role
The Microsoft IT team used the Worker role to host the business logic–based components. This role primarily consists of WCF components that host the business logic code for the two separate Online PUR/SPUR applications. These WCF components were configured to run within the Worker role host executable, provide background services, and interact with the SQL Azure databases.
SQL Server Databases to SQL Azure
Microsoft IT migrated the data for PUR and SPUR from two separate SQL Server databases to two databases hosted on SQL Azure. The team also created SQL scripts to migrate the databases to their new Azure-based counterparts. Some modifications were necessary, as discussed in the Solution Challenges and Responses section.
Solution Challenges and Responses
During the first implementation, Microsoft IT encountered several challenges that required solutions in order to continue with the migration. Some of the challenges were a result of moving the application from one platform to another and the differences between Windows Azure components and their corresponding native Windows® operating system counterparts. Microsoft IT identified the challenges, and then implemented and documented solutions that they could then apply in subsequent migrations to Windows Azure:
Challenge 1: Online PUR/SPUR Dependency on the MNP Framework
To incorporate the MNP Framework into the Web role, a large part of the MNP Framework code would require refactoring. To overcome this, Microsoft IT ported MNP Framework directly without requiring modification, by using the VM role. The web UI components that would have gone into the Web role were also installed and configured within the VM role. As a result, only the VM role was needed.
Challenge 2: Windows Azure Role Configuration
Windows Azure role configuration provides the data necessary for the Web role and Worker role unique configuration requirements. The Windows Azure VM role will not read an Azure role configuration by default. As a result, in the Online PUR/SPUR implementation, Microsoft IT needed another method to ensure proper configuration of IIS. To accomplish this, Microsoft IT wrote and implemented a Windows service that was configured with elevated privileges within the VM role to auto-start and perform the role configuration on the Web.config file that was hosted within the VM role.
Challenge 3: Application code refactoring
The Microsoft IT team encountered instances where code within the migrated application required modification to function properly within the Windows Azure environment. Although using the VM role greatly reduced the need for code changes, some changes were still required. Some of these changes were not evident in development, and became apparent only when the application was placed into the live environment. Microsoft IT implemented and tested each instance of code refactoring in the live Windows Azure environment.
Challenge 4: Virtual Machine build process
The Microsoft IT team initially configured the virtual machine (VM) image used in the VM role on-premises. The team then uploaded the VM to the Windows Azure platform. The time to configure the VM and the time to upload the image to Windows Azure were significant in the overall application migration process. In subsequent migrations, the Microsoft IT team has established base VMs to use in their VM role implementations.
Challenge 5: SQL Azure transitions and limitations
The Microsoft IT team found instances after migration where features that were available in the on-premises SQL Server version were not present—or differed slightly—when compared to SQL Azure. Differences included:
- No support for Text data types: Microsoft IT discovered that no support for Text data types existed in SQL Azure. Instead, the team used the nvarchar(max) data type in place of Text.
- Clustered indexes required on all SQL Azure tables: Microsoft IT found that clustered indexes needed to be created for any tables within the two databases that did not already have a clustered index.
- No support for Microsoft Office Open XML: Microsoft IT discovered that no support for Office Open XML existed in SQL Azure. As a result, the team refactored application code to use other XML nodes and value functions.
- No SQL Agent: Microsoft IT discovered that no SQL Agent existed in SQL Azure. To remedy this, the team wrote a utility for Microsoft System Center Operations Manager to automate any monitoring that would have been performed by the SQL Agent in the on-premises legacy version.
Challenge 6: Rerouting Microsoft.com users to Windows Azure
Microsoft IT did not want any interruption to the Online PUR/SPUR tools availability once the team migrated it to Windows Azure. They also wanted to retain the internet address of the tool. To accommodate this, the Microsoft IT team implemented the IIS Application Request Routing (ARR) extension to seamlessly redirect users from the Microsoft.com-based URL to the Windows Azure–hosted version of the Online PUR/SPUR tools, maintaining the Microsoft.com address.
Final Solution Architecture
Figure 2. Final Windows Azure architecture for the Online PUR/SPUR tool
The first Microsoft IT customer-facing application migration to the Windows Azure platform provided a number of application benefits and best practices.
- Cost savings. The Online PUR/SPUR tool hosted on Windows Azure can now utilize the Windows Azure distributed cloud architecture. No hardware purchasing or maintenance is necessary, and the Online PUR/SPUR application is stored at a Windows Azure data center.
- Code refactoring savings. The Microsoft IT team used almost all of the Online PUR/SPUR application code when migrating the Online PUR/SPUR tool. This resulted in time and resource savings that would have been otherwise dedicated to refactoring code.
- Time and resource savings. Due to the ease of migration and the flexibility of the Windows Azure platform, the Microsoft IT team performed the migration from start to finish in just six weeks.
- Allocate time for application refactoring when migrating to Windows Azure.
- Use the VM role to encapsulate complex or unsupported application components.
- When using the VM role, prepare base images with Azure deployment prerequisites already installed.
- Be aware of required changes to the SQL Azure database, and plan database refactoring during migration.
- Create a role adapter service to import role configuration
for Web role components that are hosted within the VM role.
Using the Windows Azure platform, Microsoft IT migrated a legacy application to a Windows Azure-hosted solution in six weeks. The migration required minimal refactoring of application code, and gave Microsoft IT the opportunity to build their core best practices for migrating applications onto the Windows Azure platform.
Products & Technologies
- Windows Azure VM Role
- Windows Azure Worker Role
- SQL Azure
- System Center Operations Manager 2007 R3
- Microsoft Visual Studio® 2010 (development environment)
- Windows Azure SDK 1.4
For More Information
For more information about Microsoft products or services, call the Microsoft Sales Information Center at (800) 426-9400. In Canada, call the Microsoft Canada Order Centre at (800) 933-4750. Outside the 50 United States and Canada, please contact your local Microsoft subsidiary. To access information via the World Wide Web, go to:
© 2011 Microsoft Corporation. All rights reserved.
Microsoft, SQL Server, System Center Operations Manager, Visual Studio, Windows, and Windows Server are either registered trademarks or trademarks of Microsoft Corporation in the United States and/or other countries. The names of actual companies and products mentioned herein may be the trademarks of their respective owners.
This document is for informational purposes only. MICROSOFT MAKES NO WARRANTIES, EXPRESS OR IMPLIED, IN THIS SUMMARY.