ebay-case-study.ppt

11
eBay Case Study Jeremy Kraybill & Jeremy Thomerson

Transcript of ebay-case-study.ppt

Page 1: ebay-case-study.ppt

eBay Case Study

Jeremy Kraybill & Jeremy Thomerson

Page 2: ebay-case-study.ppt

CARad – Who Are We?

Started as an auction site in competition with eBay,before eBay had really developed its Motors division.

Grew to be the #1 tool for listing vehicles oneBay Motors

Page 3: ebay-case-study.ppt

CARad Overview

• Listing and vehicle management tools for vehicle sellers

• CARad.com: focused on dealers

• CARad Express: focused on individuals

• Generally 4,000-5,000 live listings at any given time on eBay Motors

• 70% of users are dealers

• Application hosted out of eBay Denver hosting facility

• Originally written in Macromedia ColdFusion

• Migration of all application functionality over to Java with Spring / Tapestry / Hibernate / Freemarker infrastructure

Acquired by eBay in March

2003

Page 4: ebay-case-study.ppt

Functional Architecture

CARadapplication

code

APIparser

emailparser

data feedprocesses

DB

CARadapplication

code

App functionality View Item functionality

DA sites ebay. photos. gallery. garage.

outboundAPI calls

timeduploader

outboundemails

contactinfo tool

eBayAPI

EPS

world

eBayAPI

datapartners

world

www.

inbound datainbound data outbound dataoutbound data

user functionality

VBCF Java ext.

legend

outboundAPI calls

eBayAPI

Page 5: ebay-case-study.ppt

Hibernate

CARad Java Architecture

DB

Spring ORM

Hibernate Mappings

DAO Layer

Domain Model

Services Layer

Web Components

Pages

Engine

SOAP interface

Offlineapplications

Hibernate

Spring ORM

Hibernate Mappings

DAO Layer

Domain Model

Services Layer

Servlet container

Tapestry Axis

Spring

Spring

Page 6: ebay-case-study.ppt

Build / Test Environments

CVS

individualdevelopermachine

personaltest

environments(local & shared)

anthillcontinuous

builds(build svr)

continuousregression

tests(JUnit /

JWebUnit etc)

ProductionFTP server

staging production

anthillofficial builds

(build svr)

Page 7: ebay-case-study.ppt

Modular overrides in Spring

Hierarchical Spring contexts

Need for overridden beans within the context at some levels.

Define base configurations at lower modules that can be overridden at higher level.

Test configurations can also override module-config on each level to provide mocked out services, etc…

internal.platform: abstract session factories

declarative transaction policieslogging

internal.web internal.apps

carad.com.apicarad.com.fsbocarad.com.dealer

internal.domain: servicesDAOs

internal.domaintesting config

internal.platformtesting config

Our top level applications have the need to override beans that are used by beans in lower modules.

For example, our US site may need to add a page into a list of pages defined within our standard web flow, whereas another country’s site may not need to override that standard page flow.

Page 8: ebay-case-study.ppt

Switching applications at runtime

As we build out many different applications, we develop the need to be able to quickly change between them for development and testing of shared code and configuration.

We use a Spring service to be able to switch applications at runtime (development / regression) without restarting our web server.

ContextLocatorsetContextName(String)

getContext()

ContextSingletonBeanFactoryLocator

Other CountriesOther VerticalsMotors (US)

Page 9: ebay-case-study.ppt

Database build

Page 10: ebay-case-study.ppt

Distributed regression

Cluster

Primary Server(Job Dispatching)(Status Reporting)

Slave Server Slave ServerSlave Server

Cluster

Slave Server Slave ServerSlave Server

DeveloperWorkstation

DeveloperWorkstation

DeveloperWorkstation

Page 11: ebay-case-study.ppt