ebay-case-study.ppt
Transcript of ebay-case-study.ppt
![Page 1: ebay-case-study.ppt](https://reader036.fdocuments.us/reader036/viewer/2022062514/55838902d8b42a282c8b49c4/html5/thumbnails/1.jpg)
eBay Case Study
Jeremy Kraybill & Jeremy Thomerson
![Page 2: ebay-case-study.ppt](https://reader036.fdocuments.us/reader036/viewer/2022062514/55838902d8b42a282c8b49c4/html5/thumbnails/2.jpg)
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](https://reader036.fdocuments.us/reader036/viewer/2022062514/55838902d8b42a282c8b49c4/html5/thumbnails/3.jpg)
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](https://reader036.fdocuments.us/reader036/viewer/2022062514/55838902d8b42a282c8b49c4/html5/thumbnails/4.jpg)
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](https://reader036.fdocuments.us/reader036/viewer/2022062514/55838902d8b42a282c8b49c4/html5/thumbnails/5.jpg)
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](https://reader036.fdocuments.us/reader036/viewer/2022062514/55838902d8b42a282c8b49c4/html5/thumbnails/6.jpg)
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](https://reader036.fdocuments.us/reader036/viewer/2022062514/55838902d8b42a282c8b49c4/html5/thumbnails/7.jpg)
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](https://reader036.fdocuments.us/reader036/viewer/2022062514/55838902d8b42a282c8b49c4/html5/thumbnails/8.jpg)
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](https://reader036.fdocuments.us/reader036/viewer/2022062514/55838902d8b42a282c8b49c4/html5/thumbnails/9.jpg)
Database build
![Page 10: ebay-case-study.ppt](https://reader036.fdocuments.us/reader036/viewer/2022062514/55838902d8b42a282c8b49c4/html5/thumbnails/10.jpg)
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](https://reader036.fdocuments.us/reader036/viewer/2022062514/55838902d8b42a282c8b49c4/html5/thumbnails/11.jpg)