Review: Windows Azure shoots the moon

A long time ago in a century slipping further and further away, Bill Gates compared MSN with the exploding World Wide Web, saw the future, and pivoted nicely to embrace the Internet. A few decades later, someone at Microsoft looked at the cloud and recognized that the old days of selling Windows Server OS licenses were fading. Today we have Windows Azure, Microsoft's offering for the cloud.

Azure is a cloud filled with racks and racks of machines like other clouds, but it also offers a wider collection of the building blocks enterprise managers need to assemble modern, flexible websites. There are common offerings such as virtual machines, databases, and storage blocks, along with not-so-common additions such as service buses, networks, and connections to data farms address verifiers, location data, and Microsoft's own Bing search engine. There are also tools for debugging your code, sending emails, and installing databases like MongoDB and ClearDB's version of MySQL.

All of these show that Microsoft is actively trying to build a system that lets developers easily produce a working website using the tools of their choice. Azure is not just delivering commodity Microsoft machines and leaving the rest up to you -- it's starting to make it simpler to bolt together all of the parts. The process still isn't simple, but it's dramatically more convenient than the old paradigm.

Not-only-Windows Azure The Azure service is a godsend for those who are heavily invested in Microsoft's operating systems. Many of the big clouds offer only Linux or BSD machines. Rackspace charges 33 percent more to build out a Microsoft Windows server, but Azure rents a Windows machine at the same bargain rate as Linux.

Did I say the same as Linux? Yes, because Microsoft is fully embracing many open source technologies with Azure. You can boot up a virtual machine and install a few of the popular Linux distros like Ubuntu Server 12.04 or OpenSuse 12.1. There aren't many choices of open source distros, but Microsoft has chosen a few of the more popular ones. They cost the same as the standard Windows Server 2008 R2 and Windows Server 2012 offerings.

Microsoft's embrace of open source is on full display with Azure. The company is pushing PHP, Node.js, Python, Java (if you consider Java open source), and even MySQL. Well, that's not exactly true. You can create running versions of Drupal or WordPress, and Azure will set up MySQL back ends for you. If you go to the SQL tab to start up your own SQL database, you can provision an instance of Microsoft SQL Server, but there's no mention of MySQL. That's because Microsoft is letting a third party, ClearDB, deliver MySQL. It's one of a dozen or so extras you can buy.

The websites with Drupal or WordPress are among many options available. Microsoft will let you have up to 10 free ones with your account. Then you push your HTML or PHP to them with Git, and the server does the rest. (Notice the embrace of Git too.)

These free options are come-ons. If your website takes off and you start getting traffic, you can upgrade to shared services or full, managed machines that can be load balanced. The documentation is a bit cagey about what happens as you start fiddling with the Scale control panel, but you get better guarantees of service and less throttling. If you move over to the Reserved setting, you get dedicated virtual machines with resource guarantees. This is a pretty simple way to build and test a website before deploying it for production.

Tapping the Microsoft toolchain Building a simple website tests only a small part of what's available. Microsoft offers the largest smorgasbord of treats for enterprise programmers of any of the clouds I've seen -- no doubt because the company is also one of the dominant programming tool creators. Microsoft has connected the services with tools in the Azure platform so that you can create, for instance, a "mobile service" just like you're booting up a virtual server. While the other clouds are selling a commodity machine, Microsoft is trying to take it a bit further.

The integration isn't as seamless as it could be. But while it leaves much of the work up to you, it's neat to click a few buttons and download a Visual Studio project with the scaffolding for storing data in Azure. You must still use Visual Studio to create the app, but Microsoft is trying to make it simpler to create a Windows 8 smartphone app that stores its data with Azure.

What's even more surprising is the iOS tab next to the Windows 8 tab. If you click there, you can download an Apple Xcode project file for your Mac. Your Windows back-end service can also support an iOS app. Microsoft is not just embracing open source code, but the new Borg, the iPhone.

Despite this detour, most of the options and much of the fun are reserved for Windows and Microsoft SQL programmers. You can create a cloud service wrapped around a database with Microsoft's SDK. Then you can deploy it first to the staging server, then push it into production. It's a pretty nice infrastructure. There's quite a bit of depth to the SDK too. It's not possible to cover all of it here, a feeling I often had while experimenting with Azure.

When you create your own Microsoft SQL databases with Azure, you pay by the gigabyte. The databases start at $5 per month per 100MB, but the cost per byte drops quickly. A 10GB database is only $45.96.

It's worth mentioning that you don't need to work with MIcrosoft's pay-as-you-go plan. Microsoft gives fairly substantial discounts (20 to 32 percent) if you make a commitment and pay in advance. Should you go over what you promised to buy, Microsoft bills you for the rest at the standard rates. The monthly commitment deals kick in only when you promise to use $500 worth of services per month.

SQL isn't the only option -- Microsoft remains current here too. If you like, you can house your info in blobs, tables, or queues in a data store that can either be locally redundant or "geo redundant." In other words, it can be replicated in one data center or across the country. The sizes can be pretty big. As an example, 1,025GB of geo-redundant storage costs $128.12 per month. Microsoft will also charge you for each "storage transaction," but these seem fairly cheap. The price calculator quoted me 90 cents for 9 million. Does anyone else offer pricing in cents any longer?

Azure provides an easy way to track the load on your server.

Benchmarking Azure performance Are the Azure prices good? I decided to take the bargain-basement machine out for a spin with some Java benchmarks. While Java may or may not be the most popular language used on these machines, Microsoft's extensive documentation includes instructions on building a Java machine for doing computation. They list it alongside C#, Node, and PHP.

The "extra small" machine with 768MB of RAM and a shared core sells for just 1.3 cents per hour or $9.36 per month. That "preview" pricing is cheaper than that of any other cloud machines I've seen -- including Rackspace's 256MB "first generation" machine that sells for 1.5 cents per hour. This isn't an exact comparison because that price only gets you a Linux box. Rackspace's Windows machines are more expensive.

I loaded the latest Oracle JVM onto a Windows Server 2008 R2 image and started up the DaCapo benchmarks. The performance was wildly different from other low-end servers I built at Rackspace and Joyent. The differences between so-called commodity machines continue to surprise me.

The avrora simulation of parallel events, for instance, was more than twice as fast on the Azure machine than on the Joyent or Rackspace boxes, but the Tomcat server benchmark was two to five times slower. The Lucene indexing benchmark was dramatically slower on Azure, but the Lucene search of an index was dramatically faster. All of this proves you have to test your own code on each platform if you want to squeeze out optimal performance.

Should you purchase? The tested speed of the machine may vary according to the individual benchmarks, but the overall results are in the same ballpark. If you're looking for a cheap machine, it's a good price.

I don't know how long Microsoft plans to maintain these preview prices, but they're extremely tempting, especially for anyone who's looking to move code that needs Microsoft's Windows or SQL platform. You can spin up what you need quickly and move your software over without rewriting anything. The prices are also pretty compelling for non-Microsoft users. You can use the most high-profile distributions of Linux and enjoy the same hardware configurations and price points.

Beyond the commodity cloud The machines and the software running on them may be the heart of the cloud, but Microsoft's Azure platform is more than just Windows machines and Microsoft SQL. You can also purchase various data services through APIs that handle a few of the most common data management jobs that Web developers confront.

The integration is mainly just the bookkeeping. If you purchase the Bing Search Services (the first 5,000 searches a month are free), you get a pointer to a proxy C# class and code that makes the API call. The source code snippet comes with a cute little link that will insert your API key. What you do with the search results is up to you and the C# code you write.

There are at least a dozen different options, including an address checking service that compares the address your customer entered with the officially recognized addresses from the postal service database. Another looks up sales tax rates. A third offers weather data. It's a nice mix that can save you the trouble of building these services yourself.

Windows Azure shows how a company that built a product like Visual Studio approaches the cloud. Microsoft didn't just create a bunch of APIs and shell scripts, but knitted everything together with a clicky Web interface. Rather than use Vi to knit together Unix scripts, you point and click. It's a nice way to advance the platform and make it simpler for people to create scalable websites that offer a full range of services. This budding integration with the Microsoft toolchain is the frosting on the cake that cast the Azure machines with their enticing prices as more than just commodities.

Copyright 2015 IDG Communications. ABN 14 001 592 650. All rights reserved.
Reproduction in whole or in part in any form or medium without express written permission of IDG Communications is prohibited.