Linux on Azure—a Strange Place to Find a Penguin

Linux enthusiasts might think the idea of running a Linux virtual machine on Microsoft's Azure service is like finding a penguin sun tanning in the Sahara. Linux in the heart of the Microsoft cloud? Isn't that just wrong on so many levels?

Why would anyone want to run Linux on Microsoft servers? For the hobbyist, I suppose for the same reason people climb Mount Everest: because it's there. For the business user, the prospect of spinning up Linux VMs in Microsoft's fabric offers new options for collocating open-source technologies with existing Microsoft Azure services. For the cloud market in general, more competition is good news for consumers.

The Cloud Marketplace

Virtual machines in the form of virtual private servers (VPSes) have been offered for nearly a decade from a galaxy of providers, using virtualization technologies such as Xen, Virtuozzo/OpenVZ and KVM. These providers subdivide a physical server into multiple small virtual servers. Users typically subscribe on a monthly basis, with an allotment of memory, disk and network bandwidth.

Later vendors, such as Amazon, Rackspace and now Microsoft, offer the same service with a finer-grained commitment. Users can spin up a VM (or a hundred) by the hour, pay for bandwidth by the gigabyte and utilize more advanced features, such as private networks, SAN-like storage features, offloaded database engines and so on.

All of this diversity is good news for end users. In 2002, a VPS with 128MB cost nearly $100/month. In 2006, you could get a VPS with 512MB of RAM for $40/month. Today, such VPSes can be found for less than $5/month in the VPS market or for pennies per hour from cloud providers.

Microsoft Enters the Market

Amazon enjoyed early success with its Elastic Compute Cloud and other vendors, such as Rackspace, soon followed suit. Microsoft originally opted for a different, more complex cloud strategy. Azure was built as a "platform as a service" offering (see the Cloud Flavors sidebar) in which developers could write applications that ran in various roles and talked to Azure APIs. In theory, this allowed developers to concentrate on code and not worry about the abstracted hardware underneath.

In practice, developers were forced to write Azure-centric applications and adoption was slow. Many enterprises with mixed Windows/Linux environments found that hosting their own self-managed servers on Amazon and other cloud environments was more attractive than spending time porting and debugging their applications.

In 2012, Microsoft added "infrastructure as a service" (virtual machines) offerings to its lineup, allowing users to run and administer Windows and Linux virtual machines they directly control.

Azure virtual machines are still in "Community Preview", which is Microsoft lingo for "Beta". Support is limited to forums, and as you'll see, some sandpapering of the offering is still needed. However, after using the service for a couple months, I find Linux on Azure to be stable, easy to use and performs well. At the time of this writing, Microsoft has not set a date for General Availability.

Cloud Flavors

Cloud-based services come in several different forms, depending on what's being abstracted and provisioned.

  • Software as a Service (SaaS): the provider runs an application and exposes an interface to subscribers. This is simply using a Web-based application. Examples include, NetSuite and 37 Signals' Basecamp.

  • Platform as a Service (PaaS): the provider offers a platform that users can use to build applications. Subscribers write and provide code, which runs on abstracted hardware and software services. Examples include Microsoft's Azure original offerings, Oracle's Fusion cloud or Google's App Engine.

  • Infrastructure as a Service (IaaS): the provider delivers virtual machines and other infrastructure pieces that users can configure as they like. Examples include Amazon's EC2, Rackspace Cloud, Google Compute and Microsoft's Azure. Virtual Private Servers also are IaaS offerings with a different financial model.

Comparing Azure to Amazon EC2

Azure's chief competition is Amazon EC2, and it's not hard to see that Microsoft patterned its IaaS offering after its rival's success.

Like EC2, Azure is priced by the hour, and the rates are similar. While in Community Preview, pricing is slightly discounted compared to expected General Availability pricing. Actual price comparisons for hourly VMs depend on how long a term commitment is made. For example, Amazon offers both spot instances and prepaid reserved instances, while Microsoft also discounts longer-term commitments. Storage and bandwidth pricing are very similar. In general, running a VM on Azure will cost you about the same as EC2, which is probably just what Microsoft planned.

EC2 offers features Microsoft has not caught up to yet. For example, the underlying storage virtual machine disk (Elastic Block Storage) can be snapshotted to S3 storage. However, many Amazon services have parallels in the Azure world. For example, Amazon's SimpleDB is analogous to Azure's Tables. Both vendors offer complex networking features, caching, monitoring and Content Delivery Network options. In either environment, a VM can be sited in the Americas, Europe or Asia, with global CDN nodes.

The Azure value proposition is not "we are a better cloud" but rather "you can do EC2-like things here alongside your Azure platforms". For shops that have deep Microsoft deployments, were early adopters of Azure or want to develop applications that move into and out of Azure, the new IaaS offerings will be appealing.


Andrew Fabbro is a senior technologist living in the Portland, Oregon, area. He's used Linux since Slackware came on floppies and presently works for Con-way, a Fortune 500 transportation company.


Comment viewing options

Select your preferred way to display the comments and click "Save settings" to activate your changes.

Engine Yard PaaS for Azure

Mike Mersch's picture

Thank you for this very informative post Andrew. Since this post Engine Yard, a leading OSS PaaS, formed a partnership with Windows Azure to provide an additional level of managed services for Developers choosing to take advantage of your advice. Ruby, PHP and Node.JS apps running on Linux, on Azure, is a great choice for cloud based web and mobile apps.

Thank you for the effort you

distribution prospectus paris's picture

Thank you for the effort you have made in creating this blog, better shared information that's also one of the values ​​of democracy ... if I can do anything to help this site I'd be happy .. Good luck!

Voyance gratuite par mail

Both EC2 and Azure are

Joe Borg's picture

Both EC2 and Azure are extremely expensive, for what you get. No one seems to be jumping on Digital Ocean's bandwagon. I've been using them for about 6 months now and a foot has not been put wrong.

Windows Azure now "General Availability" with Microsoft SLA

Mark Sorenson's picture

Scott Guthrie's Blog

Thanks Andrew for the review of Windows Azure and Linux. FYI, very recently (April 16) Microsoft announced General Availability of Windows Azure Infrastructure Services (i.e. Linux and Windows Virtual Machines, Virtual Network). This means users can now run their Virtual Machines in full production with a Service Level Agreement backed by Microsoft. As part of General Availability, new sizes are available for both Linux and Windows Virtual Machines. More info available at the Scott Guthrie Blog, link above.

Mark Sorenson
Product Planner for Infrastructure Services (IaaS, PaaS, Virtual Networks)
Windows Azure, Microsoft Corporation

Reply to comment | Linux Journal

Guides To Israel's picture

Hello there, I believe your blog may be having web
browser compatibility problems. Whenever I take a look at your blog in Safari, it looks fine but when opening in Internet Explorer,
it has some overlapping issues. I simply wanted to provide you with a quick heads up!
Other than that, great blog!