ld Forewarned is forearmed: Whether you're a self-employed consultant or a cloud developer of in-house systems, clients and employers expect Windows Azure professionals to implement best practices throughout the entire development and deployment stages as well as the scale-up application lifecycle.
Though Windows Azure began life as a Windows Platform as a Cloud Service (WPaaCS), scaling up conventional .NET apps by deploying them to Microsoft's cloud environment isn't simply uploading and running their executable files. Developers must anticipate the architecture and code changes required for migrating from the traditional client/server model on the corporate LAN to mobile devices and PCs connected by the Internet to Web apps and cloud data stores.
Additional Azure resources for developers
System resilience resources:
Best Practices for the Design of Large-Scale Services on Windows Azure Cloud Services
Availability and durability resources:
Disaster Recovery and High Availability for Windows Azure Applications
Resources for optimal coding:
Best Practices for Performance in Windows Azure Applications
Here are five best practices, along with links to Microsoft's own resources, for developing reliable, secure and efficient applications running on Windows Azure in cloud-only and hybrid IT configurations:
1. Provide system resilience. Decompose applications into cooperative collections of redundant micro-services, each of which delivers the simplest feature or function possible, to minimize the effects of inevitable service outages. Automate workarounds for failed features that aren't critical to business processes.
2. Guarantee app availability and data durability in the event of disaster. Prepare the IT environment for disasters, whether natural or man-made, by geo-replicating micro-services and their data sources across data centers in geographically distant locations. Windows Azure replicates blob and table data between two data center locations within the same region at no additional cost. Examples are North Central and South Central United States, North and West Europe, or East and Southeast Asia.
3. Adopt optimal coding practices for cloud-based apps. To ensure optimal practices, use the latest Windows Azure Training Kit (WATK). Microsoft's WATK helps developers improve user experience (UX) and follow the company's best practices for coding cloud-based apps. Open the hands-on labs' source code in Visual Studio and deploy the samples to your Windows Azure development instances. Then, run the cloud applications to evaluate the UX -- especially with mobile devices. The August 2013 WATK includes new labs for autoscaling applications on Windows Azure Web Sites, creating Windows Azure Mobile Services and using Active Directory for authentication.
4. Secure your Windows Azure apps and data. Management will require verification of Windows Azure's conformance to industry standards -- such as ISO/IEC 27001:2005 Audit and Certification, SOC 1 and SOC 2 SSAE 16/ISAE 3402 Attestations, and the Cloud Security Alliance Cloud Controls Matrix -- as described in the Windows Azure Trust Center's compliance document. The Trust Center's Windows Azure HIPAA Implementation Guidance also describes how to conform to HIPAA and the HITECH act requirements for securing personal health information (PHI) against data breaches. A HIPAA Business Associates Agreement (BAA) for storing and/or processing PHI in Windows Azure requires customers to have a Volume Licensing/Enterprise Agreement or (EA) or Windows Azure -only EA enrollment with Microsoft in place. Windows Azure EA pricing and terms will become considerably less onerous when enterprise discounts and payment in arrears for unplanned resource usage growth go into effect on November 1.
5. Take advantage of free storage and service management tools. These tools reduce or eliminate the need to write custom .NET code to add, move and delete content in Windows Azure blob storage and let you inspect the state of messages in Service Bus queues without creating a dedicated app. These tools are available from CodePlex, such as the Windows Azure Blob Transfer Utility, Windows Azure SQL Database and Storage Backup Role, Windows Azure Storage Explorer (see Figure 1) and the recently updated Service Bus Explorer (see Figure 2) for Windows Azure and Windows Server.
While developers should follow the best practices listed here, it's also helpful to keep copies on hand of the following book-length resources from Microsoft's patterns and practices group for reference when developing in a Windows Azure cloud:
- Moving Applications to the Cloud, 3rd Edition
- Developing Multi-tenant Applications for the Cloud, 3rd Edition
- Building Hybrid Applications in the Cloud on Windows Azure
About the author:
Roger Jennings is a data-oriented .NET developer and writer, a Windows Azure MVP, principal consultant at OakLeaf Systems and curator of the OakLeaf SystemsInc. and Android MiniPCs and TVBoxes blogs. He's also the author of more than 30 books on the Windows Azure platform, Microsoft operating systems (Windows NT and 2000 Server), databases (SQL Azure, SQL Server and Access), .NET data access, Web services and InfoPath 2003. More than 1.25 million English-language copies of his books are in print, and they have been translated into more than 20 languages.
This was first published in October 2013