By Mark Aggar
Energy use in the IT sector is growing faster than in any other industry as society becomes ever more dependent on the computational and storage capabilities provided by data centers. Unfortunately, a combination of inefficient equipment, outdated operating practices, and lack of incentives (a topic I wrote about in my recent guest posting on Corporate Eco Forum’s EcoInnovator blog) means that much of the energy used in traditional data centers is wasted.
As I wrote in “The IT Energy Efficiency Imperative”, most IT energy efficiency efforts have focused on physical infrastructure—deploying more energy-efficient computer hardware and cooling systems, using operating system power management features, and reducing the number of servers in data centers through hardware virtualization.
But a significant amount of this wasted energy stems from how applications are designed and operated. Most applications are provisioned with far more IT resources than they need, as a buffer to ensure acceptable performance and to protect against hardware failure. Most often, the actual needs of the application are simply never measured, analyzed or reviewed.
Once the application is deployed with more resources than it typically needs, there is very little incentive for an application developer to instrument their application to make capacity planning easier. And when users start complaining that the application is performing slowly, it’s often easier (and cheaper) to simply assign more resources to the application. Very rarely are these resources ever removed, even after demand for the application subsides.
Cloud computing has the potential to break this dynamic of over-provisioning applications. Because cloud platforms like Windows Azure charge for resource use in small increments (e.g. compute-hours) on a pay-as-you-go basis, developers can now have a have a direct and controllable impact on IT costs and associated resource use.
Applications that are designed to dynamically grow and shrink their resource use in response to actual and anticipated demand are not only less expensive to operate, but are significantly more efficient with their use of IT resources than traditional applications. Developers can also reduce hosting costs by scheduling background tasks to run during less busy periods when the minimum amount of resources are assigned to the application.
Until recently, developers on Windows Azure had to develop this capability on their own. With the release of the Enterprise Library 5.0 Integration Pack for Windows Azure (EntLib 5.0), developers can now easily build robust and resource efficient applications that can be intelligently scaled and throttled to save money and reduce environmental impact.
The Windows Azure Auto Scaling Block, otherwise known as “WASABi” is one of two major components in the Integration pack. WASABi (also available as a Nuget package) helps developers improve responsiveness and control Azure costs by automatically scaling the number of web and worker roles in Windows Azure through dynamic provisioning and decommissioning of role instances across multiple hosted services. WASABi also provides mechanisms to help control resource use without scaling role instances through application throttling. Developers can use WASABi to intelligently schedule or defer background processing to keep the number or of role instances within certain boundaries below a certain threshold and take advantage of idle periods.
One of the major advantages of Wasabi is its extensibility which makes your solutions much more flexible. Staying true to the design principles of other application blocks, Wasabi provides a mechanism for plugging-in your own custom metrics and calling custom actions. With those you can design a rule set that takes into account your business scenarios and not just standard performance counters available through the Windows Azure Diagnostics.
The optimizing stabilizer of Wasabi will ensure that you do not end up scaling too quickly. It can also make sure scale actions correspond to the most optimal compute hour pricing charges.
For applications that expect significant usage beyond more than a few instances, WASABi will help developers save money on hosting costs while improving the “green credentials” of their application. It will also help your application meet target SLAs.
The other major component is the Transient Fault Handling Application Block (codenamed “Topaz”) that helps developers make their applications more robust by providing the logic for detecting and handling transient fault conditions for a number of common cloud-based services.
More than ever before, developers have an important role to play in controlling IT costs and improving IT energy efficiency, without sacrificing reliability. The Enterprise Library Integration Pack for Windows Azure can assist them in rapidly building Windows Azure-based applications that are reliable, resource efficient and cost effective.
I highly recommend both the Integration Pack for Windows Azure and this developer’s guide to architects, software developers, administrators and product owners who design new or migrate existing applications to Windows Azure. The practical advice contained in this book will help make your Windows Azure applications highly scalable, robust and a little greener, just like WASABi’s namesake.