From what I see in Windows Azure materials on how to deploy applications (for example, this lab), one has to select the "role size" and number of role instances when deploying his application.
That looks uncool - what happens if there's a sudden increase in number of requests to the application?
Is it possible to deploy an application in such way that additional role instances are spawned in case of high load and then killed when load gets lower?
Auto-scaling is not a built-in service today, but there are 3rd-party tools that offer this service, such as Paraleap's AzureWatch. You can roll your own as well (and here's a starter sample), but I wouldn't recommend it when starting out, as there are many things to think about, such as:
Also, to do your own scaling, you'd need to place that code either on-premises or in one of your roles (preferbly its own "manager" role). If in a role, you have to make sure that the management code only runs in one instance (using some type of blob-lock semaphore or something similar) - otherwise you'll have the risk of double-scaling.
I'd take a serious look at AzureWatch to get started: It's a penny per instance per hour, and you'll be up and running very quickly.
This functionality isn't baked in to Azure - but Microsoft may add something in the future.
There are quite a few samples out there that show you how to implement this yourself - e.g. see http://blogs.msdn.com/b/publicsector/archive/2011/02/18/dynamically-scale-your-windows-azure-service-instances.aspx
As an update to this - Scott Gu was talking in London this week (June 2011) and he suggested that autoscaling was something that Microsoft were actively working on and would be supplying in the near future. Obviously there's no date at present - and no guarantees!
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With