Developing Multi-tenant Applications for the Cloud, 3rd Edition
Summary of “Developing Multi-tenant Applications for the Cloud”
How can a company create an application that has truly global reach and that can scale rapidly to meet sudden, massive spikes in demand? Historically, companies had to invest in building an infrastructure capable of supporting such an application themselves and, typically, only large companies would have the available resources to risk such an enterprise. Building and managing this kind of infrastructure is not cheap, especially because you have to plan for peak demand, which often means that much of the capacity sits idle for much of the time. The cloud has changed the rules of the game: by making the infrastructure available on a “pay as you go” basis, creating a massively scalable, global application is within the reach of both large and small companies.
Yes, by moving applications to the cloud, you're giving up some control and autonomy, but you're also going to benefit from reduced costs, increased flexibility, and scalable computation and storage. This guide shows you how to do this.
This guide is the third release of the second volume in a series about Windows Azure. It demonstrates how you can create from scratch a multitenant, Software as a Service (SaaS) application to run in the cloud by using the latest versions of the Windows Azure tools and the increasing range of capabilities of Windows Azure.
The guide 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. It 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#.
Developing Multi-tenant Applications for the Cloud on Windows Azure, 3rd Edition is available in paperback from Amazon.com
Foreword: Bill Hilf
Chapter 1, “The Tailspin Scenario”
Chapter 2, “Hosting Multi-tenant Applications on Windows Azure”
Chapter 3, “Choosing a Multi-tenant Data Architecture”
Chapter 4, “Partitioning Multi-tenant Application”
Chapter 5, “Maximizing Availability, Scalability, and Elasticity”
Chapter 6, “Securing Multi-tenant Applications”
Chapter 7, “Managing and Monitoring Multi-tenant Applications”
Chapters in the Guide
Chapter 1, “The Tailspin Scenario” introduces you to the Tailspin company and the Surveys application. It provides an architectural overview of the Surveys application; the following chapters provide more information about how Tailspin designed and implemented the Surveys application for the cloud. Reading this chapter will help you understand Tailspin's business model, its strategy for adopting the cloud platform, and some of its concerns. It will also help you to understand some of the fundamental choices Tailspin had to make when designing the application.
Chapter 2, “Hosting Multi-tenant Applications on Windows Azure” discusses the major considerations that surround architecting and building multitenant applications to run on Windows Azure. It describes the benefits of a multitenant architecture and the trade-offs that you must consider. This chapter provides a conceptual framework that helps you understand some of the topics discussed in more detail in the subsequent chapters.
Chapter 3, “Choosing a Multi-tenant Data Architecture” describes the important factors to consider when designing the data model for multitenant applications. The major factors are how you can partition data, plan for extensibility and scalability, and how you can apply your design using Windows Azure storage and a relational database. The chapter also describes how the Surveys application stores data in both Windows Azure tables and blobs, and how the developers at Tailspin designed their storage classes to be testable. The chapter also describes the role that Windows Azure SQL Database plays in the Surveys application.
Chapter 4, “Partitioning Multi-tenant Application” describes how you can partition your application code for multiple tenants. This includes how you can use Cloud Services web and worker roles, queues, and the Model View Controller pattern to best effect in a multitenant application. The chapter also discusses issues around caching and how Tailspin solved some specific problems related to implementing session state.
Chapter 5, “Maximizing Availability, Scalability, and Elasticity” describes techniques you can use to get the best performance and responsiveness for your applications, especially when they are designed to support multiple tenants. The chapter covers topics such as hosting the application in multiple geographic locations, using the Content Delivery Network (CDN) to cache content, read and write patterns using queues, paging and displaying data, and autoscaling the role instances.
Chapter 6, “Securing Multi-tenant Applications” describes authentication and authorization scenarios for multitenant applications when supporting individual subscribers and users, and trust relationships. It also examines how Tailspin implemented protection and isolation of sensitive data, and how it protects session tokens.
Chapter 7, “Managing and Monitoring Multi-tenant Applications” examines application lifecycle management (ALM) considerations in multitenant applications, how Tailspin manages and monitors the application, and how the application supports on-boarding, customization, and billing for customers.
These are the system requirements for running the samples:
- Microsoft Windows 7 with Service Pack 1, Microsoft Windows 8, Microsoft Windows Server 2008 R2 with Service Pack 1, or Microsoft Windows Server 2012 (32 bit or 64 bit editions)
- Microsoft .NET Framework version 4.0
- Microsoft Visual Studio 2010 Ultimate, Premium, or Professional edition with Service Pack 1 installed, or Visual Studio 2012 Ultimate, Premium, or Professional edition.
- Windows Azure SDK (includes the Windows Azure Tools for Visual Studio). See the Release Notes for information on the specific version required.
- Microsoft SQL Server 2012, SQL Server Express 2012, SQL Server 2008, SQL Server Express 2008. See the Release Notes for information on specific versions depending on your operating system.
- ASP.NET MVC 4 Framework
- Windows Identity Foundation. This is required for claims-based authorization.
- WebAii testing framework. This is required only if you want to run the functional tests. Place the assembly ArtOfTest.WebAii.dll in the Lib\WebAii folder of the examples.
Other components and frameworks required by the examples are installed using NuGet when you run the solutions. See the Release Notes included with the examples for instructions on installing and configuring 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.
Feedback and Support
Questions? Comments? Suggestions? To provide feedback about this guide, or to get help with any problems, please visit the Windows Azure guidance 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. This content 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 guide was produced by the following individuals:
- Program and Product Management: Masashi Narumoto (Microsoft Corporation)
- Advisor: Eugenio Pace (Microsoft Corporation)
- Subject Matter Experts: Dominic Betts (Content Master), Alex Homer (Microsoft Corporation), Trent Swanson (Full Scale 180 Inc.) and Ercenk Keresteci (Full Scale 180 Inc.)
- Development: Alejandro Jezierski (Southworks) and Mauro Krikorian (Southworks).
- Test: Hanz Zhang (Microsoft Corporation), Carlos Farre (Microsoft Corporation), and Rathi Velusamy (Infosys Ltd.)
- Documentation: Dominic Betts (Content Master), RoAnn Corbisier (Microsoft Corporation), and Alex Homer (Microsoft Corporation).
- Design and illustrations: Roberta Leibovitz and Colin Campbell (Modeled Computation LLC), Eugenio Pace (Microsoft Corporation), Ellen Forney, and Chris Burns (Linda Werner & Associates).
- Release Management: Nelly Delgado (Microsoft Corporation).
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 (Microsoft Corporation), Graham Astor (Avanade), Edward Bakker (Inter Access), Vivek Bhatnagar (Microsoft Corporation), Patrick Butler Monterde (Microsoft Corporation), Shy Cohen, James Conard (Microsoft Corporation), Brian Davis (Longscale), Aashish Dhamdhere (Windows Azure, Microsoft Corporation), Andreas Erben (DAENET), Giles Frith, Eric L. Golpe (Microsoft Corporation), Johnny Halife (Southworks), Simon Ince (Microsoft Corporation), Joshy Joseph (Microsoft Corporation), Andrew Kimball, Milinda Kotelawele (Longscale), Mark Kottke (Microsoft Corporation), Chris Lowndes (Avanade), Dianne O'Brien (Windows Azure, Microsoft Corporation), Steffen Vorein (Avanade), Michael Wood (Strategic Data Systems), Carlos Farre (Microsoft Corporation), Trent Swanson (Full Scale 180 Inc.), Ercenk Keresteci (Full Scale 180 Inc.), Jane Sinyagina (Microsoft Corporation), Hatay Tuna (Microsoft Corporation), and everyone who participated in our CodePlex community site.
- Moving Applications to the Cloud on Windows Azure
- Building Hybrid Applications in the Cloud on Windows Azure
- A Guide to Claims-based Identity and Access Control, 2nd Edition
- Developing an Advanced Windows Phone 7.5 App that Connects to the Cloud
- Enterprise Library 5.0 Integration Pack for Windows Azure