Showing posts with label Windows Azure. Show all posts
Showing posts with label Windows Azure. Show all posts

How Easy Is It To Spin Up A Linux VM On Windows Azure?

After watching Mark Russinovich’s presentation about IaaS on Azure from TechEd NorthAmerica 2013 I figured I’d try it out to see if it really is as easy as he makes it seem.

After about an hour or so I can confidently report that it is very easy; I’ve got an OpenSuse 12.3 linux VM running with 28Gigs of space to play around with! This is a stock image from the gallery. I went with OpenSuse because I used to run that distro several years back. And because there wasn’t a debian image in the gallery :)

logged into vm

Setting up the VM itself is trivially easy in the new azure portal. It’s a wizard with 5 steps. Most of the time setting this up was spent creating an SSH certificate and configuring a client terminal program (PuTTY).

The portal wizard has a link to instructions for creating the cert and importing it though I deviated a bit when setting up PuTTY. Instead of using PuTTYgen to import the cert created via openssl.exe (windows build of openSSL) I just opened up an SSH session to the linux VM and instructed PuTTY to accept the site’s cert.

first vm being provisioned

Learning about Windows Azure

To prepare for a new role I’m transitioning into at Microsoft (SDE II – finally!) I’m ramping up on Windows Azure.

For one it sounds a lot like the “distributed operating system” that was alluded to in grad school. Analogies abound. So, for instance, the relationship between Windows (or any other OS) running on a single machine is similar to the relationship between Windows Azure running on lots of machines (more specifically, virtual machines).

Windows provides a program with access to the resources of a machine; CPU, storage, memory, network, etc…

Windows Azure provides a program with access to the resources of a cluster of machines: compute, storage, etc…

The analogy falls apart if extended too far because on Windows traditional applications are single instance. That is, a user launches an executable and uses that single instance of the running process to accomplish whatever functionality the program provides.

Windows Azure, on the other hand, seems to imply an organization of work more similar to the way the Web works. To access a program on the web you enter its URL (analogous to clicking on the executable). If it’s a popular program (e.g., amazon, hotmail, etc…) then there’s a good chance that a single request can be serviced by 1 of several load balanced servers. And the next request (say, clicking on a link to your account data) might well be serviced by a different web server.

In Windows Azure parlance this maps to Roles executing in Instances. Any 1 of several Instances may provide the program’s functionality.

There’s more to it of course but the same issues that you run into moving from a traditional client program (single instance, built in semi-persistent/stateful) to a web application (multiple instances, no built in persistence/stateless) apply.