So, at last, we're done. After fighting with multiple new versions of the Windows Azure SDK, updated features in the management portal, changes to the functionality of services, and the regular changes to the names of various parts of Windows Azure, we've shipped the third editions of two of our Windows Azure guides and the associated Hands-on Labs.
The first, "Moving Applications to the Cloud", is aimed at those whose Field is Brown. It focuses on getting your existing on-premises applications running in Windows Azure using Virtual Machines, Windows Azure Web Sites, Cloud Services, and many other features of Windows Azure.
Through a series of migration stages, our fictional company named Adatum moves their aExpense application to Windows Azure. The first step is to use Windows Azure Virtual Machines, including a VM running SQL Server and another running Active Directory. This approach minimizes the need to change the application code; it simply runs exactly as it did when on-premises.
Next, Adatum experiments with Windows Azure Web Sites before refactoring the application to run as a Cloud Service. Along the way Adatum switches over to using federated authentication with Windows Azure Access Control, and using Windows Azure SQL Database instead of a hosted SQL Server.
Adatum then adds background processing with a separate Cloud Services worker role, before moving the data to Windows Azure table storage. Along the way Adatum calculates running costs, adds features to make the application scalable, and takes advantage of other Windows Azure features such as Caching.
OK, so most companies won’t go through the multiple migration steps that Adatum carried out, but the aim of the guide is to demonstrate as many of the available options as possible. As well as the planning, design, decision making, and development processes the guide also discusses application lifecycle management issues such as testing, monitoring, and maintenance.
The second guide, "Developing Multi-tenant Applications for the Cloud", is aimed at Greenfield scenarios. While much of the content is devoted to understanding the concepts of multi-tenant application design and development, the fundamentals are equally applicable to all kinds of applications designed from scratch to run in the cloud.
This guide is centered round a fictional independent software vendor (ISV) named Tailspin, and its design and implementation of the multi-tenant Surveys application. It discusses hosting options, application partitioning, and data storage options for multi-tenancy; but also contains a wealth of information about designing Windows Azure applications so as to maximize availability, scalability, elasticity, and performance. In addition, the guide explores different security and authentication options, how you can implement features directly related to ISVs, and techniques for managing the application.
One of the fundamental features for maximizing performance is to appreciate and manage the throughput limitations imposed by Windows Azure services and the Internet itself, and this guide will help you to understand how you can work round these limitations. For example, it explores how Tailspin uses multiple queues, the delayed write pattern, storage partitioning, and optimistic concurrency in order to maximize performance.
Both of the guides have had a full makeover from the previous editions, and the addition of considerable new content, so take a look and let us know what you think. Or just tell us what color your field is...