By Philip Fowler, Software Sustainability Institute Fellow and Postdoctoral researcher, University of Oxford.
Windows Azure is a collection of large datacenters scattered around the world (my nearest is in Ireland). By logging into the Azure portal you can spin up websites, virtual machines or even something more sophisticated, like a cloud service, in a matter of minutes. Microsoft use it as their common infrastructure, for example Azure now hosts all the Skype servers.
Anyone, not just Microsoft, can use Azure, although you will need to pay (by the minute as it turns out - this is a good thing). There is also a free tier which, at the moment, would let you host ten, low-traffic websites at no cost. Microsoft appear keen to encourage the use of Azure in research - for example researchers though can apply for an Azure Research Award. Deadlines are every two months. By attending one of the Windows Azure for Research training courses, you get access to Azure for six months.
How do you say it?
Before we go any further I feel I should share my hard won knowledge about how you pronouce Azure. As a British English speaker I would naturally say /az-YOOr/, but it appears the preferred way is /AZH-uhr/. Now you will sound like a pro...
What was the course like?
The first training course for researchers in the UK was run at the University of Oxford on 20-21 Janurary 2014 and the aim of this post is to give you a flavour of the course and what I got out of it. The course was free and the majority of attendees were computer scientists; by training I'm a physicist but am now working in a biochemistry department, so whether I understood the concepts should be a reasonable test of the breadth of the course.
Everyone brought a laptop and the course consisted of short lectures interspersed with hands on demos where we could spin up various websites, virtual machines (VMs), etc. Most of this was done using a browser like Firefox on the Azure portal. There was no requirement to use a Windows machine: I have a Mac and got along fine. Likewise, you can choose to use Linux or Windows VMs. To remotely access a VM I just had to install Microsoft Remote Desktop from the Mac App store. We were given all the course material on some funky robot USB sticks.
Overall, the course was great, not so much because I was able to understand the content (broadly I was), but because it really opened my eyes to how a cloud platform, like Azure, could fundamentally change how I work. For example, it could not only make some existing tasks trivial but it could also allow me to do new things. All during the course, and for several days afterwards, I kept having thoughts that started out like "hey, I could use Azure to do X....".
So, how might I use Azure in my research and teaching?
These are some of the thoughts I've had so far, grouped into three categories.
1. Simplified websites and wikis
There is a lot to be gained just from being able to quickly stand up a website. In our lab, we have been slow to adopt newer web technologies - for example our main website is individual pages of HTML that we can access via the NFS network. During the course we spun up a fully-functional WordPress site in less than two minutes. Using a content management system like WordPress would make it easier for us to keep the site up-to-date, as well as giving it a slicker look.
2. Creative use of Virtual Machines
Using VMs in teaching could be hugely useful. I organised the first Software Carpentry at the University of Oxford in October 2012. For example, to help things run more smoothly on the day you could stand up several instances of a Software Carpentry VM which attendees could access via Remote Desktop. Then, if someone had a technical problem, like not having the appropriate software installed, you could give them control of one of the VMs. Or, since Remote Desktop apps exist for mobile devices, you could even let attendees work from tablets, like an iPad. An IPython Notebook server could also be useful (standing up one of these was another of the hands-on demos). Finally, other servers could be safely stored in the cloud. For example, as I have written about previously, I am interested in crowd-sourced computing networks. One could host a BOINC server in Azure, safe in the knowledge the data were replicated and, should many volunteers suddenly join your network, you could rapidly increase the number of servers (scale-out in the jargon) or perhaps move to a bigger, more capable server (scale-up).
3. More adventurous ideas
I could develop an Azure cloud platform for analysing my simulations. This could have multiple workers and be controlled through the python SDK, effectively adding a large number of cores on demand to my workstation. Alternatively (but this could get expensive unless I had some Azure time) I could use VMs with my BOINC client installed to either test my BOINC network, or to quickly fill-in regions of parameter space ahead of a publication or conference talk.
I hope you've got the idea that I enjoyed the Azure training and that it has given me a lot to think about. I'm sure I won't do everything, but even implementing just one of these ideas could improve my research (or teaching, let's not forget that!). I'll document how I get on my blog.