Amazon Web Services: Elastic Beanstalk and CloudFormation Explained

Amazon Web Services has recently released Elastic Beanstalk and CloudFormation, two applications that automate the process of provisioning hardware resources and deploying applications on AWS’s flexible, inexpensive development environment. Introduced on January 19, Elastic Beanstalk automates the process of deploying an application on Amazon’s virtual servers once it has been written. Currently in Beta mode for Java applications only, Elastic Beanstalk manages the specifics of provisioning servers, load balancing and auto-scaling for unexpected spikes in the volume of traffic once an application is written. Elastic Beanstalk’s auto-scaling functionality scales horizontally by creating a clone of the original server instance, instead of vertically provisioning a larger server with a correspondingly appropriate memory. Developers retain the flexibility to over-ride Elastic Beanstalk’s auto-scaling features, in which case the application conforms to the scaling parameters indicated by the user.

Like Elastic Beanstalk, CloudFormation fulfills an analogous, but more ambitious function of automating application deployment. Launched on February 25, CloudFormation uses templates to automate creation of an integrated hardware infrastructure for an application containing multiple components. For example, CloudFormation takes the images, storage, security and messaging components of an application, understands their dependencies, and launches them in the right order using the template. In other words, instead of requiring a developer to write discrete scripts for each individual Amazon Machine Instance (AMI), CloudFormation gathers together certain parameters specified by a developer and creates one script for the requisite “stack” of Amazon Machine Instances of servers that collectively specifies elastic IP addresses, message queues, load balancing and auto-scaling. CloudFormation operates through JSON templates that are used to understand an application’s configuration parameters.

In his AWS blog post about CloudFormation, Jeff Barr uses the metaphor of cooking and baking to describe the application’s innovation and importance. While cooking allows for individual discretion and ad hoc changes to a recipe, baking requires precise combinations of ingredients that allow for cookies of the same taste and texture to emerge from the oven time and time again. In the same vein, CloudFormation enables developers to become bakers by automating the creation of complex systems. Moreover, developers may wish to create the same development environment a number of times, and instead of memorizing and repeating the execution of the same set of scripts over and over again, they can now use CloudFormation to automate and scale their development needs. Amazon released CloudFormation with templates for a number of open source applications such as Drupal, WordPress, Gollum and Joomla.

Amazon’s Jeff Barr put it as follows:

First, AWS is programmable, so it should be possible to build even complex systems (sometimes called “stacks”) using repeatable processes. Second, the dynamic nature of AWS makes people want to create multiple precise copies of their operating environment. This could be to create extra stacks for development and testing, or to replicate them across multiple AWS Regions….Today, all of you cooks get to become bakers!

Together with Elastic Beanstalk, CloudFormation goes a long way toward streamlining the process of deploying applications on Amazon’s EC2 environment. Despite Amazon’s lack of managed services, the 2011 first quarter release of both of these applications should render AWS more attractive to both small and enterprise customers alike.

Company Profile: Joyent and Application Virtualization

Joyent is a cloud computing vendor based in San Francisco. Founded by David Young (CEO) and David Hoffman (Chief Scientist) in 2004, Joyent is an Infrastructure as a Service vendor whose business model targets large scale enterprises, particularly in the online gaming space. Joyent has created its own technology stack called SmartDataCenter that it either licenses to third party customers or uses to deliver cloud computing services directly to customers such as LinkedIn, Kabam and the Gilt Groupe. Unlike other cloud computing vendors, Joyent takes virtualization a step further than hardware virtualization by virtualizing its cloud computing operating system over a pool of hardware resources that guarantees applications access to hardware resources. Because Joyent’s cloud computing operating system is virtualized, every application that operates on its SmartOS platform has access to its entire fleet of servers, with the result that customers need not create procedures for provisioning additional server resources as necessary. Applications on Joyent’s SmartOS platform are de facto deterritorialized across Joyent’s collective pool of hardware resources.

Joyent’s website describes its application virtualization as follows:

The SmartMachine has been designed to be very transparent to the underlying operating system, Joyent SmartOS. SmartOS uses this visibility into the SmartMachine to provide all SmartMachines with as-needed access to a pool of all available resources on a single piece of hardware while still providing each SmartMachine with minimum guaranteed access to resources based on a pre-established fair share schedule. This transparency also allows the underlying operating system, Joyent SmartOS, to identify underutilized resources and use them to provide enhanced application performance management. In normal operating conditions, all RAM and CPU resources are either directly used by applications, or are being used by the operating system to optimize disk I/O and provide other performance enhancements to the SmartMachines.
Source: “Joyent: Application Virtualization Hosting”

Joyent’s claim here is that the virtualization of the SmartOS operating system on which all of its applications run enables it to maximize productivity by identifying “underutilized resources” that can in turn be deployed to enhance “application performance management.” A series of third party benchmarking tests by the IMS company claimed that Joyent SmartMachines, Windows Virtual Machines and Linux Virtual Machines outperformed its Amazon EC2 server counterparts. Specifically, the IMS company claimed that Joyent SmartMachine’s disk I/O, Linux Virtual Machine CPU and Windows Virtual Machine disk I/O were faster than the corresponding Amazon EC2 machine by factors of 14, 5 and 2 respectively. Everyone in the cloud computing space knows that benchmarking tests are notoriously difficult to appraise, but Joyent’s willingness to position itself directly against Amazon EC2 in both press releases and company webinars speaks volumes about its confidence to execute.

Joyent’s CTO Mark Mayo attributes its performance to its application virtualization design: “Most people have resigned themselves to painfully slow disk I/O in the cloud,” Mayo noted. “But these results demonstrate that they don’t have to settle for mediocrity. Joyent’s cloud architecture uses lightweight virtualization that doesn’t impose overhead on I/O, so SmartMachines are as much as 14 times faster than Amazon’s EC2 machines.”

Performance marks one of many factors to consider when choosing a cloud computing vendor, but the IMS Company’s results nevertheless beg the question of whether Amazon’s market share leader position has compromised the performance and speed of its EC2 product offering. Conversely, cloud customers will need to consider whether Joyent has the capacity to accommodate more and more enterprise customers that are likely to strain an infrastructure that already supports computationally intensive applications from customers such as Kabam, Social Gaming Universe and Neverbug Entertainment and ZooLife.

Amazon Web Services and the Large Scale Enterprise Space

In a December 2010 article titled “Magic Quadrant for Cloud Infrastructure as a Service and Web Hosting”, Gartner positioned Amazon Web Services (AWS) as a visionary within its Magic Quadrant in the Cloud Computing Space. Within the “Visionary” category, Amazon was joined by GoGrid, CSC, Joyent and IBM whereas the “Leaders” box was occupied by Savvis, AT&T, Rackspace, Verizon Business and Terremark Worldwide. Gartner’s designation of AWS as a visionary was widely controversial given its first mover advantage in the cloud computing space, its dominance of cloud computing market share and the unparalleled depth of its features and functionality. In its critique of AWS, Gartner noted that Amazon lacked managed services that catered to the needs of customers who required customized management of data and applications that have been transferred to the cloud. Moreover, Gartner claimed that Amazon lacked colocation and dedicated non-virtualized servers, charged separately for items that are often bundled for free in the offerings of its competitors, and was fundamentally developer-centric, rather than enterprise oriented.

This article claims that Gartner’s criticisms about Amazon’s “lack of managed services” are misguided and reveal a fundamental misunderstanding of its business model and strategic objectives. On one hand, Gartner is right to claim that Amazon’s EC2 cloud computing service lacks managed services that provide enterprise customers with the personalized attention to which they have been accustomed when purchasing IT services from vendors such as IBM, SAP or Siemens Soarian. That having been said, Amazon’s cloud computing business model is designed to eschew the personalized attention specific to the procurement process and subsequent customized management of its cloud computing services. Amazon’s EC2 platform provides the most flexible, easily configurable, streamlined process for deploying software applications in the cloud computing space, today. In exchange for Amazon’s low pricing and array of applications for provisioning servers and associated applications with a few clicks of the mouse, enterprise customers will need to abandon the expectation that they will receive customized attention from their cloud computing vendor. Just as Wal-Mart bifurcated the department store experience into those stores that compete in price and those that offer customers personalized attention during the shopping process, Amazon intends the same in the cloud computing market: take advantage of its low pricing and bevy of applications for streamlining the deployment experience such as Hadoop, Elastic Beanstalk and CloudFormation, or go elsewhere. Gartner is right to claim that Amazon is fundamentally developer-centric, but it misses the reality that Amazon’s business model conflates developer-centric with enterprise oriented by providing large scale enterprises with unparalleled ease of deployment and application management experience. To repeat: for Amazon Web Services, developer-centric is enterprise oriented, but in a way that departs from the traditional model by which large-scale enterprises have been used to procuring IT services by receiving customized pricing, product demonstrations and walk-throughs for C-level stakeholders, negotiation about customized features and functionality, and customized management of services, post-signing. Instead, Amazon CEO Jeff Bezos, its CTO Werner Vogels and the rest of AWS’s executive team have thrown the ball into the court of C-level executives at the enterprise level and its development managers, daring them to take or leave the flexibility of its deployment platform and attractive pricing.

Our next postings will elaborate more on precisely how Amazon’s product functionalities and 2011 product roadmap simplifies and streamlines the development experience for large scale enterprises. We will examine Elastic Beanstalk, CloudFormation, its VMWare Plug-in, integration of Zeus Load Balancer and its premium support services in more detail.

Amazon Web Services (AWS): A Brief Introduction

Although Amazon.com began as an online retailer of books in 1995, it was not until 2002 that it entered the market for technology services with its Amazon Web Services (AWS) product. Today, Amazon Web Services is most pertinently known for hosting the Amazon EC2 (Elastic Cloud Compute) product offering as well as Amazon S3 (Amazon Simple Storage Service). Amazon EC2 was launched as a beta product on August 25, 2006 and since then, has progressed to dominate global market share for cloud computing services in the wake of competition from vendors such as the Google App Engine, Microsoft Azure, Rackspace, RightScale and Joyent. Amazon EC2 provides business subscribers with a pool of computing resources that can be configured and provisioned on demand by the subscriber. Amazon’s web-based services enable businesses to avoid expensive capital investments in IT hardware and its maintenance. Additionally, the EC2 product frees businesses from the obligation of term based subscriptions to web hosting environments that typically have fixed monthly costs and minimum term length subscription requirements. Amazon’s EC2 environment allows developers to pay only for system usage and consequently embrace a pricing structure that recognizes inconsistencies in system usage such as spikes in holiday sales or event driven website or application traffic. In 2010, analysts estimated that Amazon’s EC2 product offering earned between $500 and $700 million in revenue. Given that Amazon’s total 2010 revenue was approximately $34 billion, its AWS vertical represents a miniscule percentage of its total sales. Nevertheless, in the second quarter of 2010, Amazon CEO Jeff Bezos reported that Amazon was “seeing rapid growth in Kindle, Amazon Web Services, third-party sales, and retail,” thereby suggesting significant market uptake of the AWS line of business that is currently grouped into the “Other” category on the company’s balance sheet.