Today, we shipped the Beta for the first new block in the Enterprise Library Windows Azure Integration Pack, called the Windows Azure Autoscaling Block.
This block allows you to use your Windows Azure instances more effectively by automatically scaling or changing your applications configuration as the load changes.
By providing a set of configurable rules, you can closely control how your application should handle varying levels of load. For example, you can have the autoscaling block monitor several metrics, such as the CPU level and memory usage of your web roles, or the number of messages in a Queue and increase or decrease the number of instances when certain threshold values are exceeded.
There are basically 2 types of rules you can configure:
- Constraint rules, which set explicit boundaries on the number of instances. These rules guard your SLA (by ensuring there is a minimum number of instances) and your wallet (to ensure there will never be more than the maximum number of instances).
- Reactive rules, which monitor a set of metrics (such as performance counters) and take actions when threshold values are exceeded.
The autoscaling block supports a new concept, called Application Throttling. This feature allows you to switch to define several modes of operation in your application and switch between these modes as the load of your application varies. For example, you can create a rich and a lightweight version of your application. When the load increases beyond certain threshold values, you can automatically switch to the lightweight version of your application.
The Enterprise Library Windows Azure Integration Pack Beta also ships with a reference implementation, called Tailspin Surveys. This example application has been used by other patterns & practices projects in the past and has now been adapted do demonstrate features from the Enterprise Library Azure Integration Pack.
The Tailspin Surveys reference implementation contains:
- A sample rule editor, which can be used to edit the rules configuration file.
- A sample service information editor, which can be used to edit the service information file that describes your windows azure environment.
- Monitoring through several graphs, that allows you to visualize the information gathered by the autoscaling block. For example, you can see the actual, minimum and maximum number of instances as it changes over time. You will also see the scaling actions and be able to retrieve detailed log messages explaining which rules triggered the scaling actions.
- A sample Log viewer, that provides a more readable way to view the log messages generated by the autoscaling block.
- A sample load generator, which simulates load on the application and easily allows you to see the autoscaling block in action.