Aggregate downstream services with explicit required/optional policies, deadline budgets, bounded retries, partial responses, and safe handling of ambiguous side effects.
Aggregate Downstream Services with Explicit Failure Policies
Company: DoorDash
Role: Software Engineer
Category: Software Engineering Fundamentals
Difficulty: medium
Interview Round: Technical Screen
A frontend request reaches service A, which calls services B and C and returns an aggregate result. Design the request-handling and failure behavior, including when to fail open, when to fail closed, and how to retry.
### Constraints & Assumptions
The source omits the detailed business semantics of B and C. Treat failure policy as a per-dependency decision based on its role; do not declare every downstream failure optional or every failure fatal.
### Clarifying Questions
Which downstream results are required? Are calls reads or side effects? Can they run concurrently? What end-to-end deadline and partial-result contract apply? Is stale data acceptable?
### What a Strong Answer Covers
Deadline propagation, bounded concurrency, cancellation, classified errors, safe retries, circuit breaking, and explicit partial-result semantics.
### Follow-up Questions
Would you fail open for an authorization dependency? What if a side-effecting call times out after committing? How do retries across several service layers amplify load?
Overview: Aggregate downstream services with explicit required/optional policies, deadline budgets, bounded retries, partial responses, and safe handling of ambiguous side effects.
A frontend request reaches service A, which calls services B and C and returns an aggregate result. Design the request-handling and failure behavior, including when to fail open, when to fail closed, and how to retry.
Constraints & Assumptions
The source omits the detailed business semantics of B and C. Treat failure policy as a per-dependency decision based on its role; do not declare every downstream failure optional or every failure fatal.
Clarifying Questions Guidance
Which downstream results are required? Are calls reads or side effects? Can they run concurrently? What end-to-end deadline and partial-result contract apply? Is stale data acceptable?
Would you fail open for an authorization dependency? What if a side-effecting call times out after committing? How do retries across several service layers amplify load?