Platinum Sponsors

SUN

ELCA

Gold Sponsors

Silver Sponsors

Partners

Partner events

Randy Shoup

Randy Shoup

(3680) eBay's Architectural Principles: Architectural Strategies, Patterns, and Forces for Scaling Java

Technical long talk 50 min

Thursday, 2008-06-26, 15:00 - 15:50, Arena 5

Randy Shoup - eBay (speaker)

Topics

Download the presentation

Abstract

As the largest auction site in the world, eBay faces a unique set of scaling 
challenges.  eBay handles well over 1 billion page views per day, coming from 
250 million registered users trading roughly USD1812 in merchandise every 
second.  At any given moment, there are over 100 million items for sale in over 
50.000 categories, across 38 countries, in seven languages.  At the same time, 
the site is in a near-constant state of evolution, with regular updates of more 
than 100.000 lines of code every two weeks, comprising over 300 new features 
every quarter.  All this is done with no planned downtime, in a 24x7x365 
environment.

This session covers the fundamental architectural principles eBay has used to 
grow and evolve its Java-based infrastructure to massive scale.  It covers the 
forces (or "-ilities") architects need to contend with and design for 
- scalability, availability, manageability, etc. It outlines eBay's core set of 
architectural principles which meet - and trade off - those forces, describes 
reusable patterns for each strategy, and follows with specific examples from the 
eBay infrastructure which illustrate the patterns in action.

eBay constantly needs to consider the following architectural forces:

* Scalability:  Resource usage should scale linearly as load increases.
* Availability:  Applications and infrastructure should be resilient to failure, 
should gracefully degrade when failure occurs, and should be able to recover as 
rapidly as possible.
* Latency:  Applications need to make the appropriate trade-offs of latency, 
both as experienced by users and by data updates.
* Manageability:  Applications need to be simple, maintainable, and 
diagnosable.
* Cost:  Applications need to be cost-effective, both in terms of development 
effort and complexity, as well as operational cost (TCO).
This session introduces the following four architectural principles, explores 
associated design patterns, and gives specific examples of applying those 
patterns at eBay:

Principle 1:  Partition Everything

Split every problem into manageable chunks, by data, by load, and/or by usage 
characteristics.  

* Pattern:  Functional Segmentation
* Pattern:  Horizontal Split

Principle 2:  Async Everywhere

Move as much processing as possible into asynchronous flows.  Where possible, 
integrate disparate components in the infrastructure asynchronously as opposed 
to synchonously.

* Pattern:  Message Dispatch
* Pattern:  Periodic Batch

Principle 3:  Automate Everything

Prefer adaptive and automated systems to manual systems.

* Pattern:  Adaptive Configuration
* Pattern:  Machine Learning

Principle 4:  Remember Everything Fails

Build all systems to be tolerant of failure.  Assume every operation will fail, 
and that every resource will be unavailable.  Detect failure as soon as 
possible, and recover from failure as rapidly as possible.

* Pattern:  Failure Detection
* Pattern:  Rollback
* Pattern:  Graceful Degradation

By applying these principles, eBay has been able to grow and evolve its 
Java-based infrastructure to massive scale.

Media Partners

APRESS
inside-it
netzwoche
developpez
MokaByte