Scalability at Amazon (notes)
Werner Vogels, CTO at Amazon.com spoke at Supernova 2006 on the topic of Scalability at Amazon and the talk is available as a podcast at IT Conversations (thanks to James Governor for the link).
I made some notes as I listened this morning and thought I'd share:
A services business. Amazon.com is a platform. NBA.com is an application built on Amazon.com
If your online business is successful and you experience a 1000-fold increase in traffic you want your site to stay up! Building, operating and maintaining infrastructure that can be ‘always on’ and scale and is hard. Wouldn't it be nice to pay-as-you-go, rather than investing your capital up-front?
You need infrastructure that can incrementally scale. In 1995 Amazon.com had 1m books in its catalogue. That was the beginning. Now it has 35 different stores, not just books. Growing our business is not just a matter of buying bigger databases. Amazon has gone beyond that point.
Internally, Amazon is now a completely service oriented architecture (SOA).
A single Amazon.com page is made up of 100 to 150 individual web services.
What does 'scalability' actually mean? It means that if you add resources to the system the performance needs to increase proportional to the resources that you’ve added. Many of the academic algorithms don’t work like this. Many of the two-phase commit traditional transactional stuff doesn’t work like this. In general, the load on the network relevant to the application increases more than the magnitude of n. It doesn’t mean just handling more requests, it also means handling larger datasets. It needs to be able to add nodes to the system to achieve fault tolerance. It means that if you add bigger nodes you should be able to take advantage of more processing and more memory. It means that the more bigger nodes you add, the fewer people you require to actually maintain them and that as you add more nodes that system should not become more unstable. It means being more cost effective.
Target came to us and asked 'we really love what you've done with Amazon - can you do that for us?' Our interaction with Target made us realize we could become a platform rather than just a single application. Different sets of Amazon Enterprise web services: content generation and discoverability; identity; inventory management; fulfillment and customer service; order processing, payment and fraud protection. You can mix and mash these services.
Those services that are consumed by partners are guaranteed as 'always on'.
Cost effectiveness is scale.
Unexpected uses and applications built on top of our web services that we couldn't predict.
Our goal was expose all the atomic pieces that Amazon was really good at and to do that at scale and as web services.