The portals are _terrible_. There's two of them, one preview and one classic, both mandatory as not all features are in either. The new one is particularly slow. They're complicated and the preview UI feels designed for tablets -- long sequences that stay on the screen, sliding to the side like a metro app, called "journeys" make it a nightmare to navigate. Simple operations (create/destroy VMs) sometimes take many minutes. Sometimes, they hang for long times (50+ minutes killing a VM) - I suppose this is the platform more than the UI. Sometimes the UI just gets "broken" and you've got to refresh the page. (For instance, a save button won't activate even after changing fields, or saving won't actually make changes.) I know it feels like I might be flaming, but I cannot understate what an absolutely horrible experience using using the Azure portals has been (it used to better just with the single classic UI, but by no means excellent.)

Their SSD story is moronic - truly incomprehensibly silly. Normally, you'd expect SSD to be a checkbox on storage. "Hey, want this disk/blob/etc. to be SSD?" Not so on Azure. On Azure, you have to use a separate storage tier ("Premium Storage"), only available in 128/512/1024G slices. Want 256GB of SSD or more than 1TB? MS suggests software RAID - "Premium Storage" is incapable of handling this. Oh, your VM type also limits your IO. So if your IO far outweighs your RAM/CPU needs, well you get to pay for extra RAM/CPU in addition to the SSDs. And for a bizarre kicker, you can't even connect SSD volumes to regular VMs - only special types of special "tiers" of machines are allowed to connect SSD. Yep.

Let's talk about that. MS shipped these machines (D and G series) that have local SSD and went on about the perf of SSD. Except, each reboot, you lose that data (yes seriously). It's essentially useless outside of volatile caching (cute, but hardly that notable of a feature). And even then, only special "DS" series VMs were allowed persistent SSD. And just a week ago, they finally made "GS" series that allow SSD. What a pointless, confusing mess.

Networking. Hooboy! Azure was originally PaaS, and it shows. Each VM ends up in a "cloud service", which means a single TCP load balancer. They actually suggest that if you have multiple VMs (and you must, as there's 0% SLA for single-VM setups), that for things like SSH and RDP, you assign different ports to different machines (221 for vm1, 222 for vm2, etc.). If you want to LB your systems you're forced into a cloud service. (Sure, you can toss them on a VLAN and use SSH forwarding or a VPN, but you shouldn't be forced into such designs.) Azure networking blocks ICMP and only allows 150 ports open. To get around this, you need special public IPs, limit 5 per subscription.

Azure networking seems to suck. We experience packetloss with Azure unlike any other service I've used. We get packetloss or connection failure to SQL Azure several times a day. I actually PCAPd IIS serving pages and noticed TCP-related due to packetloss, something I've rarely seen on other providers. It's not even fast: Doing a backup of Elasticsearch to Azure blob took about 1/5th the time off our GCE nodes than Azure VMs (both provisioned as 4 or 8 core systems with SSDs - network IO was the limit).

Pricing. Ha! Azure is so ridiculously overpriced it's sorta strange. I compared identical setups on Azure and GCE. GCE came in at 1/2 to 1/5th of the price, depending on the exact VM characteristics. Azure does do discounts if you sign an "Enterprise Agreement" (yeah, no straightforward self-serve like AWS/GCE), but the discounts still didn't make it close to competitive. Even AWS (as far as I can tell; the whole reserved instance contract stuff seemed confusing) appears to be quite a bit less. Azure also doesn't seem to offer any sort of elastic pricing, like GCE's pre-emptible instances or AWS's spot instances.

If you're looking for an IaaS (thinking VMs, networking, a LB, and storage), Azure simply isn't a real competitor. Azure is focused on selling software. If you're gonna buy things like, I dunno, their hosted Elasticsearch product, or SQL Azure (which, apart from the connectivity issues, is a cool product), then hey, great. If you're buying into the whole MS ecosystem, connecting your AD systems to the cloud or whatever, Azure's probably the best option. (Even then, the management UIs .... ugh.) But for IaaS, no bloody way.

I've used AWS a bit. I am not very pleased with Google as a business (because of privacy stances and advertising), but I reluctantly tried GCE out and it's like night-and-day coming from Azure. Stuff is straightforward and simple. Machines are FAST (from clicking create to logging in via SSH in well under a minute; feels like a couple dozen seconds.) The portal is clean and easy to figure out. Networking is also easy, with no crazy "Cloud Service" BS dictating how I lay things out, and actually a ton more flexibility. (And even has a firewall thrown in!)

To anyone that thinks I'm exaggerating, I propose a simple comparison. Try to setup the following: A 3-node, SSD-backed Elasticsearch cluster and a pair of HTTP servers running a public site that privately connects to said ES machines. Then after that's done, modify the config to add another website (on a separate webserver than the first) that also needs ES access. Record total time to get this going, number of steps, ease of scripting, and do a perf comparison.

I used to be the biggest MS/Windows fanboy. I assumed Azure would rock just like Visual Studio does: Even Dave Cutler was involved with Azure, it's gotta be amazing, right? I've been heavily disabused of any such notions.