
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
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.






