Windows Azure for Amazon AWS Users

Windows Azure for Amazon AWS Users

One hurdle I run across while talking to AWS users about Azure comes down to terminology. Every cloud vendor has their own vernacular and this can be a source of endless frustration when one starts to compare the two services. Developers that have already wrapped their mind around AWS’ parlance often find themselves struggle to understand Azure’s.

There is of course a intrinsic difference between the two platforms which contributes to the confusion. And before we draw any lines between the two platforms, we should first address this fundamental difference.

Infrastructure vs. Platform

There are three primary Cloud Service Models in the market today – Infrastructure as a Service (IaaS), Platform as a Service (PaaS) and Software as a Service (SaaS).

IaaS vs PaaSAmazon Web Services is fundamentally an Infrastructure as a Service solution. Azure on the other hand is fundamentally a Platform as a Service solution. While it is true that they both offer some components from each Service Model, they remain primarily influenced by their core model.

Essentially the difference comes down to where you place the abstraction layer. With IaaS they provide a virtualization infrastructure and leave the rest to the you. PaaS on the other hand includes both the infrastructure and the runtime environment (OS, runtimes, middleware, etc.).

By further abstracting away from the physical environment, PaaS delivers fantastic scalability with substantially less management overhead. You manage your application and your data, the rest is handled for you automatically.

Connecting the Dots

A word of warning (and preemption of the inevitable complaints): I am making certain generalizations to make this more digestible. In doing so, some nuances of the various platforms may be overlooked. AmazonAzureComp

At the highest level there is some parity between AWS and Azure. They both divide the service into four primary categories Compute, Storage, Database and Networking. As you move down the stack however is becomes muddier. Hopefully the following will help simplify transitioning from Amazon to Azure.

Elastic Compute Cloud (EC2)

The closest allegory to EC2 is Azure’s VM Role (currently in Beta). Specifically it aligns with an EC2 instance leveraging Local Instance Store. They both are stateless instances (meaning they don’t persist data on the root disc). Both also support a file system persistent model to deal with the inevitable files that get generated (see below). Unlike AWS however, Azure uses a user-supplied VHD rather than building the image in the cloud directly.

Unlike the VM Role, there is no allegory for the Web or Worker Roles. These roles are pure PaaS instances. You publish your application to them and the underlying platform is maintained for you.

Web Role

Web roles in Windows Azure are special purpose, and provide a dedicated Internet Information Services (IIS) web-server used for hosting front-end web applications. You can quickly and easily deploy web applications to Web Roles and then scale up or down to meet demand.

Worker Role

Worker roles run asynchronous, long-running or perpetual tasks in the background. They are very similar to Windows Services or Daemons. When you separate your application’s background processes in a Worker role and host the front-end in a Web role, you can better distribute your application logic and have more fine grain control over how your application scales.

Elastic Block Storage (EBS)

Azure Drive aligns quite well with EBS. The Azure Drive is a VHD hosted within Azure Storage (technically within something called a Page Blob). This VHD can be mounted by your Web, Worker or VM Role. This drive looks like any other secondary drive connected to a server. Data written to an Azure Drive will persist outside of the instance that mounted it. You can also mount an Azure Drive Snapshot, providing a read-only data store to a large number of instances.

DynamoDB (Beta)

Dynamo is a NoSQL database that is very similar to Azure Table Storage. NoSQL is an excellent way to store unstructured or loosely structured data in a cloud environment. Wile they lack the referential integrity of a relational database, they are extremely efficient. This efficiency allows them to scale incredibly well.

Simple Storage Service (S3)

When it comes to storing stuff in the cloud, the examples sited almost always revolve around digital media of some type. AWS S3 is Amazon’s answer, Azure Blob Storage is Microsoft’s. They both serve the same purpose, storing large binary objects.

Simple Queue Services (SQS)

Queuing is vital to successfully scaling out in the cloud. Azure includes a persistent and reliable messaging service called Azure Queue. This is the primary way your machines (AWS) or roles (Azure) relay information to each other.

Relational Database Service (RDS)

As sexy as NoSQL is, it doesn’t replace traditional relational database. When you need to store structured data with transactional support, turn to SQL Azure. SQL Azure is a high availability clustered SQL platform. It uses the same tooling as SQL Server, making it a relatively easy transition from traditional SQL Server deployments.

Other Stuff

Both platforms also have a host of additional services that you can add into the mix as well. I’ve decided to forgo diving into them at this time rather risk getting stuck in the weeds sorting out things like Rout53 and Traffic Manager. These are more advanced topics and beyond the scope of what I covered here.

Stop! Hammer time…

For lovers of hyperbolic technology predictions, 2011 was a banner year. Based on media coverage one would assume that right now I’m sitting in front of my 3D TV while I write this blog on my phone. Meanwhile my ceiling is checking the weather while my refrigerator is busy posting to Google+ that I’m low on coconut water.

My favorite of 2011 was the predicted death of the PC. What makes this one so interesting is that people were eager to jump on the bandwagon, there was little agreement as too why. Some said the Smartphone would replace the PC. Others said we’d all switch to using tablets. Meanwhile we saw millions of PC ship during the holidays.

This boils down to the old adage that when all you have is a hammer, everything looks like a nail. The reality is that there are screws in the world. And they don’t interface with hammers very well.

While it would be nice to have a 60″ resizable 3D touch-screen device that I can put into my pocket and expand while sitting on the couch to better see Angry Birds, it just isn’t going to happen any time soon. Instead we’ll have different devices for different tasks. There will be room for your hammer in the tool box, but it won’t be your only tool.

My wish list? A Smartphone in my pocket, a 30″ monitor docked to my Laptop on my desk, a Tablet on the end table and a big whopping 70″ TV in the living room. On top of that, I’d like the Cloud to sync content between all these devices. It would also be nice if they all shared a common interface.

I already have a lot of this. Okay, I don’t have a 70″ TV (if anyone knows of a foolproof Wife Acceptance argument for such an item, please share). As I look around the house right now I do see most of this coming together.

I have a Windows Phone 7 in my pocket. It syncs my documents, photos and OneNote up to the cloud. I’ve got Windows 8 Developer Preview running on my Laptop which is docked in the office. Next to the Couch is an Asus tablet, also running Windows 8 Developer Preview (I use this Tablet quite a bit, it comes to every meeting I attend and every flight I take). On the TV is my XBOX 360 playing a movie. All of these devices sync to the Cloud, they all run a Metro Style UI. I’m able to share content between them, editing on one and consuming on another effortlessly.

Now all I need is my fridge to acquire an IP address while I look up what the heck coconut water is and why I’m suppose to care that I’m out of it.