Amazon EC2 pioneered the cloud computing IaaS layer today. VMware vCloud Express recently entered the market. Many developers naturally are interested in how the two offerings compare – and differ – at the API level.
In this blog, I’ll compare the two APIs to help developers make better decisions about which API best meets your needs. This is not intended to be a full comparison but a high level summary. For details, you should check out their API specifications(VMware vCloud API, Amazon EC2 API).
These two APIs are both designed to help developers manage IaaS cloud infrastructure. To many users, the two APIs are very similar. Viewed from the highest level, each can be used to:
- Program with REST interfaces
- Create new virtual machines
- Manage the lifecycles of the virtual machines
- Manage networking, etc.
- Manage virtual machine templates (a.k.a AMI in EC2)
- List the inventories and template catalog
When we come down to the ground level, there are many differences. Let’s go over the major differences here:
- Target Audiences. EC2 is designed for single accounts and vCloud Express is designed for enterprises, SMBs and single user accounts. This is important because it affects the API design decisions.
- Concept Model. With #1 in mind, you will find vCloud APIs include a set of APIs to manage the inventory structures and users, which you don’t need in EC2. vCloud APIs consist of two set of APIs: user level APIs, similar to EC2; and an administration API.
- VM Group. EC2 can manage only one VM; vCloud can manage a group of VMs called vApp as a solution. When you have one VM in the vApp, they are the same.
- Flexibility. EC2 predefines seven types (changing over the time) of configurations with memory, storage, IO capabilities combined; vCloud relies on the OVF open standard and you can have as many configurations as you want.
- Persistence. EC2 instances don’t persist after powering off. You have to use either S3 or EBS to persist your data. vCloud vApps persist despite the power state change.
- Openness. EC2 is a proprietary API while vCloud has been submitted to DMTF with other industry leaders.
There are some implicit differences. For example, Amazon EC2 manages XEN-based infrastructures and vCloud manages vSphere based ones. Because this detail is more about implementation than interfaces, we don’t list it above. Things can change as well. Amazon may choose to implement the open vCloud API on XEN someday. Who knows?