Moving Applications to the Cloud on the Microsoft Windows Azure Platform
How do you build applications to be scalable and have high availability? Along with developing the applications, you must also have an infrastructure that can support them. You may need to add servers or increase the capacities of existing ones, have redundant hardware, add logic to the application to handle distributed computing, and add logic for failovers. You have to do this even if an application is in high demand for only short periods of time.
The cloud offers a solution to this dilemma. The cloud is made up of interconnected servers located in various data centers. However, you see what appears to be a centralized location that someone else hosts and manages. By shifting the responsibility of maintaining an infrastructure to someone else, you’re free to concentrate on what matters most: the application.
Print and Ebook available for purchase.
This book is the first volume in a planned series about the Windows® Azure™ platform. It demonstrates how you can adapt an existing, on-premises ASP.NET application to one that operates in the cloud. The book is intended for any architect, developer, or information technology (IT) professional who designs, builds, or operates applications and services that are appropriate for the cloud. This book is primarily written for people who work with Windows-based systems. You should be familiar with the Microsoft .NET Framework, Microsoft Visual Studio®, ASP.NET, SQL Server®, and Microsoft Visual C#®.
“Introduction to the Windows Azure Platform“ provides an overview of the platform to get you started with Windows Azure. It describes web roles and worker roles, and the different ways you can store data in Windows Azure. It’s probably a good idea that you read this before you go to the scenarios.
“The Adatum Scenario“ introduces you to the Adatum company and the aExpense application. The following chapters describe how Adatum migrates the aExpense application to the cloud. Reading this chapter will help you understand why Adatum wants to migrate some of its business applications to the cloud, and it describes some of its concerns.
“Getting to the Cloud“ describes the first steps that Adatum takes in migrating the aExpense application. Adatum’s goal here is simply to get the application working in the cloud, but this includes “big” issues, such as security and storage.
“How Much Will It Cost?“ introduces a basic cost model for the aExpense application running on Windows Azure and calculates the estimated annual running costs for the application. This chapter is optional. You don’t need to read it before you go on to the following scenarios.
“Automating Deployment and Using Windows Azure Storage“ describes how Adatum uses PowerShell scripts and the Microsoft Build Engine (MSBuild) to automate deploying aExpense to Windows Azure. It also describes how Adatum switches from using SQL Azure to Windows Azure Table Storage in the aExpense application and discusses the differences between the two storage models.
“Uploading Images and Adding a Worker Role“ describes adding a worker role to the aExpense application and shows how aExpense uses Windows Azure Blob Storage for storing scanned images.
“Application Life Cycle Management for Windows Azure Applications“ discusses how to manage developing, testing, and deploying Windows Azure applications. This chapter is optional. You don’t need to read it before you go on to the last scenario.
“Adding More Tasks and Tuning the Application“ shows how Adatum adds more tasks to the worker role in the aExpense application. In this phase, Adatum also evaluates the results of performance testing the application and makes some changes based on the results.
The book is intended for any architect, developer, or information technology (IT) professional who designs, builds, or operates applications and services that are appropriate for the cloud. Although applications do not need to be based on the Microsoft® Windows® operating system to work in Windows Azure, this book is written for people who work with Windows-based systems. You should be familiar with the Microsoft .NET Framework, Microsoft Visual Studio®, ASP.NET, and Microsoft Visual C#®.
These are the system requirements for running the scenarios:
- Microsoft Windows Vista SP1, Windows 7, or Microsoft Windows Server 2008 (32-bit or 64-bit)
- Microsoft Internet Information Services (IIS) 7.0
- Microsoft .NET Framework 3.5 SP1 or later
- Microsoft Visual Studio® 2008 SP1
- Windows Azure Tools 1.1 for Microsoft Visual Studio
- Windows Identity Foundation
This first guide focuses on migration scenarios. It introduces a fictitious company named Adatum which step-by-step modifies its expense tracking and reimbursement system, aExpense, so that it can be deployed to Windows Azure.
aExpense is built with ASP.NET 3.5, it is deployed in Adatum’s data center, and is accessible from the Adatum intranet. The application relies on the Microsoft Active Directory® directory service to authenticate employees. It also uses Active Directory to access some of the user profile data that the application requires, for example, an employee’s cost center and manager.
The aExpense application uses a simple SQL Server® database for storing application data, and the application uses LINQ to SQL as its data access mechanism. The application is configured to connect to SQL Server by using integrated security, and the website uses a service account to log on to the database.
Adatum identified some specific goals. The aExpense application in the cloud must be able to access all the same data that the on-premises version of the application can access. This includes the business expense data that the application processes and the user profile data, such as a user’s cost center and manager that it needs to enforce the business rules in the application. However, Adatum would like to remove any dependency on Active Directory from aExpense and avoid having the application call back into Adatum from the cloud.
A second goal is to make sure that operations staff have access to the same diagnostic information from the cloud-based version of aExpense as they have from the existing on-premises version of the application.
A significant concern that Adatum has about a cloud-based solution is security, so a third goal is to continue to control access to the aExpense application based on identities administered from within Adatum, and to enable users to access the application by using their existing credentials. Adatum does not want the overhead of managing additional security systems for its cloud-based applications.
Overall, the goals are to migrate aExpense to the cloud while preserving the user experience and the manageability of the application, and to make as few changes as possible to the existing application.
Subsequent chapters of the guide introduce more sophisticated requirements and different components in Windows Azure to address them.
This guide, like many patterns & practices deliverables, is associated with a community site. On this community site, you can post questions, provide feedback, or connect with other users for sharing ideas. Community members can also help Microsoft plan and test future guides, and download additional content such as extensions and training material.
A second part is planned to cover “greenfield” scenarios. Check the community site for updates.
Feedback and Support
Questions? Comments? Suggestions? To provide feedback about this [type of deliverable], or to get help with any problems, please visit the Windows Azure Architecure Community site. The message board on the community site is the preferred feedback and support channel because it allows you to share your ideas, questions, and solutions with the entire community. The Windows Azure Architecture Guide is a guidance offering, designed to be reused, customized, and extended. It is not a Microsoft product. Code-based guidance is shipped “as is” and without warranties. Customers can obtain support through Microsoft Support Services for a fee, but the code is considered user-written by Microsoft support staff.
Authors and Contributors
The Windows Azure Architecture Guide was produced by the following individuals:
- Program and Product Management: Eugenio Pace
- Architect: David Hill
- Subject Matter Experts: Dominic Betts (Content Master), Scott Densmore, Ryan Dunn, Steve Marx, and Matias Woloski (Southworks)
- Development: Federico Boerr (Southworks), Scott Densmore, Matias Woloski (Southworks)
- Test team: Masashi Narumoto, Kirthi Royadu (Infosys Technologies), Lavanya Selvaraj (Infosys Technologies)
- Edit team: Dominic Betts (Content Master), RoAnn Corbisier, Colin Campbell (Modeled Computation), Roberta Leibovitz (Modeled Computation), and Tina Burden (TinaTech Inc.)
- Book design and illustrations: Ellen Forney, John Hubbard (eson), Rob Nance and Eugenio Pace.
- Release Management: Richard Burte (ChannelCatalyst.com, Inc.)
We want to thank the customers, partners, and community members who have patiently reviewed our early content and drafts. Among those, we want to highlight the exceptional contributions of David Aiken, Graham Astor (Avanade), Edward Bakker (Inter Access), Vivek Bhatnagar (Microsoft), Patrick Butler Monterde (Microsoft), Shy Cohen, James Conard, Brian Davis (Longscale), Aashish Dhamdhere (Windows Azure, Microsoft), Andreas Erben (DAENET), Giles Frith , Eric L. Golpe (Microsoft), Johnny Halife (Southworks), Alex Homer, Simon Ince, Joshy Joseph, Andrew Kimball, Milinda Kotelawele (Longscale), Mark Kottke (Microsoft), Chris Lowndes (Avanade), Dianne O’Brien (Windows Azure, Microsoft), Steffen Vorein (Avanade), Michael Wood (Strategic Data Systems).