Instance auto-scaling: scheduled
As a developer or app administrator, I want a provisioning mechanism to schedule the number of instances of each role for specific time periods. These instances should be spun off or torn down without user's intervention. [Please comment on the granularity of timing - per hour, per day, the day of the week etc.]
Released in WASABi BETA
http://bit.ly/phMZj9
-
krishna kishore commented
1) Wouldnt it be wonderful if I could have zero instances as part of auto-scaling too? :) And I wont pay for what I dont use (Say, an enterprise application, outside office hours)
2) Date-time based is merely 'scheduled' scaling and I cant agree it can be termed 'auto-scaling'. Auto-scaling should be based on health parameters only (load-based)
3) Auto-scaling should be accompanied by email / SMS alerts to the account owner & admin. A DDOS attack shouldnt burn up my credit card
4) Scaling Rules should be set by Application Owner and not Dev. They . I cant be part of deployment package - should be captured through Azure Portal (or equivalent)
5) Scheduled Scaling Rules - why not emulate SQL Server Job Scheduling / Exchange Recurring Meeting Schedules? Specific date / day of week / time of day / every x days (weeks) / starting from, until / x times / no end date...
6) How about an upper cap on max instances also? (If app load goes beyond my imagination, I'd rather wake up and handle it on my own) -
r.a.bonini commented
With regards to provisioning, I think that purely date/time orientated provisioning is only one aspect that needs to be considered.
External events need to be taken into account. For example, for web roles, the amount of traffic that is being handled by the load balancer may signal some change in the provisioning requirements of that webrole/deployment.
For a worker role, external events could well be queues (appfabric or storage). Activity in a queue could well trigger an extra role to be provisioned.
External events would also include pricing. While the cost of a given deployment might not be of much concern to medium or large users, this capability would be useful to smaller businesses on limited computing budgets.
I would tend to think that some sort of expression based rules engine would be the most appropriate thing to do. Certainly for the more sophisticated rules. You can never account for every possible user requirement in a UI based tool. Though the presence of a UI tool ( perhaps in the form of an expression generator) could be made available for the more mundane rules.
Finally, I'd like to point out that any auto scaling engine should be able to scale all the way down to zero instances. While there are good, sound and practical reasons (not to mention technical as well) why this option should not be there, having the option provides a greater deal of flexibility to developers (and who wants to have roles doing absolutely nothing and burning cash?)
-
Ok, we've prototyped this already. In the context of specifying the timeframe in which autoscaling rules are valid, we’d like to know:
- Who’s more likely to own the autoscaling rules? IT pro, dev, shared ownership?
- How far in advance would the autoscaling rules be specified (next few days, a few weeks, a few months)? How likely to change would these rules be?
- Would sophisticated recurrence patterns be necessary (think Outlook’s calendar recurrences), or would a fixed pattern like “days of the week + time of day range (for a time zone) + validity period“ do in most cases?
- How would you (or actually the target users) like rules to be specified ? as expressions or via a UI tool or some other way?
-
Jeroen Mineur commented
At least the typical working hours trend should be supported: so specify certain time periods (0800-1800) and days per week (mon-fri). As an extra you could add temporary upscaling, for example I know that next week on monday from 1300 to 1700 there will be a peak usage, so I want to upscale during that period, once (not every week), and I want to schedule that in advance.
-
Marcel Meijer commented
per day and per day of the week, so double. And if you add a extra instance manual, when the schedule kicks in the instances are back to normal.