What is cloud computing? The basic idea is to have an abstracted model to separate physical IT infrastructure from logical IT infrastructure. Think about the OSI-Layer model and map it to the various infrastructure sets. (e.g. A customer is interested in the availability of a service. He doesnt care about the availability of the exact physical system.) This is called “Infrastructure as a service” short: IaaS

There are other aspects in cloud computing, which provide PaaS (Platform as a Service, e.g. Hosting) or SaaS (Software as a Service, e.g. Salesforce). Since EC2 allows logical
Since EC2 envirements allow a massive scaling of logical infrastructure, often the term “elastic” is used to describe parts of this technology.

EC2 compatible solutions (e.g. Eucalyptus and UEC) provide IaaS Services. The logical it is split into several components:

  • A Cloud Controller: The frontend coordinating everything. It’s accessed by an API, on the client side there are the ec2 tools on the shell or plugins like elasticfox for firefox.
  • A Storage Controller: This unit provides all the storage for the cloud. The storage comes in form of S3 which is also accessible over the web by API tools. It stores files as “Objects” in a “Bucket” objects can be made into “Bundles” by adding a prefix in front of their name. Another form of storage provided is EBS (Elastic Block Storage), which are partition images on the Storage controller, accessible by virtual instances (see below).
  • A Cluster Controller (Eucalyptus term, Amazon refers to clusters as “regions”): This unit controls the physical hardware and network configuration in the cluster.
  • Cloud Nodes: The physical servers running the cloud infrastructure.

The logical infrastructure built in the cloud consists of virtual servers, the so called instances. Instances are stored in form of templates. Every instance launched is started from the template, and looses all changes on termination. So specific configurations and data have to be stored in S3 or EBS. This seems a weird paradigm change at first, but makes perfectly sence, once you look at the migration paths available: Any kind of instance can be upgraded by upgrading and testing the template and then relaunching the instances. This massively reduces migration and administration cost, and makes this tasks just… elastic!