In 2007, EC2 was opened to everyone, but it took more than a year before AWS an-
nounced general availability, including SLA. There were some very important features
added in the meantime, most of them as a result of working with the initial community
of EC2 users. During this period of refining EC2, AWS earned the respect of the de-
velopment community. It showed that Amazon listened and, more importantly, cared.
And this is still true today. The Amazon support forum is perhaps its strongest asset.
By offering computing capacity per hour, AWS created elasticity of infrastructures from
the point of view of the application developer (which is also our point of view.) When
it was this easy to launch servers, which Amazon calls instances, a whole new range of
applications became reachable to a lot of people. Event-driven websites, for example,
can scale up just before and during the event and can run at low capacity the rest of the
time. Also, computational-intensive applications, such as weather forecasting, are
much easier and cheaper to build. Renting one instance for 10,000 hours is just as cheap
as renting 10,000 instances for an hour.
Very Scalable Data Store
Amazon’s big system is decoupled with the use of SQS and S3. Components can com-
municate effectively using queues and can share large amounts of data using S3. But
these services are not sufficient as glue between the different applications. In fact, most
of the interesting data is structured and is stored in shared databases. It is the relational
database that dominates this space, but relational databases are not terribly good at
scaling, at least for commodity hardware components. Amazon introduced Relational
Database Server (RDS) recently, sort of “relational database as a service,” but its own
problem dictated that it needed something else first.
Although normalizing data is what we have been taught, it is not the only way of han-
dling information. It is surprising what you can achieve when you limit yourself to a
searchable list of structured records. You will lose some speed on each individual
transaction because you have to do more operations, but you gain infinite scalability.
You will be able to do many more simultaneous transactions. Amazon implemented
this in an internal system called Dynamo, and later, AWS launched
Amazon SimpleDB.
It might appear that the lack of joins severely limits the usefulness of a database, espe-
cially when you have a client-server architecture with dumb terminals and a mainframe
server. You don’t want to ask the mainframe seven questions when one would be
enough. A browser is far from a dumb client, though. It is optimized to request multiple
sources at the same time. Now, with a service specially designed for many parallel
searches, we have a lot of possibilities. By accessing a user’s client ID, we can get her
wish list, her shopping card, and her recent searches, all at the same time.
From 0 to AWS | 5
www.allitebooks.com