Synopses & Reviews
How can a company's applications be scalable and have high availability?
To achieve this, along with developing the applications, you must also have an infrastructure that can support them. For example, 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. Life becomes even more complicated (and expensive) when you start to consider issues such as network latency and security boundaries.
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. If the cloud has data centers in different geographical areas, you can move your content closer to the people who are using it most. If an application is heavily used in Asia, have an instance running in a data center located there. This kind of flexibility may not be available to you if you have to own all the hardware.
Another advantage to the cloud is that it's a pay as you go proposition. If you don't need it, you don't have to pay for it. When demand is high, you can scale up, and when demand is low, you can scale back. 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. The Windows Azure Architecture Guide shows you how to do this.
This book is the second volume in a planned series about Windows Azure technology platform. Volume 1, Moving Applications to the Cloud on the Windows Azure Platform, 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. This book demonstrates how you can create from scratch a multi-tenant, Software as a Service (SaaS) application to run in the cloud by using the latest versions of the Windows Azure tools and the latest features of the Windows Azure platform. The book is intended for any architect, developer, or information technology (IT) professional who designs, builds, or operates 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 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® development system, ASP.NET MVC, and Microsoft Visual C#® development tool.
About the Author
Eugenio Pace is a Senior Program Manager in the patterns & practices group at Microsoft®. He is responsible for developing guidance for migrating and building application for the Windows Azure® platform and for Windows® Phone 7. Before that he worked on architecture guidance for claims based identity and identity federation. You can find his blog here: http://blogs.msdn.com/eugeniop and on twitter @eugenio_Pace.
Dominic Betts is a principal technologist at Content Master, part of CM Group Ltd, a technical authoring and consulting company. An expert on developing applications with the Microsoft .NET Framework and Windows Azure™, Dominic has produced numerous training courses, white papers, and other technical material on .NET, Windows Azure, and Microsoft® BizTalk®.
Scott Densmore works as a Software Engineer at Microsoft®. His primary interests are cloud computing and mobile device computing. You can find him at http://scottdensmore.typepad.com/ and on Twitter @scottdensmore.
Ryan Dunn is the Windows Azure™ Technical Evangelist and produces the popular Cloud Cover show on Channel 9. Prior to joining Microsoft®, Ryan was an MVP for ASP.NET and Directory Services. You can find him at http://dunnry.com or on Twitter @dunnry.
Masashi Narumoto works on Microsoft®'s patterns & practices team who delivers applied engineering guidance to Microsoft's customers. His primary interests are in cloud computing and mobile applications. You can find him at http://blogs.msdn.com/masashi_narumoto or on Twitter @dragon119.
Matias Woloski is a Principal Architect at Southworks who specializes on identity and cloud computing. He has more than 10 years experience designing and developing software and helping companies to take advantage of emergent technologies. He is an advocate for flawless and pragamatic solutions focused on tangible deliverables with high return of investment. Matias works closely with various groups within Microsoft to drive the early adoption of emerging elements of the Microsoft platform. Matias is also a frequent speaker at industry events and academic forums in United States, China, Argentina, Mexico and Chile. During 2009 and 2010, he wrote three books in joint with other industry experts about Claims Based Identity and Access Control and Cloud Computing. His blog located at http://blogs.southworks.net/mwoloski, focuses on identity, cloud computing and architecture.
Table of Contents
Foreword; Preface; Who This Book Is For; Why This Book Is Pertinent Now; How This Book Is Structured; What You Need to Use the Code; Whos Who; Chapter 1: The Tailspin Scenario; 1.1 The Tailspin Company; 1.2 The Surveys Application Architecture; Chapter 2: Hosting a Multi-Tenant Application on Windows Azure; 2.1 Single-Tenant vs. Multi-Tenant; 2.2 Multi-Tenancy Architecture in Azure; 2.3 Selecting a Single-Tenant or Multi-Tenant Architecture; Chapter 3: Accessing the Surveys Application; 3.1 DNS Names, Certificates, and SSL in the Surveys Application; 3.2 Geo-Location; 3.3 Authentication and Authorization; 3.4 Content Delivery Network; 3.5 More Information; Chapter 4: Building a Scalable, Multi-Tenant Application for Windows Azure; 4.1 Partitioning the Application; 4.2 On-Boarding for Trials and New Customers; 4.3 Billing Customers; 4.4 Customizing the User Interface; 4.5 Scaling Applications by Using Worker Roles; 4.6 Scaling the Surveys Application; 4.7 References and Resources; Chapter 5: Working with Data in the Surveys Application; 5.1 A Data Model for a Multi-Tenant Application; 5.2 Testing and Windows Azure Storage; 5.3 Saving Survey Response Data; 5.4 Displaying Data; 5.5 Using SQL Azure; 5.6 References and Resources; Updating a Windows Azure Service; Options for Updating a Windows Azure Service; Debugging and Troubleshooting Windows Azure Applications; Dependencies for Azure Applications and Projects; Debugging Azure Applications Locally During Development; Common Setup and Deployment Errors with Windows Azure; Using Intellitrace with Applications Deployed to Windows Azure; Using Windows Azure Diagnostics; Resolving Permission Issues in Partial Trust Mode; More Information;