Pop-up labs in Windows Azure

I recently came across these two excellent videos about the concept of a pop-up lab in Windows Azure using the IaaS approach of provisioning your own virtual machines. The “pop-up” part of this is that the lab is built, then turned off and de-allocated while not in use. Scripts are used to turn the lab back on, returning your lab environment in about 7 minutes.

There’s been some changes to Azure billing now that make these videos a bit out of date, but the good news is it just simplifies things. Now when you shut down a VM from the management console (or via PowerShell) they are automatically de-allocated, which means they are not being billed. The start / stop scripts then basically become startup and shutdown scripts which makes things a lot easier.

So over time you can build up a variety of labs – whether they be SharePoint, CRM, even Linux shenanigans and have them sitting there “off” and only turn them on when needed.

Why would you want to do this? Some possible ideas:

  • You need a multi-server environment to test your app
  • You want to try out an install from a known base
  • You want to experiment with some of the different configurations of server sizes for your app
  • You want to establish a short-term demo environment and give other people access to it over the internet

One of the greatest features for an infraloper like me (i.e. someone with a developer background who knows enough about infrastructure to be dangerous) is that Azure comes with network load balancing. So in the example of a SharePoint farm you define an endpoint that then handles load balancing between all your web front ends. Configuration is done through the console and only takes a couple of minutes. You can apply this concept to multiple CRM servers, multiple IIS servers hosting an ASP.NET app, even multiple Linux servers with Apache if you wanted.

Even in workplaces where I’ve had control over the physical host that hosts my VMs I haven’t yet had access to make network changes to do this kind of thing. So being able to configure this in Azure is pretty appealing.

Someone asked me why you’d need this at all – doesn’t “the cloud” just scale? With IaaS you’re taking the middle ground of retaining enough control that you’re doing an “on premise” installation of products (from the perspective of the software installation steps), it’s just that your premises in this case is the Azure cloud. It could just as easily be Amazon EC2, a bunch of VPS at a traditional provider.

Overall I was pretty impressed with how this offering from Microsoft has progressed. I’m only able to play around with this stuff thanks to my MSDN subscription which gives me free hours. But thanks to the “only billed when it is on” approach I can configure a variety of environments and have them ready to go if I need them in the future.