ALT.CLOUD: A Pattern Based Comparison of Windows Azure and Amazon Web Services

On Thursday, January 31, 2013, OLC attended NY Alt.NET group's event, ALT.Cloud Pattern-based Comparison of Azure and Amazon Web Services featuring Bill Zack. The event focused on common design and department patters for .NET apps that run on both Windows Azure and Amazon Web Services. Zack focused on five categories: the definition of cloud, top four to five cloud providers, brief overview of Windows Azure and AWS, how a typical application structure looks like and cloud portable apps.

Bill Zack introduced himself as an independent cloud architect and developer. He said that he worked on .NET since the beginning. "I was a Microsoft Windows Azure specialist since the inception of Azure internally," he said. Zack implemented cloud apps on both platforms and in one case, he built some app on both platforms, and he is currently an independent consultant.

"There's a lot of hype about cloud," Zack said. "There's 'cloudwashing,' which is the act of taking your product and calling it cloud." Cloud is defined by the NIST [National Institute of Standards and Technology] as "a model for enabling ubiquitous, convenient, on-demand network access to a shared pool of configurable computing resources (e.g., networks, servers, storage, applications and services) that can be rapidly provisioned and released with minimal management effort or service provider interaction." He outlined five essential characteristics, three service models and four deployment models of cloud computing.

The essential characteristics of cloud are that it presents a "on-demand self service, broad network access, resource pooling, rapid elasticity and measured service." For service, Zack outlined "SaaS [Software as a Service], PaaS [Product as a Service] and IaaS [Infrastructure as a Service]." For deployment models, there are "public, private, community and hybrid clouds."

Zack focused on the public cloud and explained its features. "There's a pool of computing resources and the service is offered by vendors. It has a pay-as-you-go model and it's self-provisioned. I also think for public cloud to be public, it needs a massive global presence and new infinite capacity."

The top public cloud providers are Amazon, Microsoft, Force, Google and Rackspace. Amazon is an IaaS and "does a good job supporting .NET," Zack said. Microsoft started "as a PaaS, but it added IaaS capabilities." Force and Google "offers non-.NET platforms." Rackspace is a "hosting company that's migrating and evolving itself as a cloud."

Zack presented a taxonomy of cloud computing, and indicated that on-premise computing required the user to be responsible for the application, data, runtime, middle layer, operating system, virtualization, server, software and networking. For IaaS, the vendors are responsible for virtualization, server, software and networking. For PaaS, just the application and data are managed by the user, and for SaaS, everything is responsible by the vendor.

"Cloud is evolving at a rapid rate, it's hard to keep your data up-to-date," Zack said. He showed a diagram of how Azure worked. "Windows Azure is a combination of IaaS and PaaS. It even has a marketplace to sell and buy data. There are mostly visual service tools, too." For Windows' Global Foundation Services, it has eight datacenters in three geographical regions: North America, Europe and Asia Pacific.

Zack describes Amazon Web Services as having a management and administration at the top level, then application platform services, foundation services and AWS infrastructure—"Availability zones are important to reduce redundancy," Zack said. "Amazon is a bit cagey about revealing where their data centers are," he said.

Zack reminded everyone that "no matter what cloud platform you choose, you need to worry about reliablity." He also outlined applications that are fit for the cloud. "There are four categories," he said. "There's 'On and off,' for batch jobs that need to be run at periodic intervals. 'Growing Fast,' or what I like to call the 'Fail Fast,' because you don't know if it'll be successful or not. 'Unpredictable Bursting,' when you may suddenly find yourself discovered by the world and need to scale up to meet the sudden demand. An increase in demand could also cause a decrease in performance if you cannot scale up quickly.  On the other hand, if the peak demand is not sustained over a long period of time then scaling down might be just as important as scaling up. And 'Predictable Bursting,' which can be workload that is subject to periodic peaks and valleys."

"Security is really important for cloud," Zack said. "It's important not to expose customer information. We resort to encryption, tokenizing information and storing them on premise. Trans-border data restrictions are important and with Azure, you can specify affinity—where you cant to place your data."

Regarding website hosting, Zack said, "Azure gives you 10 free websites, but as traffic increases and the website needs to grow, it moves to a pricing model. They're trying to go after Google now. In Azure, you can scale up or down your website just by changing the parameters. In cloud it's easy to scale up or down."

Feature categories on both Azure and Amazon Web Services were broken down to nine categories. 1) Deployment, Management and Automation, 2) Compute, 3) Storage, 4) Messaging, 5) Networking, 6) Security, 7) Operating System and Data Transfer, 8) Development Language and Runtime Support, 9) Marketplaces. "They all have this one way or another," Zack said.  "Some of these offerings are general offerings and some are in beta."

Regarding storage, Azure lacks a search function, but Amazon Web Services does. Azure, however, can use Bing API to use a search function. For email, there is "no real email solution in Azure. It's not offered as a service. Initially, Microsoft was concerned about spam. Amazon, on the other hand, offers simple notification services. Microsoft was worried about Azure becoming a spam platform," Zack said. "Amazon also gives you the ability to load a disc and ship it to them so they can load it for you. Azure, however, gives you the option to upload or download VM VHD."