Rapid automated deployments (large or small) in Microsoft Azure

Azure Task Manager (ATM) is a DevOps tool that enables you to deploy Microsoft Azure compute assets in parallel, thus cutting down on the time necessary to do large deployments. It brings convenience to periodic (daily/weekly/monthly) deployments, large or small, reducing resistance to shutting down resources that aren’t used 24x7 and so saving money. https://github.com/sebastus/Azure-Task-Manager

ATM is implemented as an Azure Webjob and uses a message-based pattern.  Drop a message into a queue and in a few minutes your service is up and running.  Drop 50 messages into a queue, and in the same few minutes your service collection is up and running.  At the end of the day use the same techniques to tear down those services.

ATM Architecture

Figure 1: Example of implementation for a new cloud service

Use the tool as part of your continuous integration mechanism to do your deployments.  For example, generate your deployment packages and send them to Azure storage.  When all packages are done, send the messages in bulk to ATM and in a few minutes the entire system is deployed.  This allows (for example) your QA environment to be stable most of the time, with refresh builds coming online as a unit rather than piecemeal.

Upgrade deployments are also supported.

Some companies do load testing using cloud-based VMs.  Load testing isn’t usually a 24x7 activity, but it can require quite a number of machines.  Starting them up in bulk and shutting them down in bulk is a significant value-add.

Additional use cases are being considered.  Please comment below if your company could make use of additional features.  Or just fork the repo.