Having inherited a large number of Dev, Test, UAT and Integration environments I notice that a very large number of deployments are left idle during evenings and weekends. We have done what we can to educate owners of those environments to delete when they are done.
Having done some maths around the subject I believe we can save about 30% of our compute costs by scaling down all services to 1 instance between for the 14 hours a day + Weekends that they are largely unused.
Does this tooling already exist? if so it available in a SaaS package?
- ylastc - is capable of doing this for AWS EC2.
- AzureWatch - is capable of doing this, al-be-it clunkly.
- Windows Azure PowerShell - is capable of doing this quite neatly with a few lines, my preference however would be a third party service.
There are several add-ons in the Azure Store now (integrated into the Portal - just hit the big Plus sign at the bottom and choose Store), including MetricsHub (recently acquired by Microsoft), NewRelic, and AppDynamics. MetricsHub has the ability to scale out/in based on rules. With web/worker, it feeds off diagnostics data and provides auto-scaling. From the web site:
Microsoft have just launched this functionality in preview as part of Azure. If you look in the management portal there is now a heading labelled Scale which allows you to auto-scale up and down currently based on CPU or Queue usage which may be a start for you.
The ability to do this based on time of day is said to be coming soon.