09 December 2009

eBay Architecture

Recently I was curious to find out how big sites like eBay are build and running. After a quick research I was able to find some quite interesting articles.

I was surprised to find out that eBay doesn't use transactions. As well they do not use foreign keys in their database (the same thing as the SharePoint_AdminContent database). It looks like this is the latest trend ;-)

If you are curious like me, take a look at the following:

Randy Shoup on eBay's Architectural Principles
eBay Architectural Strategies, Patterns, and Forces
Software Engineering Radio: eBay's Architecture Principles with Randy Shoup
Scalability Best Practices: Lessons from eBay
Dan Pritchett on Architecture at eBay
You Scaled Your What?
High Scalability: eBay Architecture


Galcho said...

I was watching a presentation from their architect and the quote to take away was "If you go on internet scale everything fails" ;)

Foreign keys are good in developmnet phase and for ensuring DB consistency if used by multiple apps. If used only by one app it is only a delay since DB needs to ensure the foreign row exists.

Regarding transactions on internet scale always think about (geo) distributed transactions ;) One can image how slow they would be

Stephan Zahariev said...

I couldn't agree more. These are maybe the main factors considered by the eBay architects.

However I always thought that transactions (not distributed geo transactions) are mandatory for applications running financial operations. That's why I was surprised that eBay are not utilizing them. One of the presentations goes beyond the eBay architecture and gives the hint that PayPal uses transactions.

Thanks for the coment. I'm always open for discussions like this.