Modern computing frameworks and technologies such as the Microsoft .NET Framework, ASP.NET, Windows Communication Foundation, and Windows Identity Framework make building enterprise applications much easier than ever before. In addition, the opportunity to build applications that you deploy to the cloud using the Windows Azure™ technology platform can reduce up-front infrastructure costs, and reduce ongoing management and maintenance requirements.
Most applications today are not simple; they may consist of many separate features that are implemented as services, components, third-party plug-ins, and other systems or resources. Integrating these items when all of the components are hosted locally in your datacenter is not a trivial task, and it can become even more of a challenge when you move your applications to a cloud-based environment.
For example, a typical application may use web and worker roles running in Windows Azure, store its data in a SQL Azure™ technology database, and connect to third-party services that perform tasks such as authenticating users or delivering goods to customers. However, it is not uncommon for an application to also make use of services exposed by partner organizations, or services and components that reside inside the corporate network which, for a variety of reasons, cannot be migrated to the cloud.
Applications such as this are often referred to as hybrid applications. The issues you encounter when building them, or when migrating parts of existing on-premises applications to the cloud, prompt questions such as "How can I integrate the various parts across network boundaries and domains so that all of the parts can work together to implement the complete application?" and "How do I maximize performance and availability when some parts of the application are located in the cloud?"
This guide focuses on the common issues you will encounter when building applications that run partly in the cloud and partly on-premises, or when you decide to migrate some or all elements of an existing on-premises application to the cloud. It focuses on using Windows Azure as the host environment, and shows how you can take advantage of the many features of this platform, together with SQL Azure, to simplify and speed the development of these kinds of applications.
Windows Azure provides a set of infrastructure services that can help you to build hybrid applications. These services, such as Service Bus Security, Messaging, Caching, Traffic Manager, and Azure Connect, are the main topics of this guide. The guide demonstrates scenarios where these services are useful, and shows how you can apply them in your own applications.
This guide is based on the experiences of a fictitious corporation named Trey Research who evolved their existing on-premises application to take advantage of Windows Azure. The guide does not cover the individual migration tasks, but instead focuses on the way that Trey Research utilizes the services exposed by Windows Azure and SQL Azure to manage interoperability, process control, performance, management, data synchronization, and security.
Who This Book Is For
This book is the third volume in a series on Windows Azure. Volume 1, Moving Applications to the Cloud on Windows Azure, provides an introduction to Windows Azure, discusses the cost model and application life cycle management for cloud-based applications, and describes how to migrate an existing ASP.NET application to the cloud. Volume 2, Developing Applications for the Cloud on Windows Azure, discusses the design considerations and implementation details of applications that are designed from the beginning to run in the cloud. It also extends many of the areas covered in Volume 1 to provide information about more advanced techniques that you can apply in Windows Azure applications.
This third volume in the series demonstrates how you can use the powerful infrastructure services that are part of Windows Azure to simplify development; integrate the component parts of a hybrid application across the cloud, on-premises, and third-party boundaries; and maximize security, performance scalability, and availability.
This guide is intended for architects, developers, and information technology (IT) professionals who design, build, or operate applications and services that run on or interact with the cloud. Although applications do not need to be based on the Microsoft® Windows® operating system to operate in Windows Azure, this book is written for people who work with Windows-based systems. You should be familiar with the Microsoft .NET Framework, the Microsoft Visual Studio® development system, ASP.NET MVC, and the Microsoft Visual C#® development language.
Why This Book Is Pertinent Now
Software designers, developers, project managers, and administrators are increasingly recognizing the benefits of locating IT services in the cloud to reduce infrastructure and ongoing data center runtime costs, maximize availability, simplify management, and take advantage of a predictable pricing model. However, it is common for an application to contain some components or features that cannot be located in the cloud, such as third-party services or sensitive data that must be maintained onsite under specialist control.
Applications such as this require additional design and development effort to manage the complexities of communication and integration between components and services. To prevent these complexities from impeding moving applications to the cloud, Windows Azure is adding a range of framework services that help to integrate the cloud and on-premises application components and services. This guide explains how these services can be applied to typical scenarios, and how to use them in applications you are building or migrating right now.
How This Book Is Structured
This is the road map of the guide.
Chapter 1, "The Trey Research Scenario" provides an introduction to Trey Research and its plan for evolving the on-premises Orders application into a hybrid application. It also contains overviews of the architecture and operation of the original on-premises application and the completed hybrid implementation to provide you with context for the remainder of the guide.
Chapter 2, "Deploying the Orders Application and Data in the Cloud" discusses the techniques and technologies Trey Research considered for deploying the application and the data it uses to the cloud, how Trey Research decided which data should remain on-premises, and the deployment architecture that Trey Research decided would best suite its requirements. The chapter also explores technologies for synchronizing the data across the on-premises and cloud boundary, and how business intelligence reporting could still be maintained.
Chapter 3, "Authenticating Users in the Orders Application" describes the technologies and architectures that Trey Research examined for evolving the on-premises application from ASP.NET Forms authentication to use claims-based authentication when deployed as a hybrid application.
Chapter 4, "Implementing Reliable Messaging and Communications with the Cloud" describes the technologies that Trey Research investigated for sending messages across the on-premises and cloud boundary, and the solutions it chose. This includes the architecture and implementation for sending messages to partners in a reliable way, as well as to on-premises services.
Chapter 5, "Processing Orders in the Trey Research Solution" describes the business logic that Trey Research requires to securely and reliably process customers' orders placed by using the Orders website. This logic includes directing messages to the appropriate partner or service, receiving acknowledgements, and retrying operations that may fail due to transient network conditions.
Chapter 6, "Maximizing Scalability, Availability, and Performance in the Orders Application" describes how Trey Research explored techniques for maximizing the performance of the Orders application by autoscaling instances of the web and worker roles in the application, deploying the application in multiple datacenters, and improving data access performance through caching.
Chapter 7, "Monitoring and Managing the Orders Application" describes the techniques that Trey Research examined and chose for monitoring and managing the Orders application. These techniques include capturing diagnostic information, setting up and configuring the Windows Azure services, and remotely managing the application configuration and operation.
While the main chapters of this guide concentrate on Trey Research's design process and the choices it made, the "Hybrid Challenge Scenarios" appendices focus on a more generalized series of scenarios typically encountered when designing and building hybrid applications. Each appendix addresses one specific area of challenges and requirements for hybrid applications described in Chapter 1, "The Trey Research Scenario," going beyond those considered by the designers at Trey Research for the Orders application. In addition to the scenarios, the appendices provide more specific guidance on the technologies available for tackling each challenge. The appendices included in this guide are:
- Appendix A - Replicating, Distributing, and Synchronizing Data
- Appendix B - Authenticating Users and Authorizing Requests
- Appendix C - Implementing Cross-Boundary Communication
- Appendix D - Implementing Business Logic and Message Routing across Boundaries
- Appendix E - Maximizing Scalability, Availability, and Performance
- Appendix F - Monitoring and Managing Hybrid Applications
|The information in this guide about Windows Azure, SQL Azure, and the services they expose is up to date at the time of writing. However, Windows Azure is constantly evolving and new capabilities and features are frequently added. For the latest information about Windows Azure, see "What's New in Windows Azure" and the Windows Azure home page at http://www.microsoft.com/windowsazure/.|
What You Need to Use the Code
These are the system requirements for running the scenarios:
- Microsoft Windows 7 with Service Pack 1 or later (32 bit or 64 bit edition), or Windows Server 2008 R2 with Service Pack 1 or later
- Microsoft Internet Information Server (IIS) 7.0
- Microsoft .NET Framework version 4.0
- Microsoft ASP.NET MVC Framework version 3
- Microsoft Visual Studio 2010 Ultimate, Premium, or Professional edition with Service Pack 1 installed
- Windows Azure SDK for .NET (includes the Visual Studio Tools for Windows Azure)
- Microsoft SQL Server or SQL Server Express 2008
- Windows Identity Foundation
- Microsoft Enterprise Library 5.0 (required assemblies are included in the source code download)
- Windows Azure Cmdlets (install the Windows Azure Cmdlets as a Windows PowerShell® snap-in, this is required for scripts that use the Azure Management API)
- Sample database (scripts are included in the Database folder of the source code)
|You can download the sample code from http://wag.codeplex.com/releases/. The sample code contains a dependency checker utility you can use to check for prerequisites and install any that are required. The dependency checker will also install the sample databases.|
This book uses a sample application that illustrates integrating applications with the cloud. A panel of experts comments on the development efforts. The panel includes a cloud specialist, a software architect, a software developer, and an IT professional. The delivery of the sample application can be considered from each of these points of view. The following table lists these experts.
Bharath is a cloud specialist. He checks that a cloud-based solution will work for a company and provide tangible benefits. He is a cautious person, for good reasons.
"Implementing a single-tenant application for the cloud is easy. Realizing the benefits that a cloud-based solution can offer to a multi-tenant applications is not always so straight-forward".
Jana is a software architect. She plans the overall structure of an application. Her perspective is both practical and strategic. In other words, she considers the technical approaches that are needed today and the direction a company needs to consider for the future.
"It's not easy to balance the needs of the company, the users, the IT organization, the developers, and the technical platforms we rely on."
Markus is a senior software developer. He is analytical, detail-oriented, and methodical. He's focused on the task at hand, which is building a great cloud-based application. He knows that he's the person who's ultimately responsible for the code.
"For the most part, a lot of what we know about software development can be applied to the cloud. But, there are always special considerations that are very important."
Poe is an IT professional who's an expert in deploying and running applications in the cloud. Poe has a keen interest in practical solutions; after all, he's the one who gets paged at 03:00 when there's a problem.
"Running applications in the cloud that are accessed by thousands of users involves some big challenges. I want to make sure our cloud apps perform well, are reliable, and are secure. The reputation of Trey Research depends on how users perceive the applications running in the cloud."
If you have a particular area of interest, look for notes provided by the specialists whose interests align with yours.
Where to Go for More Information
There are a number of resources listed in text throughout the book. These resources will provide additional background, bring you up to speed on various technologies, and so forth. For your convenience, there is a bibliography online that contains all the links so that these resources are just a click away.
You can find the bibliography at: http://msdn.microsoft.com/en-us/library/hh871440.aspx.
Last built: June 4, 2012