Recently Amazon Web Services has launched the AWS Marketplace. It is certainly a welcome move that brings all the available software on Amazon EC2 under one roof. This is especially good for ISVs to get visibility and become more accessible to potential customers. The interface inherits the classic look and feel of Amazon shopping experience and has close resemblance to the Amazon Appstore for Android. The analysts and the media have responded very positively to this move from Amazon. While this is appreciated by the Amazon partner community, there are some facts that the AWS customers should know.
The Cloud is not just about Compute
AWS success is primarily attributed to the mature Web Services that help customers build scalable, reliable and available applications. In fact, Amazon Simple Queuing Service (SQS) and Amazon Simple Storage Service (S3) were one of the first services to be offered by Amazon before announcing the wildly successful Elastic Compute Cloud (EC2). Storage offered in the form of Amazon S3 is very popular among developers and startups to tackle the ever-growing needs of data driven applications. SQS is leveraged by many applications to decouple the dependencies and to achieve the scale of web applications.
The 1-Click deployment of software stack offered on the AWS Marketplace pretty much runs everything on a single EC2 instance. By default, the database and other persistence dependent services are confined to the ephemeral storage or instance storage of the EC2 instance. This is a very risky proposition as the data will be lost completely in the case of an instance failure. I wouldn’t be comfortable even running a non mission-critical application like a WordPress blog on EC2 without attaching an EBS volume. Launching a LAMP or Tomcat stack with 1-Click is great for a small proof-of-concept or a demo but no one would attempt this for a production application. Moving to the Cloud is not just about forklifting an app from on-premise server or a hoster to a VM. It is definitely much more than that! AWS Marketplace squarely focuses just on compute by launching an EC2 instance with pre-configured stack without considering any of the essential building block services like storage, networking and databases.
What happened to the Design for Failure mantra?
Dr. Werner Vogels, CTO of Amazon is the biggest proponent of Design for Failure – a pattern to architect Cloud applications to avoid single point of failure. AWS has a variety of services in the form of EIP, SQS, SNS, EBS, ELB, Multi-AZ and CloudWatch that help customers build applications that can handle failures gracefully. The biggest challenge for AWS has been to educate and convince customers to build applications based on the Design for Failure paradigm. This not only turns the Cloud applications to be fault tolerant, but also helps AWS offer more stickiness and additional value to its customers. Based my experience, I have noticed that a majority of AWS customers just go live with one Amazon EC2 instance. This doesn’t really make the applications reliable and makes it hard to recover from the outages. Ironically, AWS Marketplace indirectly encourages the customers to go live with their app running on a single EC2 instance without even launching instances across multiple Availability Zones running behind an ELB. This level of simplification is acceptable from an entry level Cloud provider or a hoster who just started offering Public Cloud. But as an industry leader, AWS cannot oversimplify Cloud deployments by luring customers with the 1-Click deployment marketing promise. It would have been extremely useful had AWS also published CloudFormation templates on the Marketplace for deploying scalable web applications with complete integration with EBS, ELB, AutoScale and Multi-AZ RDS.
Impact of Marketplace on current API and Tools
Without highlighting the changes and the implications of dealing with the Marketplace AMIs, AWS has modified existing EC2 API and tools. For example, the Amazon EC2 instances launched through the Marketplace cannot be added to an Elastic Loadbalancer. I attempted to launch 2 instances of the free Tomcat 6.0/MySQL Stack provided by OpenLogic and adding them to an Elastic Loadbalancer. ELB threw an error and refused to add the instances. This is a huge limitation for any real world web application that intends to run on a Tomcat instance launched via the Marketplace. I wouldn’t be comfortable running my web application in just one instance without any possibility of scaling out in the future.
Similarly, you cannot attach the EBS root volume of an instance launched via the Marketplace as a non-root device to another instance. This is a very common scenario for EC2 customers. When an EBS backed EC2 instance crashes, customers typically try to attach the EBS root volume of the faulty EC2 instance to a healthy instance to recover the data. This doesn’t work in the case of an EC2 instance launched based on the Marketplace AMI. I emulated the crash in one of the two EC2 instances running the Tomcat stack and force-detached the root EBS volume. When I tried attaching the root EBS volume to another instance, I saw an error that mentioned that the root EBS of an AMI belonging to the Marketplace couldn’t be attached to another instance! This seriously conflicts with the best practices of running applications on EC2.
The above two limitations question the value of AWS Marketplace for serious deployments.
While AWS Marketplace is a great move, it is definitely not meant for customers with complex deployment architectures on Cloud.
- Janakiram MSV, Chief Editor, CloudStory.in