The Tailspin Scenario
This chapter introduces a fictitious company named Tailspin. It describes Tailspin's plans to launch a new, online service named Surveys that will enable other companies or individuals to conduct their own online surveys. The chapter also describes why Tailspin wants to host its survey application on the Windows Azure™ technology platform. As with any company considering this process, there are many issues to consider and challenges to be met, particularly because this is the first time Tailspin is using the cloud. The chapters that follow this one show, step-by-step, how Tailspin architected and built its survey application to run on Windows Azure.
The Tailspin Company
Tailspin is a startup ISV company of approximately 20 employees that specializes in developing solutions using Microsoft® technologies. The developers at Tailspin are knowledgeable about various Microsoft products and technologies, including the .NET Framework, ASP.NET MVC, SQL Server®, and Microsoft Visual Studio® development system. These developers are aware of Windows Azure but have not yet developed any complete applications for the platform.
The Surveys application is the first of several innovative online services that Tailspin wants to take to market. As a startup, Tailspin wants to develop and launch these services with a minimal investment in hardware and IT personnel. Tailspin hopes that some of these services will grow rapidly, and the company wants to have the ability to respond quickly to increasing demand. Similarly, it fully expects some of these services to fail, and it does not want to be left with redundant hardware on its hands.
Tailspin is an innovative and agile organization, well placed to exploit new technologies and the business opportunities offered by the cloud. As a startup, Tailspin is willing to take risks and use new technologies when it implements applications. Tailspin's plan is to embrace the cloud and gain a competitive advantage as an early adopter. It hopes to rapidly gain some experience, and then quickly expand on what it has learned. This strategy can be described as "try, fail fast, learn, and then try again." Tailspin has decided to start with the Surveys application as its first cloud-based service offering.
The Surveys Application
The Surveys application enables Tailspin's customers to design a survey, publish the survey, and collect the results of the survey for analysis. A survey is a collection of questions, each of which can be one of several types such as multiple-choice, numeric range, or free text. Customers begin by creating a subscription with the Surveys service, which they use to manage their surveys and to apply branding by using styles and logo images. Customers can also select a geographic region for their account, so that they can host their surveys as close as possible to the survey audience. The Surveys application allows users to try out the application for free, and to sign up for one of several different packages that offer different collections of services for a monthly fee.
Figure 1 illustrates the Surveys application and highlights the three different groups of users who interact with application.
Customers who have subscribed to the Surveys service (or who are using a free trial) access the Subscribers website that enables them to design their own surveys, apply branding and customization, and collect and analyze the survey results. Depending on the package they select, they have access to different levels of functionality within the Surveys application. Tailspin expects its customers to be of various sizes and from all over the world, and customers can select a geographic region for their account and surveys.
|In the world of Software as a Service (SaaS), subscribers are commonly known as "Tenants." We commonly refer to applications like Tailspin Surveys as "multi-tenant" applications.|
Tailspin wants to design the service in such a way that most of the administrative and configuration tasks are "self-service" and are performed by the subscriber with minimal intervention by Tailspin staff.
The Public website enables the people participating in the survey to complete their responses to the survey questions. The survey creator will inform their survey audience of the URL to visit to complete the survey.
The Tailspin website enables staff at Tailspin to manage the application and manage the subscriber accounts. All three websites interact with the core services that comprise the Surveys application and provide access to the application's data storage.
Tailspin's Goals and Concerns
Tailspin faces several challenges, both as an organization and with the Surveys application in particular. First, customers might want to create surveys associated with a product launch, a marketing campaign, or the surveys might be seasonal, perhaps associated with a holiday period. Often, customers who use the survey application will want to set up these surveys with a very short lead-time. Surveys will usually run for a fixed, short period of time but may have a large number of respondents. This means that usage of the Surveys application will tend to spike, and Tailspin will have very little warning of when these spikes will occur. Tailspin wants to be able to offer the Surveys application to customers around the world, and because of the nature of the Surveys application with sudden spikes in demand, it wants to be able to quickly expand or contract its infrastructure in different geographical locations. It doesn't want to purchase and manage its own hardware or to maintain sufficient capacity to meet peak demand. It also doesn't want to sign long-term contracts with hosting providers for capacity that it will only use for part of the time.
|Resource elasticity and geo-distribution are key properties of the Windows Azure platform|
Tailspin wants to be able to maintain its competitive advantage by rapidly rolling out new features to existing services or to gain competitive advantage by being first to market with new products and services.
With the Surveys application, Tailspin wants to offer its customers a reliable, customizable, and flexible service for creating and conducting online surveys. It must give its customers the ability to create surveys using a range of question types, and the ability to brand the surveys using corporate logos and color schemes.
Tailspin wants to be able to offer different packages (at different prices) to customers, based on a customer's specific requirements. Tailspin wants to offer its larger customers the ability to integrate the Surveys application into the customer's own infrastructure. For example, integration with the customer's own identity infrastructure could provide single sign-on (SSO) or enable multiple users to manage surveys or access billing information. Integration with the customer's own Business Intelligence (BI) systems could provide for a more sophisticated analysis of survey results. For small customers who don't need, or can't use, the sophisticated integration features, a basic package might include an authentication system. The range of available packages should also include a free trial to enable customers to try the Surveys application before they purchase it.
The subscriber and public websites also have different scalability requirements. It is likely that thousands of users might complete a survey, but only a handful of users from each subscriber will edit existing surveys or create new surveys. Tailspin wants to optimize the resources for each of these scenarios.
The Tailspin business model is to charge subscribers a monthly fee for a service such as the Surveys application and, because of the global market they are operating in, Tailspin wants its prices to be competitive. Tailspin must then pay the actual costs of running the application, so in order to maintain their profit margin Tailspin must tightly control the running costs of the services they offer to their customers.
|In this scenario, Tailspin's customers (the subscribers) are not Windows Azure customers. Subscribers pay Tailspin, who in turn pays Microsoft for their use of Windows Azure platform components.|
Tailspin wants to ensure that customer's data is kept safe. For example, a customer's data must be private to that customer, there must be multiple physical copies of the survey data, and customers should not be able to lose data by accidently deleting a survey. In addition, all existing survey data must be preserved whenever Tailspin updates the application.
Finally, Tailspin would like to be able to leverage the existing skills of its developers and minimize any retraining necessary to build the Surveys application.
The Surveys Application Architecture
To achieve the goals of the Surveys application, Tailspin decided to implement the application as a cloud-based service using the Windows Azure platform. Figure 2 shows a high-level view of this architecture.
The architecture of the Surveys Application is straightforward and one that many other Windows Azure applications use. The core of the application uses Windows Azure web roles, worker roles, and storage. Figure 2 shows the three groups of users who access the application: the application owner, the public, and subscribers to the Surveys service (in this example, Adatum and Fabrikam). It also highlights how the application uses SQL Azure™ technology platform to provide a mechanism for subscribers to dump their survey results into a relational database to analyze the results in detail. This guide discusses the design and implementation in detail and describes the various web and worker roles that comprise the Surveys application.
Some of the specific issues that the guide covers include how Tailspin implemented the Surveys application as a multi-tenant application in Windows Azure and how the developers designed the application to be testable. The guide describes how Tailspin handles the integration of the application's authentication mechanism with a customer's own security infrastructure by using a federated identity with multiple partners model. The guide also covers the reasoning behind the decision to use a hybrid data model that uses both Windows Azure Storage and SQL Azure. Other topics covered include how the application uses caching to ensure the responsiveness of the Public website for survey respondents, how the application automates the on-boarding and provisioning process, how the application leverages the Windows Azure geographic location feature, and the customer-billing model adopted by Tailspin for the Surveys application.
|Tailspin can use the Content Delivery Network feature of Windows Azure to provide caching services.|
Tailspin will build the application using the latest available technologies: Visual Studio 2010, ASP.NET MVC 2.0, and .NET Framework 4.