Bird
Raised Fist0
Microservicessystem_design~20 mins

Uber architecture overview in Microservices - Practice Problems & Coding Challenges

Choose your learning style10 modes available

Start learning this pattern below

Jump into concepts and practice - no test required

or
Recommended
Test this pattern10 questions across easy, medium, and hard to know if this pattern is strong
Challenge - 5 Problems
🎖️
Uber Architecture Master
Get all challenges correct to earn this badge!
Test your skills under time pressure!
Architecture
intermediate
2:00remaining
Identify the core components in Uber's microservices architecture

Uber uses a microservices architecture to handle its complex ride-hailing system. Which of the following lists correctly identifies the core microservices involved in Uber's architecture?

AUser Service, Ride Matching Service, Payment Service, Notification Service
BUser Interface Service, Database Service, Cache Service, Logging Service
CAuthentication Service, File Storage Service, Analytics Service, Email Service
DLoad Balancer, DNS Service, CDN Service, Firewall Service
Attempts:
2 left
💡 Hint

Think about the services that directly relate to users booking rides and payments.

scaling
intermediate
2:00remaining
Scaling the Ride Matching Service

Uber's Ride Matching Service must handle millions of requests per minute. Which scaling strategy best suits this service to maintain low latency and high availability?

AVertical scaling by upgrading server hardware to the highest specs
BHorizontal scaling by adding more instances of the Ride Matching Service behind a load balancer
CUsing a single monolithic server to avoid network overhead
DDisabling caching to ensure fresh data on every request
Attempts:
2 left
💡 Hint

Consider how to handle many requests simultaneously with fault tolerance.

tradeoff
advanced
2:30remaining
Tradeoffs in Data Consistency for Uber's Payment Service

Uber's Payment Service must balance consistency and availability. Which tradeoff is most appropriate for this service?

AFavor strong consistency to ensure accurate transaction records even if it reduces availability temporarily
BIgnore consistency and focus only on speed of processing
CFavor eventual consistency to maximize availability during network partitions
DUse no replication to avoid data conflicts
Attempts:
2 left
💡 Hint

Think about the importance of accurate payment records.

🧠 Conceptual
advanced
2:30remaining
Understanding Event-Driven Architecture in Uber

Uber uses event-driven architecture to decouple services. Which statement best describes this approach?

AServices communicate synchronously using direct API calls only
BAll services share a single database to coordinate actions
CServices emit events to a message broker, allowing other services to react asynchronously
DServices are tightly coupled and depend on each other's internal logic
Attempts:
2 left
💡 Hint

Think about how services can work independently yet stay coordinated.

estimation
expert
3:00remaining
Estimating Storage Needs for Uber's Trip Data

Uber stores trip data for millions of rides daily. If each trip record is approximately 2 KB and Uber processes 10 million trips per day, what is the estimated storage needed for one year of trip data (in terabytes)?

AApproximately 730 TB
BApproximately 73 TB
CApproximately 0.73 TB
DApproximately 7.3 TB
Attempts:
2 left
💡 Hint

Calculate total bytes per day, then multiply by 365 days, and convert to terabytes (1 TB = 10^12 bytes).

Practice

(1/5)
1. What is the main reason Uber uses microservices in its architecture?
easy
A. To reduce the number of servers needed
B. To store all data in a single database for simplicity
C. To avoid using APIs for communication
D. To separate different tasks into independent services for better scalability

Solution

  1. Step 1: Understand microservices purpose

    Microservices break a large system into smaller, independent parts to handle specific tasks.
  2. Step 2: Relate to Uber's needs

    Uber needs to handle many users and real-time updates, so separating tasks helps scale and manage complexity.
  3. Final Answer:

    To separate different tasks into independent services for better scalability -> Option D
  4. Quick Check:

    Microservices = Independent scalable services [OK]
Hint: Microservices split tasks for easy scaling and management [OK]
Common Mistakes:
  • Thinking microservices mean one big database
  • Assuming no APIs are used
  • Believing microservices reduce servers directly
2. Which of the following is a correct way Uber's microservices communicate?
easy
A. Using APIs and message queues
B. Direct database queries between services
C. Sharing memory space directly
D. Using FTP to transfer data files

Solution

  1. Step 1: Identify communication methods in microservices

    Microservices communicate via APIs (for requests) and message queues (for async events).
  2. Step 2: Match with Uber's architecture

    Uber uses APIs and message queues to enable services to talk without tight coupling.
  3. Final Answer:

    Using APIs and message queues -> Option A
  4. Quick Check:

    Communication = APIs + message queues [OK]
Hint: Microservices talk via APIs and message queues [OK]
Common Mistakes:
  • Thinking services query each other's databases
  • Assuming shared memory is used
  • Believing FTP is used for service communication
3. Consider Uber's ride request flow: User app sends request -> Dispatch service -> Driver service -> Notification service. Which service likely handles real-time driver location updates?
medium
A. Driver service
B. Dispatch service
C. Notification service
D. User app

Solution

  1. Step 1: Understand each service role

    User app sends requests, Dispatch matches rides, Driver service manages driver data, Notification sends alerts.
  2. Step 2: Identify who tracks driver location

    Driver service manages driver info including real-time location updates.
  3. Final Answer:

    Driver service -> Option A
  4. Quick Check:

    Driver location updates = Driver service [OK]
Hint: Driver service manages driver data and location [OK]
Common Mistakes:
  • Confusing Dispatch with driver location tracking
  • Thinking Notification service tracks location
  • Assuming User app handles driver location
4. If Uber's Notification service fails to send ride updates, what is the best way to fix it without affecting other services?
medium
A. Restart the entire system including all microservices
B. Fix and restart only the Notification service
C. Merge Notification service with Dispatch service
D. Stop all services to prevent errors

Solution

  1. Step 1: Understand microservices isolation

    Each microservice runs independently, so fixing one doesn't require restarting all.
  2. Step 2: Apply best practice for failure

    Fix and restart only the failing Notification service to avoid downtime elsewhere.
  3. Final Answer:

    Fix and restart only the Notification service -> Option B
  4. Quick Check:

    Isolated fixes = Restart single service [OK]
Hint: Fix only the failing microservice to avoid system downtime [OK]
Common Mistakes:
  • Restarting all services unnecessarily
  • Merging services causing complexity
  • Stopping all services causing downtime
5. Uber wants to handle a sudden surge of users during a big event. Which architectural approach best supports this scaling need?
hard
A. Limit user requests to reduce load manually
B. Combine all services into one monolithic app for faster response
C. Use microservices with auto-scaling and load balancing
D. Use a single powerful server to handle all traffic

Solution

  1. Step 1: Understand scaling in microservices

    Microservices allow scaling individual parts independently using auto-scaling and load balancing.
  2. Step 2: Compare options for surge handling

    Monolithic apps and single servers can't scale easily; limiting users reduces experience.
  3. Final Answer:

    Use microservices with auto-scaling and load balancing -> Option C
  4. Quick Check:

    Scaling surge = Microservices + auto-scaling [OK]
Hint: Auto-scale microservices to handle traffic spikes smoothly [OK]
Common Mistakes:
  • Thinking monolith scales better
  • Relying on single server power
  • Manually limiting users instead of scaling