InfoQ

Interview

Randy Shoup Discusses the eBay Architecture

Interview with Randy Shoup by Floyd Marinescu on Jun 05, 2008 12:00 PM

Community
Architecture,
SOA
Topics
Fault Tolerance,
Design,
Search,
Performance & Scalability,
Enterprise Architecture,
Grid Computing
Tags
QCon San Francisco 2007,
ACID,
eBay,
C++,
Grid Computing,
Design Patterns,
Distributed Programming,
QCon,
Deployment
Summary
In this interview from QCon San Francisco 2007, Randy Shoup discusses the architecture of eBay. Topics discussed include eBay's architectural principles, horizontal and vertical partitioning, ACID vs. BASE, handling data inconsistency, distributed caching, updating eBay on the fly, architectural and coding standards, eBay's search infrastructure, grid computing, and SOA.

Bio
Randy Shoup is a Distinguished Architect in the eBay Marketplace Architecture group. Since 2004, he has been the primary architect for eBay's search infrastructure. Prior to eBay, Randy was Chief Architect at Tumbleweed Communications, and has also held a variety of software development and architecture roles at Oracle and Informatica.
We are here at QCon with Randy Shoup from eBay. Randy can you tell us a bit about yourself and your role at eBay?
Tell us a bit about eBay's architecture, maybe from a high level, things that people may not know.
What are some of the architecture principles that you follow as a standard at eBay?
Considering the complexity and traffic volume of eBay, where are some design areas where you had to go against the grain of current thinking?
How do you detect when there's inconsistencies and what are some of the compensation strategies that you do?
So you described how partitioning works at the database level, but I am curious how that works at the application level. What kind of programming model have you exposed to your developers and do they even see that? How does that work?
Do you do distributed caching?
I don't quite understand why you are not doing any caching within the logical functional areas where you have a certain set of machines that are accessing a certain partition of data. If they are the sole accessor of that data why aren't you caching to get better performance there, in-memory access speeds?
So on to Scott's question: how do you deal with updates to the site, it's always running, what's your new release strategy?
How much J2EE do you use?
What kind of standards, code standards or architectural standards -- you had mentioned some principles at the beginning but perhaps a little lower level -- do you apply across all the organization?
Oh, great, ok we're honoured! So how do you enforce some of these standards, do you use things like static analysis tools, or is it just good faith or...?
So you're focused on the search group. Can you tell us more about how eBay approaches search?
How do you scale search? There is so much data underlying that, how do you keep it available and how do you keep it performant?
Looking at the Java platform, what do you think it needs?
What about grid computing? It seems that eBay would be naturally interested in this movement. What are you guys do with grid, or what do you think about it?
But you don't have any architectural plans at the moment?
At previous QCons we heard Amazon and Yahoo talk about how they decompose their architecture into services, where each service is then backed by some physical machines and the data that it accesses as well, and the site is composed of a true SOA, within an application boundary however. What do you think of that approach and is it different from what you are doing?
What is it about the Service-Oriented Architecture that, at a hundred times greater volume, you see as being something you would need to move to?
Final question is, What are your two favorite computer books?
show all  show all

No comments

Reply

Exclusive Content

Concurrency: Past and Present

Brian Goetz discusses the difficulties of creating multithreaded programs correctly, incorrect synchronization, race conditions, deadlock, STM, concurrency, alternatives to threads, Erlang, Scala.

ActionScript 3 for Java Programmers

Often the hardest part of changing technologies is language syntax differences. This new article provides Java developers with a transition guide to Actionscript which forms the foundation of Flex.

Neal Ford On Programming Languages and Platforms

Neal Ford talks about having multiple languages running on one of the two major platforms: Java and .NET. He also presents the advantages offered by Ruby compared to static languages like Java or C#.

Future Directions for Agile

David Anderson talks about the history of Agile, the current status of it and his vision for the future. The role of Agile consists in finding ways to implement its principles.

Nick Sieger on JRuby

Nick Sieger talks about the future of JRuby, Java Integration, and his work on JEE deployment tools for Ruby on Rails like Warbler.

Rustan Leino and Mike Barnett on Spec#

Rustan Leino and Mike Barnett of Microsoft Research discuss the technology in Spec# and its futures.

10 Ways to Screw Up with Scrum and XP

Henrik Kniberg talks about 10 possible reasons to fail while doing Scrum and XP. Maybe the team does not have a definition of what Done means to them, or they don't know what their velocity is.

Tips from a Top Sports Team Coach

This article outlines 9 principles Marc Lammers discovered while building the world’s best field hockey team, mapping them to software development practices.