SlideShare a Scribd company logo
The eBay Architecture Striking a balance between site stability, feature velocity, performance, and cost  Presented By:  Randy Shoup and Dan Pritchett Date:  February 9, 2007 Amazon Friday Learning Series
What we ’re up against eBay users worldwide trade more than $1812 worth of goods every second   eBay averages over 1 billion page views per day At any given time, there are approximately 100 million listings on the site eBay stores over 2 Petabytes of data – over 200 times the size of the Library of Congress! The eBay platform handles 3 billion API calls per month eBay manages … Over 212,000,000 registered users Over 1 Billion photos In a dynamic environment 300+ features per quarter We roll 100,000+ lines of code every two weeks   In 33 countries, in seven languages, 24x7 >26 Billion SQL executions/day! An SUV is sold every 5 minutes A sporting good sells every 2 seconds Over ½ Million pounds of Kimchi are sold every year!
Site Statistics: in a typical  day … June 1999 Q3 2006 Growth Outbound Emails 1 M 35 M 35x Total Page Views 54 M 1 B 19x Peak Network Utilization 268 Mbps 16 Gbps 59x API Calls 0 100 M N/A Availability ~97% 99.94% 50x 43 mins/day 50 sec/day
eBay ’s Exponential Growth 212 Million Users 1999 2000 2001 2002 2003 1998 2004 2005 105 Million Listings 2006
Velocity of eBay -- Software Development Process Our site is our product.  We change it incrementally through implementing new features. Very  predictable  development process – trains leave on-time at regular intervals (weekly). Parallel development process with significant output -- 100,000 LOC per release. Always on – over 99.94% available. 6M LOC 100K LOC/Wk 99.94% 212M Users 300+ Features Per Quarter All while supporting a 24x7 environment
Systemic Requirements Maintainability   Faster Product Delivery Enable rapid business innovation Enable seamless growth Deliver quality functionality at accelerating rates Architect for the future 10X Growth Availability Reliability Massive Scalability Security
Architectural Lessons Scale Out, Not Up Horizontal scaling at every tier. Functional decomposition. Prefer Asynchronous Integration Minimize availability coupling. Improve scaling options. Virtualize Components Reduce physical dependencies. Improve deployment flexibility. Design for Failure Automated failure detection and notification. “ Limp mode” operation of business features.
Ongoing Platform Evolution … V1 V2.0 V2.4 V3 V2.3 eBay architecture versions Registered Users 212M V4 V2.5
V1.0  1995-September 1997 Built over a weekend in Pierre Omidyar ’ s living room in  1995 System hardware was made up of parts that could be bought at Fry's Every item was a separate file, generated by a Perl script No search functionality, only category browsing This system maxed out at 50,000 active items
V2.0  September 1997- February 1999 3-tiered conceptual architecture (separation of bus/pres and db access tiers) 2-tiered physical implementation (no application server) C++ Library (eBayISAPI.dll) running on IIS on Windows Microsoft index server used for search Items migrated from GDBM to an Oracle database on Solaris
V2.1  February 1999-November 1999 Servers grouped into pools (small soldiers) Resonate used for front end load balancing and failover Search functionality moved to the Thunderstone indexing system  Back-end Oracle database server scaled vertically to a larger machine (Sun E10000)
V2.3  June 1999-November 1999 Second Database added for failover CGI pools, Listings, Pages, and Search continued to scale horizontally However … By November 1999, the database servers approached their limits of physical growth.
V2.4  November 1999-April 2001 Database "split" technology. Logically partition database into separate instances. Horizontal scalability through 2000, but not beyond.
V2.5  April 2001  –  December 2002 November, 1999 December, 2002 Horizontal scalability through database splits Items split by category SPOF elimination  Bear Bull
Now that we have the Database taken care of…. Application Server Monolithic 2-tier Architecture 3.3 Million Line C++ ISAPI DLL (150MB binary) Hundreds of developers, all working on the same code Hitting compiler limits on number of methods per class (!!)
V3 – Replace C++/ISAPI with Java  2002-present Re-wrote the entire application in J2EE application server framework Gave us a chance to architect the code for reuse and separation of duties Leveraged the MSXML framework for the presentation layer Minimizing the development cost for migration Implemented a development kernel as a foundation for programmers Allowed for rapid training and deployment of new engineers
Scaling the Data Tier
Scaling the Data Tier: Overview Spread the Load Segmentation by function. Horizontal splits within functions. Minimize the Work Limit in database work The Tricks to Scaling How to survive without transactions. Creating alternate database structures.
Scaling the Data Tier:  Functional Segmentation Segment databases into functional areas User hosts Item hosts Account hosts Feedback hosts Transaction hosts And about 70 more functional categories Rationale Partitions data by different scaling / usage characteristics Supports functional decoupling and isolation
Scaling the Data Tier:  Horizontal Split Split databases horizontally by primary access path. Different patterns for different use cases Write Master/Read Slaves Segmentation by data; Two approaches Modulo on a key, typically the primary key. Simple data location if you know the key Not so simple if you don ’t. Map to data location Supports multiple keys. Doubles reads required to locate data. SPOF elimination on map structure is complex. Rationale Horizontal scaling of transactional load. Segment business impact on database outage.
Scaling the Data Tier:  Logical Database Hosts  Separate Application notion of a database from physical implementation Databases may be combined and separated with no code changes Reduce cost of creating multiple environments (Dev, QA, …) DB2 DB3 DB1 Application Servers Attributes Catalogs Rules CATY 1..N User Account Feedback Misc API SCRATCH
Scaling the Data Tier:  Minimize DB Resources No business logic in database No stored procedures Only very simple triggers (default value population) Move CPU-intensive work to applications Referential Integrity Joins Sorting Extensive use of prepared statements and bind variables
Scaling the Data Tier:  Minimize DB Transactions Auto-commit for vast majority of DB writes Absolutely no client side transactions Single database transactions managed through anonymous PL/SQL blocks. No distributed transactions. How do we pull it off? Careful ordering of DB operations Recovery through Asynchronous recovery events Reconciliation batch Failover to async flow Rationale Avoid deadlocks Avoid coupling availability Update concurrency Seamless handling of splits
Scaling the Application Tier
Scaling the Application Tier – Overview Spread the Load Segmentation by function. Horizontal load-balancing within functions. Minimize dependencies  Between applications Between functional areas From applications to data tier resources Virtualize data access
Scaling the Application Tier – Massively Scaling J2EE Step 1 - Throw out most of J2EE eBay scales on servlets and a rewritten connection pool. Step 2 – Keep Application Tier Completely Stateless No session state in application tier Transient state maintained in cookie or scratch database Step 3 – Cache Where Possible Cache common metadata across requests, with sophisticated cache refresh procedures Cache reload from local storage Cache request data in ThreadLocal
Scaling the Application Tier – Tiered Application Model BO/BOF AO/AOF (View) Business Logic XML Model Building Logic Command (View) DO/DAO XSL Business Tier Presentation Tier Integration Tier Data Access Layer (DAL) Strictly partition application into tiers Presentation Business Integration
Scaling the Application Tier – Data Access Layer (DAL) What is the DAL? eBay ’s internally-developed pure Java OR mapping solution. All CRUD (Create Read Update Delete) operations are performed through DAL ’s abstraction of the data. Enables horizontal scaling of the Data tier without application code changes Dynamic Data Routing abstracts application developers from  Database splits Logical / Physical Hosts Markdown Graceful degradation Extensive JDBC Prepared Statements cached by DataSources
Scaling the Application Tier – Vertical Code Partitioning Partition code into functional areas Application is specific to a single area (Selling, Buying, etc.) Domain contains common business logic across Applications Restrict inter-dependencies Applications depend on Domains, not on other Applications No dependencies among shared Domains  Core-Domain PersonalizationDomain LookupDomain UserValidationDomain SharedBillingDomain SharedSearchDomain API Domain SharedBuyingDomain myEbayDomain UserApplication BuyingDomain BillingDomain SearchDomain SellingDomain UserDomain SellingApplication BuyingApplication SearchApplication BillingApplication Applications Shared Domains
Scaling the Application Tier – Functional Segmentation IIS IIS ViewItem Pool   http://cgi.ebay.com … … … User Acct Caty20+ Caty1 AppServers … IIS IIS CGI0 CGI5 AS AS AS AS SYI Pool  http://cgi5.ebay.com … IIS WebServers Load Balancing Load Balancing Load Balancing Segment functions into separate application pools Minimizes / isolates DB dependencies Allows for parallel development, deployment, and monitoring AS AS
Scaling the Application Tier – Platform Decoupling Domain Partitioning for Deployment Decouple non-transactional domains from transactional flows Search and billing domains are not required in transaction processing. Fraud domain is required but easier to manage as separate deployment. Integrate with a combination of asynchronous EDA and synchronous SOA patterns. Transaction Platform Billing Search Fraud EDA EDA SOA
Scaling Search
Scaling Search – Overview In 2002, eBay search had reached its limits Cost of scaling third-party search engine had become prohibitive 9 hours to update the index Running on largest systems vendor sold – and still not keeping up eBay has unique search requirements Real-time updates Update item on any change (list, bid, sale, etc.) Users expect changes to be visible immediately  Exhaustive recall Sellers notice if search results miss any item Search results require data ( “histograms”) from every matching item Flexible data storage Keywords Structured categories and attributes No off-the-shelf product met these needs
Scaling Search – Voyager Real-time feeder infrastructure Reliable multicast from primary database to search nodes Real-time indexing Search nodes update index in real time from messages In-memory search index Horizontal segmentation Search index divided into N slices ( “columns”) Each slice is replicated to M instances ( “rows”) Aggregator parallelizes query over all N slices, load-balances over M instances Caching Cache results for highly expensive and frequently used queries
Scaling Search – Voyager
Scaling Operations
Scaling Operations – Code Deployment Demanding Requirements Entire site rolled every 2 weeks All deployments require staged rollout with immediate rollback if necessary. More than 100 WAR configurations. Dependencies exist between pools during some deployment operations. More than 15,000 instances across eight physical data centers. Rollout Plan Custom application that works from dependencies provided by projects. Creates transitive closure of dependencies. Generates rollout plan for Turbo Roller. Automated Rollout Tool ( “Turbo Roller”) Manages full deployment cycle onto all application servers. Executes rollout plan. Built in checkpoints during rollout, including approvals. Optimized rollback, including full rollback of dependent pools.
Scaling Operations – Monitoring Centralized Activity Logging (CAL) Transaction oriented logging per application server Transaction boundary starts at request. Nested transactions supported. Detailed logging of all application activity, especially database and other external resources. Application generated information and exceptions can be reported. Logging streams gathered and broadcast on a message bus. Subscriber to log to files (1.5TB/day) Subscriber to capture exceptions and generate operational alerts. Subscriber for real time application state monitoring. Extensive Reporting Reports on transactions (page and database) per pool. Relationships between URL ’s and external resources. Inverted relationships between databases and pools/URL ’s. Data cube reporting on several key metrics available in near real time.
Recap Enabling seamless growth Massive Database and Code Scalability Delivering quality functionality at accelerating rates Further streamline and optimize the eBay development model Enabling rapid business innovation Maintainability Faster Product Delivery Architecting for the future 10X Growth Availability Reliability Massive Scalability Security
Ad

More Related Content

What's hot (20)

Microservices Architectures: Become a Unicorn like Netflix, Twitter and Hailo
Microservices Architectures: Become a Unicorn like Netflix, Twitter and HailoMicroservices Architectures: Become a Unicorn like Netflix, Twitter and Hailo
Microservices Architectures: Become a Unicorn like Netflix, Twitter and Hailo
gjuljo
 
Cloud Architecture - Multi Cloud, Edge, On-Premise
Cloud Architecture - Multi Cloud, Edge, On-PremiseCloud Architecture - Multi Cloud, Edge, On-Premise
Cloud Architecture - Multi Cloud, Edge, On-Premise
Araf Karsh Hamid
 
Introduction to microservices
Introduction to microservicesIntroduction to microservices
Introduction to microservices
Paulo Gandra de Sousa
 
Cloud Native Application
Cloud Native ApplicationCloud Native Application
Cloud Native Application
VMUG IT
 
Design patterns for microservice architecture
Design patterns for microservice architectureDesign patterns for microservice architecture
Design patterns for microservice architecture
The Software House
 
Microservices Design Patterns | Edureka
Microservices Design Patterns | EdurekaMicroservices Design Patterns | Edureka
Microservices Design Patterns | Edureka
Edureka!
 
Monoliths and Microservices
Monoliths and Microservices Monoliths and Microservices
Monoliths and Microservices
Bozhidar Bozhanov
 
Microservices Docker Kubernetes Istio Kanban DevOps SRE
Microservices Docker Kubernetes Istio Kanban DevOps SREMicroservices Docker Kubernetes Istio Kanban DevOps SRE
Microservices Docker Kubernetes Istio Kanban DevOps SRE
Araf Karsh Hamid
 
Microservices, Containers, Kubernetes, Kafka, Kanban
Microservices, Containers, Kubernetes, Kafka, KanbanMicroservices, Containers, Kubernetes, Kafka, Kanban
Microservices, Containers, Kubernetes, Kafka, Kanban
Araf Karsh Hamid
 
Open shift 4 infra deep dive
Open shift 4    infra deep diveOpen shift 4    infra deep dive
Open shift 4 infra deep dive
Winton Winton
 
Why to Cloud Native
Why to Cloud NativeWhy to Cloud Native
Why to Cloud Native
Karthik Gaekwad
 
Microservice Architecture
Microservice ArchitectureMicroservice Architecture
Microservice Architecture
tyrantbrian
 
Dapr - A 10x Developer Framework for Any Language
Dapr - A 10x Developer Framework for Any LanguageDapr - A 10x Developer Framework for Any Language
Dapr - A 10x Developer Framework for Any Language
Bilgin Ibryam
 
Why Microservice
Why Microservice Why Microservice
Why Microservice
Kelvin Yeung
 
Microservice Architecture
Microservice ArchitectureMicroservice Architecture
Microservice Architecture
Nguyen Tung
 
Quarkus k8s
Quarkus   k8sQuarkus   k8s
Quarkus k8s
Georgios Andrianakis
 
Building Event Driven (Micro)services with Apache Kafka
Building Event Driven (Micro)services with Apache KafkaBuilding Event Driven (Micro)services with Apache Kafka
Building Event Driven (Micro)services with Apache Kafka
Guido Schmutz
 
The Ideal Approach to Application Modernization; Which Way to the Cloud?
The Ideal Approach to Application Modernization; Which Way to the Cloud?The Ideal Approach to Application Modernization; Which Way to the Cloud?
The Ideal Approach to Application Modernization; Which Way to the Cloud?
Codit
 
Microservices with Java, Spring Boot and Spring Cloud
Microservices with Java, Spring Boot and Spring CloudMicroservices with Java, Spring Boot and Spring Cloud
Microservices with Java, Spring Boot and Spring Cloud
Eberhard Wolff
 
Deploying your first application with Kubernetes
Deploying your first application with KubernetesDeploying your first application with Kubernetes
Deploying your first application with Kubernetes
OVHcloud
 
Microservices Architectures: Become a Unicorn like Netflix, Twitter and Hailo
Microservices Architectures: Become a Unicorn like Netflix, Twitter and HailoMicroservices Architectures: Become a Unicorn like Netflix, Twitter and Hailo
Microservices Architectures: Become a Unicorn like Netflix, Twitter and Hailo
gjuljo
 
Cloud Architecture - Multi Cloud, Edge, On-Premise
Cloud Architecture - Multi Cloud, Edge, On-PremiseCloud Architecture - Multi Cloud, Edge, On-Premise
Cloud Architecture - Multi Cloud, Edge, On-Premise
Araf Karsh Hamid
 
Cloud Native Application
Cloud Native ApplicationCloud Native Application
Cloud Native Application
VMUG IT
 
Design patterns for microservice architecture
Design patterns for microservice architectureDesign patterns for microservice architecture
Design patterns for microservice architecture
The Software House
 
Microservices Design Patterns | Edureka
Microservices Design Patterns | EdurekaMicroservices Design Patterns | Edureka
Microservices Design Patterns | Edureka
Edureka!
 
Monoliths and Microservices
Monoliths and Microservices Monoliths and Microservices
Monoliths and Microservices
Bozhidar Bozhanov
 
Microservices Docker Kubernetes Istio Kanban DevOps SRE
Microservices Docker Kubernetes Istio Kanban DevOps SREMicroservices Docker Kubernetes Istio Kanban DevOps SRE
Microservices Docker Kubernetes Istio Kanban DevOps SRE
Araf Karsh Hamid
 
Microservices, Containers, Kubernetes, Kafka, Kanban
Microservices, Containers, Kubernetes, Kafka, KanbanMicroservices, Containers, Kubernetes, Kafka, Kanban
Microservices, Containers, Kubernetes, Kafka, Kanban
Araf Karsh Hamid
 
Open shift 4 infra deep dive
Open shift 4    infra deep diveOpen shift 4    infra deep dive
Open shift 4 infra deep dive
Winton Winton
 
Microservice Architecture
Microservice ArchitectureMicroservice Architecture
Microservice Architecture
tyrantbrian
 
Dapr - A 10x Developer Framework for Any Language
Dapr - A 10x Developer Framework for Any LanguageDapr - A 10x Developer Framework for Any Language
Dapr - A 10x Developer Framework for Any Language
Bilgin Ibryam
 
Microservice Architecture
Microservice ArchitectureMicroservice Architecture
Microservice Architecture
Nguyen Tung
 
Building Event Driven (Micro)services with Apache Kafka
Building Event Driven (Micro)services with Apache KafkaBuilding Event Driven (Micro)services with Apache Kafka
Building Event Driven (Micro)services with Apache Kafka
Guido Schmutz
 
The Ideal Approach to Application Modernization; Which Way to the Cloud?
The Ideal Approach to Application Modernization; Which Way to the Cloud?The Ideal Approach to Application Modernization; Which Way to the Cloud?
The Ideal Approach to Application Modernization; Which Way to the Cloud?
Codit
 
Microservices with Java, Spring Boot and Spring Cloud
Microservices with Java, Spring Boot and Spring CloudMicroservices with Java, Spring Boot and Spring Cloud
Microservices with Java, Spring Boot and Spring Cloud
Eberhard Wolff
 
Deploying your first application with Kubernetes
Deploying your first application with KubernetesDeploying your first application with Kubernetes
Deploying your first application with Kubernetes
OVHcloud
 

Viewers also liked (20)

Pragmatic Microservices
Pragmatic MicroservicesPragmatic Microservices
Pragmatic Microservices
Randy Shoup
 
Teaching Machines to Fish -- How eBay Improves Itself
Teaching Machines to Fish -- How eBay Improves ItselfTeaching Machines to Fish -- How eBay Improves Itself
Teaching Machines to Fish -- How eBay Improves Itself
Randy Shoup
 
Best Practices for Large-Scale Websites -- Lessons from eBay
Best Practices for Large-Scale Websites -- Lessons from eBayBest Practices for Large-Scale Websites -- Lessons from eBay
Best Practices for Large-Scale Websites -- Lessons from eBay
Randy Shoup
 
Microservices Practitioner Summit Jan '15 - Microservice Ecosystems At Scale ...
Microservices Practitioner Summit Jan '15 - Microservice Ecosystems At Scale ...Microservices Practitioner Summit Jan '15 - Microservice Ecosystems At Scale ...
Microservices Practitioner Summit Jan '15 - Microservice Ecosystems At Scale ...
Ambassador Labs
 
From the Monolith to Microservices - CraftConf 2015
From the Monolith to Microservices - CraftConf 2015From the Monolith to Microservices - CraftConf 2015
From the Monolith to Microservices - CraftConf 2015
Randy Shoup
 
ebay Case Study
ebay Case Studyebay Case Study
ebay Case Study
Oksana Troshchiev, Responsable Web Marketing
 
Minimum Viable Architecture -- Good Enough is Good Enough in a Startup
Minimum Viable Architecture -- Good Enough is Good Enough in a StartupMinimum Viable Architecture -- Good Enough is Good Enough in a Startup
Minimum Viable Architecture -- Good Enough is Good Enough in a Startup
Randy Shoup
 
Microservices @ SoundCloud
Microservices @ SoundCloudMicroservices @ SoundCloud
Microservices @ SoundCloud
Bora Tunca
 
Flowcon2013 - Virtuous Cycles of Velocity: What I Learned About Going Fast at...
Flowcon2013 - Virtuous Cycles of Velocity: What I Learned About Going Fast at...Flowcon2013 - Virtuous Cycles of Velocity: What I Learned About Going Fast at...
Flowcon2013 - Virtuous Cycles of Velocity: What I Learned About Going Fast at...
Randy Shoup
 
Availability Objectives of SoundClouds Microservices
Availability Objectives of SoundClouds MicroservicesAvailability Objectives of SoundClouds Microservices
Availability Objectives of SoundClouds Microservices
Bora Tunca
 
Cloud@ebay
Cloud@ebayCloud@ebay
Cloud@ebay
Jean-Christophe "JC" Martin
 
Open stack@ebay
Open stack@ebayOpen stack@ebay
Open stack@ebay
Subbu Allamaraju
 
SoundCloud's Toolbox for Microservices
SoundCloud's Toolbox for MicroservicesSoundCloud's Toolbox for Microservices
SoundCloud's Toolbox for Microservices
Bora Tunca
 
Service Architectures At Scale - QCon London 2015
Service Architectures At Scale - QCon London 2015Service Architectures At Scale - QCon London 2015
Service Architectures At Scale - QCon London 2015
Randy Shoup
 
2011 Search Query Rewrites - Synonyms & Acronyms
2011 Search Query Rewrites - Synonyms & Acronyms2011 Search Query Rewrites - Synonyms & Acronyms
2011 Search Query Rewrites - Synonyms & Acronyms
Brian Johnson
 
Concurrency at Scale: Evolution to Micro-Services
Concurrency at Scale:  Evolution to Micro-ServicesConcurrency at Scale:  Evolution to Micro-Services
Concurrency at Scale: Evolution to Micro-Services
Randy Shoup
 
Why Enterprises Are Embracing the Cloud
Why Enterprises Are Embracing the CloudWhy Enterprises Are Embracing the Cloud
Why Enterprises Are Embracing the Cloud
Randy Shoup
 
Incubateur hec acquérir du trafic et fidéliser son audience - lancer un buz...
Incubateur hec   acquérir du trafic et fidéliser son audience - lancer un buz...Incubateur hec   acquérir du trafic et fidéliser son audience - lancer un buz...
Incubateur hec acquérir du trafic et fidéliser son audience - lancer un buz...
Guilhem Bertholet
 
API Development and Scala @ SoundCloud
API Development and Scala @ SoundCloudAPI Development and Scala @ SoundCloud
API Development and Scala @ SoundCloud
Bora Tunca
 
Ebay search
Ebay searchEbay search
Ebay search
Steve Kuntz
 
Pragmatic Microservices
Pragmatic MicroservicesPragmatic Microservices
Pragmatic Microservices
Randy Shoup
 
Teaching Machines to Fish -- How eBay Improves Itself
Teaching Machines to Fish -- How eBay Improves ItselfTeaching Machines to Fish -- How eBay Improves Itself
Teaching Machines to Fish -- How eBay Improves Itself
Randy Shoup
 
Best Practices for Large-Scale Websites -- Lessons from eBay
Best Practices for Large-Scale Websites -- Lessons from eBayBest Practices for Large-Scale Websites -- Lessons from eBay
Best Practices for Large-Scale Websites -- Lessons from eBay
Randy Shoup
 
Microservices Practitioner Summit Jan '15 - Microservice Ecosystems At Scale ...
Microservices Practitioner Summit Jan '15 - Microservice Ecosystems At Scale ...Microservices Practitioner Summit Jan '15 - Microservice Ecosystems At Scale ...
Microservices Practitioner Summit Jan '15 - Microservice Ecosystems At Scale ...
Ambassador Labs
 
From the Monolith to Microservices - CraftConf 2015
From the Monolith to Microservices - CraftConf 2015From the Monolith to Microservices - CraftConf 2015
From the Monolith to Microservices - CraftConf 2015
Randy Shoup
 
Minimum Viable Architecture -- Good Enough is Good Enough in a Startup
Minimum Viable Architecture -- Good Enough is Good Enough in a StartupMinimum Viable Architecture -- Good Enough is Good Enough in a Startup
Minimum Viable Architecture -- Good Enough is Good Enough in a Startup
Randy Shoup
 
Microservices @ SoundCloud
Microservices @ SoundCloudMicroservices @ SoundCloud
Microservices @ SoundCloud
Bora Tunca
 
Flowcon2013 - Virtuous Cycles of Velocity: What I Learned About Going Fast at...
Flowcon2013 - Virtuous Cycles of Velocity: What I Learned About Going Fast at...Flowcon2013 - Virtuous Cycles of Velocity: What I Learned About Going Fast at...
Flowcon2013 - Virtuous Cycles of Velocity: What I Learned About Going Fast at...
Randy Shoup
 
Availability Objectives of SoundClouds Microservices
Availability Objectives of SoundClouds MicroservicesAvailability Objectives of SoundClouds Microservices
Availability Objectives of SoundClouds Microservices
Bora Tunca
 
SoundCloud's Toolbox for Microservices
SoundCloud's Toolbox for MicroservicesSoundCloud's Toolbox for Microservices
SoundCloud's Toolbox for Microservices
Bora Tunca
 
Service Architectures At Scale - QCon London 2015
Service Architectures At Scale - QCon London 2015Service Architectures At Scale - QCon London 2015
Service Architectures At Scale - QCon London 2015
Randy Shoup
 
2011 Search Query Rewrites - Synonyms & Acronyms
2011 Search Query Rewrites - Synonyms & Acronyms2011 Search Query Rewrites - Synonyms & Acronyms
2011 Search Query Rewrites - Synonyms & Acronyms
Brian Johnson
 
Concurrency at Scale: Evolution to Micro-Services
Concurrency at Scale:  Evolution to Micro-ServicesConcurrency at Scale:  Evolution to Micro-Services
Concurrency at Scale: Evolution to Micro-Services
Randy Shoup
 
Why Enterprises Are Embracing the Cloud
Why Enterprises Are Embracing the CloudWhy Enterprises Are Embracing the Cloud
Why Enterprises Are Embracing the Cloud
Randy Shoup
 
Incubateur hec acquérir du trafic et fidéliser son audience - lancer un buz...
Incubateur hec   acquérir du trafic et fidéliser son audience - lancer un buz...Incubateur hec   acquérir du trafic et fidéliser son audience - lancer un buz...
Incubateur hec acquérir du trafic et fidéliser son audience - lancer un buz...
Guilhem Bertholet
 
API Development and Scala @ SoundCloud
API Development and Scala @ SoundCloudAPI Development and Scala @ SoundCloud
API Development and Scala @ SoundCloud
Bora Tunca
 
Ad

Similar to The eBay Architecture: Striking a Balance between Site Stability, Feature Velocity, Performance, and Cost (20)

E Bay Sd Forum2006 11 29
E Bay Sd Forum2006 11 29E Bay Sd Forum2006 11 29
E Bay Sd Forum2006 11 29
guest7fe78
 
Technology Overview
Technology OverviewTechnology Overview
Technology Overview
Liran Zelkha
 
Handling Data in Mega Scale Systems
Handling Data in Mega Scale SystemsHandling Data in Mega Scale Systems
Handling Data in Mega Scale Systems
Directi Group
 
Running a Megasite on Microsoft Technologies
Running a Megasite on Microsoft TechnologiesRunning a Megasite on Microsoft Technologies
Running a Megasite on Microsoft Technologies
goodfriday
 
Refactoring to Microservices
Refactoring to MicroservicesRefactoring to Microservices
Refactoring to Microservices
Jacinto Limjap
 
Scaling Integration
Scaling IntegrationScaling Integration
Scaling Integration
Kim Clark
 
Transforming a Large Mission-Critical E-Commerce Platform from a Relational A...
Transforming a Large Mission-Critical E-Commerce Platform from a Relational A...Transforming a Large Mission-Critical E-Commerce Platform from a Relational A...
Transforming a Large Mission-Critical E-Commerce Platform from a Relational A...
MongoDB
 
DB2 9 for z/OS - Business Value
DB2 9 for z/OS  - Business  ValueDB2 9 for z/OS  - Business  Value
DB2 9 for z/OS - Business Value
Surekha Parekh
 
NZSPC 2013 - Ultimate SharePoint Infrastructure Best Practices Session
NZSPC 2013 - Ultimate SharePoint Infrastructure Best Practices SessionNZSPC 2013 - Ultimate SharePoint Infrastructure Best Practices Session
NZSPC 2013 - Ultimate SharePoint Infrastructure Best Practices Session
Michael Noel
 
Designing a Scalable Twitter - Patterns for Designing Scalable Real-Time Web ...
Designing a Scalable Twitter - Patterns for Designing Scalable Real-Time Web ...Designing a Scalable Twitter - Patterns for Designing Scalable Real-Time Web ...
Designing a Scalable Twitter - Patterns for Designing Scalable Real-Time Web ...
Nati Shalom
 
Understanding The Azure Platform Jan
Understanding The Azure Platform   JanUnderstanding The Azure Platform   Jan
Understanding The Azure Platform Jan
DavidGristwood
 
DB2 for z/O S Data Sharing
DB2 for z/O S  Data  SharingDB2 for z/O S  Data  Sharing
DB2 for z/O S Data Sharing
Surekha Parekh
 
How to Radically Simplify Your Business Data Management
How to Radically Simplify Your Business Data ManagementHow to Radically Simplify Your Business Data Management
How to Radically Simplify Your Business Data Management
Clusterpoint
 
Enterprise & Media Storage in the Cloud
Enterprise & Media Storage in the CloudEnterprise & Media Storage in the Cloud
Enterprise & Media Storage in the Cloud
Amazon Web Services Korea
 
Azure Data platform
Azure Data platformAzure Data platform
Azure Data platform
Mostafa
 
Windows Azure: Lessons From The Field
Windows Azure: Lessons From The FieldWindows Azure: Lessons From The Field
Windows Azure: Lessons From The Field
Rob Gillen
 
ArcReady - Architecting For The Cloud
ArcReady - Architecting For The CloudArcReady - Architecting For The Cloud
ArcReady - Architecting For The Cloud
Microsoft ArcReady
 
Serverless SQL
Serverless SQLServerless SQL
Serverless SQL
Torsten Steinbach
 
L21 scalability
L21 scalabilityL21 scalability
L21 scalability
Ólafur Andri Ragnarsson
 
Census Bureau PBOCS
Census Bureau PBOCSCensus Bureau PBOCS
Census Bureau PBOCS
Tolu A Williams
 
E Bay Sd Forum2006 11 29
E Bay Sd Forum2006 11 29E Bay Sd Forum2006 11 29
E Bay Sd Forum2006 11 29
guest7fe78
 
Technology Overview
Technology OverviewTechnology Overview
Technology Overview
Liran Zelkha
 
Handling Data in Mega Scale Systems
Handling Data in Mega Scale SystemsHandling Data in Mega Scale Systems
Handling Data in Mega Scale Systems
Directi Group
 
Running a Megasite on Microsoft Technologies
Running a Megasite on Microsoft TechnologiesRunning a Megasite on Microsoft Technologies
Running a Megasite on Microsoft Technologies
goodfriday
 
Refactoring to Microservices
Refactoring to MicroservicesRefactoring to Microservices
Refactoring to Microservices
Jacinto Limjap
 
Scaling Integration
Scaling IntegrationScaling Integration
Scaling Integration
Kim Clark
 
Transforming a Large Mission-Critical E-Commerce Platform from a Relational A...
Transforming a Large Mission-Critical E-Commerce Platform from a Relational A...Transforming a Large Mission-Critical E-Commerce Platform from a Relational A...
Transforming a Large Mission-Critical E-Commerce Platform from a Relational A...
MongoDB
 
DB2 9 for z/OS - Business Value
DB2 9 for z/OS  - Business  ValueDB2 9 for z/OS  - Business  Value
DB2 9 for z/OS - Business Value
Surekha Parekh
 
NZSPC 2013 - Ultimate SharePoint Infrastructure Best Practices Session
NZSPC 2013 - Ultimate SharePoint Infrastructure Best Practices SessionNZSPC 2013 - Ultimate SharePoint Infrastructure Best Practices Session
NZSPC 2013 - Ultimate SharePoint Infrastructure Best Practices Session
Michael Noel
 
Designing a Scalable Twitter - Patterns for Designing Scalable Real-Time Web ...
Designing a Scalable Twitter - Patterns for Designing Scalable Real-Time Web ...Designing a Scalable Twitter - Patterns for Designing Scalable Real-Time Web ...
Designing a Scalable Twitter - Patterns for Designing Scalable Real-Time Web ...
Nati Shalom
 
Understanding The Azure Platform Jan
Understanding The Azure Platform   JanUnderstanding The Azure Platform   Jan
Understanding The Azure Platform Jan
DavidGristwood
 
DB2 for z/O S Data Sharing
DB2 for z/O S  Data  SharingDB2 for z/O S  Data  Sharing
DB2 for z/O S Data Sharing
Surekha Parekh
 
How to Radically Simplify Your Business Data Management
How to Radically Simplify Your Business Data ManagementHow to Radically Simplify Your Business Data Management
How to Radically Simplify Your Business Data Management
Clusterpoint
 
Azure Data platform
Azure Data platformAzure Data platform
Azure Data platform
Mostafa
 
Windows Azure: Lessons From The Field
Windows Azure: Lessons From The FieldWindows Azure: Lessons From The Field
Windows Azure: Lessons From The Field
Rob Gillen
 
ArcReady - Architecting For The Cloud
ArcReady - Architecting For The CloudArcReady - Architecting For The Cloud
ArcReady - Architecting For The Cloud
Microsoft ArcReady
 
Ad

More from Randy Shoup (20)

Large Scale Architecture -- The Unreasonable Effectiveness of Simplicity
Large Scale Architecture -- The Unreasonable Effectiveness of SimplicityLarge Scale Architecture -- The Unreasonable Effectiveness of Simplicity
Large Scale Architecture -- The Unreasonable Effectiveness of Simplicity
Randy Shoup
 
Anatomy of Three Incidents -- Commonalities and Lessons
Anatomy of Three Incidents -- Commonalities and LessonsAnatomy of Three Incidents -- Commonalities and Lessons
Anatomy of Three Incidents -- Commonalities and Lessons
Randy Shoup
 
One Terrible Day at Google, and How It Made Us Better
One Terrible Day at Google, and How It Made Us BetterOne Terrible Day at Google, and How It Made Us Better
One Terrible Day at Google, and How It Made Us Better
Randy Shoup
 
Scaling Your Architecture for the Long Term
Scaling Your Architecture for the Long TermScaling Your Architecture for the Long Term
Scaling Your Architecture for the Long Term
Randy Shoup
 
Minimal Viable Architecture - Silicon Slopes 2020
Minimal Viable Architecture - Silicon Slopes 2020Minimal Viable Architecture - Silicon Slopes 2020
Minimal Viable Architecture - Silicon Slopes 2020
Randy Shoup
 
An Agile Approach to Machine Learning
An Agile Approach to Machine LearningAn Agile Approach to Machine Learning
An Agile Approach to Machine Learning
Randy Shoup
 
Moving Fast at Scale
Moving Fast at ScaleMoving Fast at Scale
Moving Fast at Scale
Randy Shoup
 
Breaking Codes, Designing Jets, and Building Teams
Breaking Codes, Designing Jets, and Building TeamsBreaking Codes, Designing Jets, and Building Teams
Breaking Codes, Designing Jets, and Building Teams
Randy Shoup
 
Scaling Your Architecture with Services and Events
Scaling Your Architecture with Services and EventsScaling Your Architecture with Services and Events
Scaling Your Architecture with Services and Events
Randy Shoup
 
Learning from Learnings: Anatomy of Three Incidents
Learning from Learnings: Anatomy of Three IncidentsLearning from Learnings: Anatomy of Three Incidents
Learning from Learnings: Anatomy of Three Incidents
Randy Shoup
 
Minimum Viable Architecture - Good Enough is Good Enough
Minimum Viable Architecture - Good Enough is Good EnoughMinimum Viable Architecture - Good Enough is Good Enough
Minimum Viable Architecture - Good Enough is Good Enough
Randy Shoup
 
Managing Data at Scale - Microservices and Events
Managing Data at Scale - Microservices and EventsManaging Data at Scale - Microservices and Events
Managing Data at Scale - Microservices and Events
Randy Shoup
 
Service Architectures at Scale
Service Architectures at ScaleService Architectures at Scale
Service Architectures at Scale
Randy Shoup
 
Monoliths, Migrations, and Microservices
Monoliths, Migrations, and MicroservicesMonoliths, Migrations, and Microservices
Monoliths, Migrations, and Microservices
Randy Shoup
 
Evolving Architecture and Organization - Lessons from Google and eBay
Evolving Architecture and Organization - Lessons from Google and eBayEvolving Architecture and Organization - Lessons from Google and eBay
Evolving Architecture and Organization - Lessons from Google and eBay
Randy Shoup
 
Moving Fast At Scale
Moving Fast At ScaleMoving Fast At Scale
Moving Fast At Scale
Randy Shoup
 
DevOps - It's About How We Work
DevOps - It's About How We WorkDevOps - It's About How We Work
DevOps - It's About How We Work
Randy Shoup
 
Ten Lessons of the DevOps Transition
Ten Lessons of the DevOps TransitionTen Lessons of the DevOps Transition
Ten Lessons of the DevOps Transition
Randy Shoup
 
Managing Data in Microservices
Managing Data in MicroservicesManaging Data in Microservices
Managing Data in Microservices
Randy Shoup
 
Effective Microservices In a Data-centric World
Effective Microservices In a Data-centric WorldEffective Microservices In a Data-centric World
Effective Microservices In a Data-centric World
Randy Shoup
 
Large Scale Architecture -- The Unreasonable Effectiveness of Simplicity
Large Scale Architecture -- The Unreasonable Effectiveness of SimplicityLarge Scale Architecture -- The Unreasonable Effectiveness of Simplicity
Large Scale Architecture -- The Unreasonable Effectiveness of Simplicity
Randy Shoup
 
Anatomy of Three Incidents -- Commonalities and Lessons
Anatomy of Three Incidents -- Commonalities and LessonsAnatomy of Three Incidents -- Commonalities and Lessons
Anatomy of Three Incidents -- Commonalities and Lessons
Randy Shoup
 
One Terrible Day at Google, and How It Made Us Better
One Terrible Day at Google, and How It Made Us BetterOne Terrible Day at Google, and How It Made Us Better
One Terrible Day at Google, and How It Made Us Better
Randy Shoup
 
Scaling Your Architecture for the Long Term
Scaling Your Architecture for the Long TermScaling Your Architecture for the Long Term
Scaling Your Architecture for the Long Term
Randy Shoup
 
Minimal Viable Architecture - Silicon Slopes 2020
Minimal Viable Architecture - Silicon Slopes 2020Minimal Viable Architecture - Silicon Slopes 2020
Minimal Viable Architecture - Silicon Slopes 2020
Randy Shoup
 
An Agile Approach to Machine Learning
An Agile Approach to Machine LearningAn Agile Approach to Machine Learning
An Agile Approach to Machine Learning
Randy Shoup
 
Moving Fast at Scale
Moving Fast at ScaleMoving Fast at Scale
Moving Fast at Scale
Randy Shoup
 
Breaking Codes, Designing Jets, and Building Teams
Breaking Codes, Designing Jets, and Building TeamsBreaking Codes, Designing Jets, and Building Teams
Breaking Codes, Designing Jets, and Building Teams
Randy Shoup
 
Scaling Your Architecture with Services and Events
Scaling Your Architecture with Services and EventsScaling Your Architecture with Services and Events
Scaling Your Architecture with Services and Events
Randy Shoup
 
Learning from Learnings: Anatomy of Three Incidents
Learning from Learnings: Anatomy of Three IncidentsLearning from Learnings: Anatomy of Three Incidents
Learning from Learnings: Anatomy of Three Incidents
Randy Shoup
 
Minimum Viable Architecture - Good Enough is Good Enough
Minimum Viable Architecture - Good Enough is Good EnoughMinimum Viable Architecture - Good Enough is Good Enough
Minimum Viable Architecture - Good Enough is Good Enough
Randy Shoup
 
Managing Data at Scale - Microservices and Events
Managing Data at Scale - Microservices and EventsManaging Data at Scale - Microservices and Events
Managing Data at Scale - Microservices and Events
Randy Shoup
 
Service Architectures at Scale
Service Architectures at ScaleService Architectures at Scale
Service Architectures at Scale
Randy Shoup
 
Monoliths, Migrations, and Microservices
Monoliths, Migrations, and MicroservicesMonoliths, Migrations, and Microservices
Monoliths, Migrations, and Microservices
Randy Shoup
 
Evolving Architecture and Organization - Lessons from Google and eBay
Evolving Architecture and Organization - Lessons from Google and eBayEvolving Architecture and Organization - Lessons from Google and eBay
Evolving Architecture and Organization - Lessons from Google and eBay
Randy Shoup
 
Moving Fast At Scale
Moving Fast At ScaleMoving Fast At Scale
Moving Fast At Scale
Randy Shoup
 
DevOps - It's About How We Work
DevOps - It's About How We WorkDevOps - It's About How We Work
DevOps - It's About How We Work
Randy Shoup
 
Ten Lessons of the DevOps Transition
Ten Lessons of the DevOps TransitionTen Lessons of the DevOps Transition
Ten Lessons of the DevOps Transition
Randy Shoup
 
Managing Data in Microservices
Managing Data in MicroservicesManaging Data in Microservices
Managing Data in Microservices
Randy Shoup
 
Effective Microservices In a Data-centric World
Effective Microservices In a Data-centric WorldEffective Microservices In a Data-centric World
Effective Microservices In a Data-centric World
Randy Shoup
 

Recently uploaded (20)

AI EngineHost Review: Revolutionary USA Datacenter-Based Hosting with NVIDIA ...
AI EngineHost Review: Revolutionary USA Datacenter-Based Hosting with NVIDIA ...AI EngineHost Review: Revolutionary USA Datacenter-Based Hosting with NVIDIA ...
AI EngineHost Review: Revolutionary USA Datacenter-Based Hosting with NVIDIA ...
SOFTTECHHUB
 
TrustArc Webinar: Consumer Expectations vs Corporate Realities on Data Broker...
TrustArc Webinar: Consumer Expectations vs Corporate Realities on Data Broker...TrustArc Webinar: Consumer Expectations vs Corporate Realities on Data Broker...
TrustArc Webinar: Consumer Expectations vs Corporate Realities on Data Broker...
TrustArc
 
Heap, Types of Heap, Insertion and Deletion
Heap, Types of Heap, Insertion and DeletionHeap, Types of Heap, Insertion and Deletion
Heap, Types of Heap, Insertion and Deletion
Jaydeep Kale
 
tecnologias de las primeras civilizaciones.pdf
tecnologias de las primeras civilizaciones.pdftecnologias de las primeras civilizaciones.pdf
tecnologias de las primeras civilizaciones.pdf
fjgm517
 
UiPath Community Berlin: Orchestrator API, Swagger, and Test Manager API
UiPath Community Berlin: Orchestrator API, Swagger, and Test Manager APIUiPath Community Berlin: Orchestrator API, Swagger, and Test Manager API
UiPath Community Berlin: Orchestrator API, Swagger, and Test Manager API
UiPathCommunity
 
#StandardsGoals for 2025: Standards & certification roundup - Tech Forum 2025
#StandardsGoals for 2025: Standards & certification roundup - Tech Forum 2025#StandardsGoals for 2025: Standards & certification roundup - Tech Forum 2025
#StandardsGoals for 2025: Standards & certification roundup - Tech Forum 2025
BookNet Canada
 
Rusty Waters: Elevating Lakehouses Beyond Spark
Rusty Waters: Elevating Lakehouses Beyond SparkRusty Waters: Elevating Lakehouses Beyond Spark
Rusty Waters: Elevating Lakehouses Beyond Spark
carlyakerly1
 
DevOpsDays Atlanta 2025 - Building 10x Development Organizations.pptx
DevOpsDays Atlanta 2025 - Building 10x Development Organizations.pptxDevOpsDays Atlanta 2025 - Building 10x Development Organizations.pptx
DevOpsDays Atlanta 2025 - Building 10x Development Organizations.pptx
Justin Reock
 
IEDM 2024 Tutorial2_Advances in CMOS Technologies and Future Directions for C...
IEDM 2024 Tutorial2_Advances in CMOS Technologies and Future Directions for C...IEDM 2024 Tutorial2_Advances in CMOS Technologies and Future Directions for C...
IEDM 2024 Tutorial2_Advances in CMOS Technologies and Future Directions for C...
organizerofv
 
Big Data Analytics Quick Research Guide by Arthur Morgan
Big Data Analytics Quick Research Guide by Arthur MorganBig Data Analytics Quick Research Guide by Arthur Morgan
Big Data Analytics Quick Research Guide by Arthur Morgan
Arthur Morgan
 
TrsLabs - Fintech Product & Business Consulting
TrsLabs - Fintech Product & Business ConsultingTrsLabs - Fintech Product & Business Consulting
TrsLabs - Fintech Product & Business Consulting
Trs Labs
 
AI Changes Everything – Talk at Cardiff Metropolitan University, 29th April 2...
AI Changes Everything – Talk at Cardiff Metropolitan University, 29th April 2...AI Changes Everything – Talk at Cardiff Metropolitan University, 29th April 2...
AI Changes Everything – Talk at Cardiff Metropolitan University, 29th April 2...
Alan Dix
 
ThousandEyes Partner Innovation Updates for May 2025
ThousandEyes Partner Innovation Updates for May 2025ThousandEyes Partner Innovation Updates for May 2025
ThousandEyes Partner Innovation Updates for May 2025
ThousandEyes
 
Role of Data Annotation Services in AI-Powered Manufacturing
Role of Data Annotation Services in AI-Powered ManufacturingRole of Data Annotation Services in AI-Powered Manufacturing
Role of Data Annotation Services in AI-Powered Manufacturing
Andrew Leo
 
Noah Loul Shares 5 Steps to Implement AI Agents for Maximum Business Efficien...
Noah Loul Shares 5 Steps to Implement AI Agents for Maximum Business Efficien...Noah Loul Shares 5 Steps to Implement AI Agents for Maximum Business Efficien...
Noah Loul Shares 5 Steps to Implement AI Agents for Maximum Business Efficien...
Noah Loul
 
Enhancing ICU Intelligence: How Our Functional Testing Enabled a Healthcare I...
Enhancing ICU Intelligence: How Our Functional Testing Enabled a Healthcare I...Enhancing ICU Intelligence: How Our Functional Testing Enabled a Healthcare I...
Enhancing ICU Intelligence: How Our Functional Testing Enabled a Healthcare I...
Impelsys Inc.
 
Drupalcamp Finland – Measuring Front-end Energy Consumption
Drupalcamp Finland – Measuring Front-end Energy ConsumptionDrupalcamp Finland – Measuring Front-end Energy Consumption
Drupalcamp Finland – Measuring Front-end Energy Consumption
Exove
 
Manifest Pre-Seed Update | A Humanoid OEM Deeptech In France
Manifest Pre-Seed Update | A Humanoid OEM Deeptech In FranceManifest Pre-Seed Update | A Humanoid OEM Deeptech In France
Manifest Pre-Seed Update | A Humanoid OEM Deeptech In France
chb3
 
Into The Box Conference Keynote Day 1 (ITB2025)
Into The Box Conference Keynote Day 1 (ITB2025)Into The Box Conference Keynote Day 1 (ITB2025)
Into The Box Conference Keynote Day 1 (ITB2025)
Ortus Solutions, Corp
 
Linux Professional Institute LPIC-1 Exam.pdf
Linux Professional Institute LPIC-1 Exam.pdfLinux Professional Institute LPIC-1 Exam.pdf
Linux Professional Institute LPIC-1 Exam.pdf
RHCSA Guru
 
AI EngineHost Review: Revolutionary USA Datacenter-Based Hosting with NVIDIA ...
AI EngineHost Review: Revolutionary USA Datacenter-Based Hosting with NVIDIA ...AI EngineHost Review: Revolutionary USA Datacenter-Based Hosting with NVIDIA ...
AI EngineHost Review: Revolutionary USA Datacenter-Based Hosting with NVIDIA ...
SOFTTECHHUB
 
TrustArc Webinar: Consumer Expectations vs Corporate Realities on Data Broker...
TrustArc Webinar: Consumer Expectations vs Corporate Realities on Data Broker...TrustArc Webinar: Consumer Expectations vs Corporate Realities on Data Broker...
TrustArc Webinar: Consumer Expectations vs Corporate Realities on Data Broker...
TrustArc
 
Heap, Types of Heap, Insertion and Deletion
Heap, Types of Heap, Insertion and DeletionHeap, Types of Heap, Insertion and Deletion
Heap, Types of Heap, Insertion and Deletion
Jaydeep Kale
 
tecnologias de las primeras civilizaciones.pdf
tecnologias de las primeras civilizaciones.pdftecnologias de las primeras civilizaciones.pdf
tecnologias de las primeras civilizaciones.pdf
fjgm517
 
UiPath Community Berlin: Orchestrator API, Swagger, and Test Manager API
UiPath Community Berlin: Orchestrator API, Swagger, and Test Manager APIUiPath Community Berlin: Orchestrator API, Swagger, and Test Manager API
UiPath Community Berlin: Orchestrator API, Swagger, and Test Manager API
UiPathCommunity
 
#StandardsGoals for 2025: Standards & certification roundup - Tech Forum 2025
#StandardsGoals for 2025: Standards & certification roundup - Tech Forum 2025#StandardsGoals for 2025: Standards & certification roundup - Tech Forum 2025
#StandardsGoals for 2025: Standards & certification roundup - Tech Forum 2025
BookNet Canada
 
Rusty Waters: Elevating Lakehouses Beyond Spark
Rusty Waters: Elevating Lakehouses Beyond SparkRusty Waters: Elevating Lakehouses Beyond Spark
Rusty Waters: Elevating Lakehouses Beyond Spark
carlyakerly1
 
DevOpsDays Atlanta 2025 - Building 10x Development Organizations.pptx
DevOpsDays Atlanta 2025 - Building 10x Development Organizations.pptxDevOpsDays Atlanta 2025 - Building 10x Development Organizations.pptx
DevOpsDays Atlanta 2025 - Building 10x Development Organizations.pptx
Justin Reock
 
IEDM 2024 Tutorial2_Advances in CMOS Technologies and Future Directions for C...
IEDM 2024 Tutorial2_Advances in CMOS Technologies and Future Directions for C...IEDM 2024 Tutorial2_Advances in CMOS Technologies and Future Directions for C...
IEDM 2024 Tutorial2_Advances in CMOS Technologies and Future Directions for C...
organizerofv
 
Big Data Analytics Quick Research Guide by Arthur Morgan
Big Data Analytics Quick Research Guide by Arthur MorganBig Data Analytics Quick Research Guide by Arthur Morgan
Big Data Analytics Quick Research Guide by Arthur Morgan
Arthur Morgan
 
TrsLabs - Fintech Product & Business Consulting
TrsLabs - Fintech Product & Business ConsultingTrsLabs - Fintech Product & Business Consulting
TrsLabs - Fintech Product & Business Consulting
Trs Labs
 
AI Changes Everything – Talk at Cardiff Metropolitan University, 29th April 2...
AI Changes Everything – Talk at Cardiff Metropolitan University, 29th April 2...AI Changes Everything – Talk at Cardiff Metropolitan University, 29th April 2...
AI Changes Everything – Talk at Cardiff Metropolitan University, 29th April 2...
Alan Dix
 
ThousandEyes Partner Innovation Updates for May 2025
ThousandEyes Partner Innovation Updates for May 2025ThousandEyes Partner Innovation Updates for May 2025
ThousandEyes Partner Innovation Updates for May 2025
ThousandEyes
 
Role of Data Annotation Services in AI-Powered Manufacturing
Role of Data Annotation Services in AI-Powered ManufacturingRole of Data Annotation Services in AI-Powered Manufacturing
Role of Data Annotation Services in AI-Powered Manufacturing
Andrew Leo
 
Noah Loul Shares 5 Steps to Implement AI Agents for Maximum Business Efficien...
Noah Loul Shares 5 Steps to Implement AI Agents for Maximum Business Efficien...Noah Loul Shares 5 Steps to Implement AI Agents for Maximum Business Efficien...
Noah Loul Shares 5 Steps to Implement AI Agents for Maximum Business Efficien...
Noah Loul
 
Enhancing ICU Intelligence: How Our Functional Testing Enabled a Healthcare I...
Enhancing ICU Intelligence: How Our Functional Testing Enabled a Healthcare I...Enhancing ICU Intelligence: How Our Functional Testing Enabled a Healthcare I...
Enhancing ICU Intelligence: How Our Functional Testing Enabled a Healthcare I...
Impelsys Inc.
 
Drupalcamp Finland – Measuring Front-end Energy Consumption
Drupalcamp Finland – Measuring Front-end Energy ConsumptionDrupalcamp Finland – Measuring Front-end Energy Consumption
Drupalcamp Finland – Measuring Front-end Energy Consumption
Exove
 
Manifest Pre-Seed Update | A Humanoid OEM Deeptech In France
Manifest Pre-Seed Update | A Humanoid OEM Deeptech In FranceManifest Pre-Seed Update | A Humanoid OEM Deeptech In France
Manifest Pre-Seed Update | A Humanoid OEM Deeptech In France
chb3
 
Into The Box Conference Keynote Day 1 (ITB2025)
Into The Box Conference Keynote Day 1 (ITB2025)Into The Box Conference Keynote Day 1 (ITB2025)
Into The Box Conference Keynote Day 1 (ITB2025)
Ortus Solutions, Corp
 
Linux Professional Institute LPIC-1 Exam.pdf
Linux Professional Institute LPIC-1 Exam.pdfLinux Professional Institute LPIC-1 Exam.pdf
Linux Professional Institute LPIC-1 Exam.pdf
RHCSA Guru
 

The eBay Architecture: Striking a Balance between Site Stability, Feature Velocity, Performance, and Cost

  • 1. The eBay Architecture Striking a balance between site stability, feature velocity, performance, and cost Presented By: Randy Shoup and Dan Pritchett Date: February 9, 2007 Amazon Friday Learning Series
  • 2. What we ’re up against eBay users worldwide trade more than $1812 worth of goods every second  eBay averages over 1 billion page views per day At any given time, there are approximately 100 million listings on the site eBay stores over 2 Petabytes of data – over 200 times the size of the Library of Congress! The eBay platform handles 3 billion API calls per month eBay manages … Over 212,000,000 registered users Over 1 Billion photos In a dynamic environment 300+ features per quarter We roll 100,000+ lines of code every two weeks In 33 countries, in seven languages, 24x7 >26 Billion SQL executions/day! An SUV is sold every 5 minutes A sporting good sells every 2 seconds Over ½ Million pounds of Kimchi are sold every year!
  • 3. Site Statistics: in a typical day … June 1999 Q3 2006 Growth Outbound Emails 1 M 35 M 35x Total Page Views 54 M 1 B 19x Peak Network Utilization 268 Mbps 16 Gbps 59x API Calls 0 100 M N/A Availability ~97% 99.94% 50x 43 mins/day 50 sec/day
  • 4. eBay ’s Exponential Growth 212 Million Users 1999 2000 2001 2002 2003 1998 2004 2005 105 Million Listings 2006
  • 5. Velocity of eBay -- Software Development Process Our site is our product. We change it incrementally through implementing new features. Very predictable development process – trains leave on-time at regular intervals (weekly). Parallel development process with significant output -- 100,000 LOC per release. Always on – over 99.94% available. 6M LOC 100K LOC/Wk 99.94% 212M Users 300+ Features Per Quarter All while supporting a 24x7 environment
  • 6. Systemic Requirements Maintainability Faster Product Delivery Enable rapid business innovation Enable seamless growth Deliver quality functionality at accelerating rates Architect for the future 10X Growth Availability Reliability Massive Scalability Security
  • 7. Architectural Lessons Scale Out, Not Up Horizontal scaling at every tier. Functional decomposition. Prefer Asynchronous Integration Minimize availability coupling. Improve scaling options. Virtualize Components Reduce physical dependencies. Improve deployment flexibility. Design for Failure Automated failure detection and notification. “ Limp mode” operation of business features.
  • 8. Ongoing Platform Evolution … V1 V2.0 V2.4 V3 V2.3 eBay architecture versions Registered Users 212M V4 V2.5
  • 9. V1.0 1995-September 1997 Built over a weekend in Pierre Omidyar ’ s living room in 1995 System hardware was made up of parts that could be bought at Fry's Every item was a separate file, generated by a Perl script No search functionality, only category browsing This system maxed out at 50,000 active items
  • 10. V2.0 September 1997- February 1999 3-tiered conceptual architecture (separation of bus/pres and db access tiers) 2-tiered physical implementation (no application server) C++ Library (eBayISAPI.dll) running on IIS on Windows Microsoft index server used for search Items migrated from GDBM to an Oracle database on Solaris
  • 11. V2.1 February 1999-November 1999 Servers grouped into pools (small soldiers) Resonate used for front end load balancing and failover Search functionality moved to the Thunderstone indexing system Back-end Oracle database server scaled vertically to a larger machine (Sun E10000)
  • 12. V2.3 June 1999-November 1999 Second Database added for failover CGI pools, Listings, Pages, and Search continued to scale horizontally However … By November 1999, the database servers approached their limits of physical growth.
  • 13. V2.4 November 1999-April 2001 Database "split" technology. Logically partition database into separate instances. Horizontal scalability through 2000, but not beyond.
  • 14. V2.5 April 2001 – December 2002 November, 1999 December, 2002 Horizontal scalability through database splits Items split by category SPOF elimination Bear Bull
  • 15. Now that we have the Database taken care of…. Application Server Monolithic 2-tier Architecture 3.3 Million Line C++ ISAPI DLL (150MB binary) Hundreds of developers, all working on the same code Hitting compiler limits on number of methods per class (!!)
  • 16. V3 – Replace C++/ISAPI with Java 2002-present Re-wrote the entire application in J2EE application server framework Gave us a chance to architect the code for reuse and separation of duties Leveraged the MSXML framework for the presentation layer Minimizing the development cost for migration Implemented a development kernel as a foundation for programmers Allowed for rapid training and deployment of new engineers
  • 18. Scaling the Data Tier: Overview Spread the Load Segmentation by function. Horizontal splits within functions. Minimize the Work Limit in database work The Tricks to Scaling How to survive without transactions. Creating alternate database structures.
  • 19. Scaling the Data Tier: Functional Segmentation Segment databases into functional areas User hosts Item hosts Account hosts Feedback hosts Transaction hosts And about 70 more functional categories Rationale Partitions data by different scaling / usage characteristics Supports functional decoupling and isolation
  • 20. Scaling the Data Tier: Horizontal Split Split databases horizontally by primary access path. Different patterns for different use cases Write Master/Read Slaves Segmentation by data; Two approaches Modulo on a key, typically the primary key. Simple data location if you know the key Not so simple if you don ’t. Map to data location Supports multiple keys. Doubles reads required to locate data. SPOF elimination on map structure is complex. Rationale Horizontal scaling of transactional load. Segment business impact on database outage.
  • 21. Scaling the Data Tier: Logical Database Hosts Separate Application notion of a database from physical implementation Databases may be combined and separated with no code changes Reduce cost of creating multiple environments (Dev, QA, …) DB2 DB3 DB1 Application Servers Attributes Catalogs Rules CATY 1..N User Account Feedback Misc API SCRATCH
  • 22. Scaling the Data Tier: Minimize DB Resources No business logic in database No stored procedures Only very simple triggers (default value population) Move CPU-intensive work to applications Referential Integrity Joins Sorting Extensive use of prepared statements and bind variables
  • 23. Scaling the Data Tier: Minimize DB Transactions Auto-commit for vast majority of DB writes Absolutely no client side transactions Single database transactions managed through anonymous PL/SQL blocks. No distributed transactions. How do we pull it off? Careful ordering of DB operations Recovery through Asynchronous recovery events Reconciliation batch Failover to async flow Rationale Avoid deadlocks Avoid coupling availability Update concurrency Seamless handling of splits
  • 25. Scaling the Application Tier – Overview Spread the Load Segmentation by function. Horizontal load-balancing within functions. Minimize dependencies Between applications Between functional areas From applications to data tier resources Virtualize data access
  • 26. Scaling the Application Tier – Massively Scaling J2EE Step 1 - Throw out most of J2EE eBay scales on servlets and a rewritten connection pool. Step 2 – Keep Application Tier Completely Stateless No session state in application tier Transient state maintained in cookie or scratch database Step 3 – Cache Where Possible Cache common metadata across requests, with sophisticated cache refresh procedures Cache reload from local storage Cache request data in ThreadLocal
  • 27. Scaling the Application Tier – Tiered Application Model BO/BOF AO/AOF (View) Business Logic XML Model Building Logic Command (View) DO/DAO XSL Business Tier Presentation Tier Integration Tier Data Access Layer (DAL) Strictly partition application into tiers Presentation Business Integration
  • 28. Scaling the Application Tier – Data Access Layer (DAL) What is the DAL? eBay ’s internally-developed pure Java OR mapping solution. All CRUD (Create Read Update Delete) operations are performed through DAL ’s abstraction of the data. Enables horizontal scaling of the Data tier without application code changes Dynamic Data Routing abstracts application developers from Database splits Logical / Physical Hosts Markdown Graceful degradation Extensive JDBC Prepared Statements cached by DataSources
  • 29. Scaling the Application Tier – Vertical Code Partitioning Partition code into functional areas Application is specific to a single area (Selling, Buying, etc.) Domain contains common business logic across Applications Restrict inter-dependencies Applications depend on Domains, not on other Applications No dependencies among shared Domains Core-Domain PersonalizationDomain LookupDomain UserValidationDomain SharedBillingDomain SharedSearchDomain API Domain SharedBuyingDomain myEbayDomain UserApplication BuyingDomain BillingDomain SearchDomain SellingDomain UserDomain SellingApplication BuyingApplication SearchApplication BillingApplication Applications Shared Domains
  • 30. Scaling the Application Tier – Functional Segmentation IIS IIS ViewItem Pool http://cgi.ebay.com … … … User Acct Caty20+ Caty1 AppServers … IIS IIS CGI0 CGI5 AS AS AS AS SYI Pool http://cgi5.ebay.com … IIS WebServers Load Balancing Load Balancing Load Balancing Segment functions into separate application pools Minimizes / isolates DB dependencies Allows for parallel development, deployment, and monitoring AS AS
  • 31. Scaling the Application Tier – Platform Decoupling Domain Partitioning for Deployment Decouple non-transactional domains from transactional flows Search and billing domains are not required in transaction processing. Fraud domain is required but easier to manage as separate deployment. Integrate with a combination of asynchronous EDA and synchronous SOA patterns. Transaction Platform Billing Search Fraud EDA EDA SOA
  • 33. Scaling Search – Overview In 2002, eBay search had reached its limits Cost of scaling third-party search engine had become prohibitive 9 hours to update the index Running on largest systems vendor sold – and still not keeping up eBay has unique search requirements Real-time updates Update item on any change (list, bid, sale, etc.) Users expect changes to be visible immediately Exhaustive recall Sellers notice if search results miss any item Search results require data ( “histograms”) from every matching item Flexible data storage Keywords Structured categories and attributes No off-the-shelf product met these needs
  • 34. Scaling Search – Voyager Real-time feeder infrastructure Reliable multicast from primary database to search nodes Real-time indexing Search nodes update index in real time from messages In-memory search index Horizontal segmentation Search index divided into N slices ( “columns”) Each slice is replicated to M instances ( “rows”) Aggregator parallelizes query over all N slices, load-balances over M instances Caching Cache results for highly expensive and frequently used queries
  • 37. Scaling Operations – Code Deployment Demanding Requirements Entire site rolled every 2 weeks All deployments require staged rollout with immediate rollback if necessary. More than 100 WAR configurations. Dependencies exist between pools during some deployment operations. More than 15,000 instances across eight physical data centers. Rollout Plan Custom application that works from dependencies provided by projects. Creates transitive closure of dependencies. Generates rollout plan for Turbo Roller. Automated Rollout Tool ( “Turbo Roller”) Manages full deployment cycle onto all application servers. Executes rollout plan. Built in checkpoints during rollout, including approvals. Optimized rollback, including full rollback of dependent pools.
  • 38. Scaling Operations – Monitoring Centralized Activity Logging (CAL) Transaction oriented logging per application server Transaction boundary starts at request. Nested transactions supported. Detailed logging of all application activity, especially database and other external resources. Application generated information and exceptions can be reported. Logging streams gathered and broadcast on a message bus. Subscriber to log to files (1.5TB/day) Subscriber to capture exceptions and generate operational alerts. Subscriber for real time application state monitoring. Extensive Reporting Reports on transactions (page and database) per pool. Relationships between URL ’s and external resources. Inverted relationships between databases and pools/URL ’s. Data cube reporting on several key metrics available in near real time.
  • 39. Recap Enabling seamless growth Massive Database and Code Scalability Delivering quality functionality at accelerating rates Further streamline and optimize the eBay development model Enabling rapid business innovation Maintainability Faster Product Delivery Architecting for the future 10X Growth Availability Reliability Massive Scalability Security

Editor's Notes

  • #4: A few more statistics for you. In 1999, eBay was already a giant in the ecommerce space, but things were just really starting to pick up. <CLICK> Now, we are at a tremendous scale. <CLICK> The growth is just amazing. In only 5 years, we have seen 1600% growth in traffic. And because of all of the added functionality of the site, we have seen even higher growth rates in other areas: For instance, hosting pictures was a growing issue for our users. So we added eBay Picture Services. That ’ s one of the reasons that the Network Utilization has grown so quickly. Availability: You might be saying “ It only changed by roughly 3%, that ’ s not a 50x improvement ” You ’ re right, but let ’ s think about what that number really means. First, a loss of availability does not mean that the entire site is unreachable. It means that at least one of our customers might be impacted and unable to search, list, view or buy a product. 97% uptime = 43 minutes (interrupted service) per day. That ’ s a lot, and that ’ s what we were living with in 1999. Today… 99.94% availability = 50 seconds of interrupted service per day Remember that math the next time someone asks you why it ’ s so hard to improve availability. ;-)
  • #5: Exponential Growth. Business people just love graphs like that don ’ t they? But for us technologist, exponential growth means something very different. I ’ m trained as a nuclear engineer, so it means something even more interesting to me… But that ’ s what we ’ ve been building for over the last 10 years. The first 5 were pretty easy, we had a small group of collectors using the site to trade within a community of like-minded individuals. But after that, things started to become more challenging. We had people starting to quit their jobs and work full-time selling on eBay, we had businesses using us as a new sales channel, and we had our buyers that had found one of the most diverse sets of products every offered in one place. We needed a little process to make all of the changes that this growing community was asking us to produce.
  • #6: This sort of guaranteed delivery makes it possible for the business to reliably plan marketing campaigns and monitor the success of their initiatives. The velocity of code change, while maintaining reliability is unlike anything I had every seen before joining eBay.
  • #9: Registered Users: Almost 40,000/day Listings Approximately 100M/quarter or over 1MM/day GMS Approximately $10B/year; $30MMsold/day
  • #10: V1 was like any system you or I would build at home
  • #11: V2 moved to industry standard technology
  • #12: Then we added redundancy at the application tier and a real search engine
  • #13: We added redundancy at the database tier and more capacity
  • #14: We logically split to the databases and began to move the physical locations as well
  • #15: And we could now migrate the databases to separate, less expensive servers, without affecting the running system negatively.
  • #16: INTRODUCTION 3 -- Objectives List the specific skills or knowledge attendees should gain from this presentation. Write in terms of what the attendee will be able to do with the information when they leave the session – as opposed to all the features of the product. This is an important distinction. Effective Presentation TIPS The purpose of your presentation should be to provide information that will assist attendees in their work back on the job. This requires that you have some level of understanding of the type of work they do and the information they would need to carry out the job effectively and efficiently. So you should think in terms of what they will be doing back on the job. **see below ** The following is a list of topic categories Support Services, Professional Services, and Sales groups have indicated are critical in performing their jobs: SUPPORT SERVICES – Solution Center Engineers, Field and Support Engineers How to identify appropriate uses for the product The product's relative position within the product family How to recognize & identify the component(s) and sub-component(s) of the product How to install the product How to configure the product How to identify & correct common problems How to identify & correct problems arising from integration with other Sun (or non-Sun) products (continued) But everything wasn ’ t perfect. We were now hitting scaling limits of different types. - code maintenance - code complexity - search
  • #17: More than any specific technology, we needed to re-write the application for the realities of today.
  • #26: Maybe these all become individual slides?
  • #34: Most people don ’ t think of search when they think of eBay, but it ’ s one of the most challenging Information Retrieval projects in the world. We have 6M new items entering and exiting the site every day. And each item is updated on average 5 times during it ’ s lifetime. No off-the-shelf product today can handle the job.
  • #36: The architecture of Search is pretty interesting, and not just because I designed it. The system is built to function regardless of failures within the feeding stream, and every part of the system can be scaled horizontally.