Design file-processing API with long-running jobs
Company: Dropbox
Role: Software Engineer
Category: System Design
Difficulty: medium
Interview Round: Onsite
This question evaluates a candidate's ability to design HTTP APIs and scalable backend architectures for long-running file-processing jobs, covering competencies in API design, job orchestration, distributed systems, fault tolerance, state persistence, and idempotency.
Company: Dropbox
Role: Software Engineer
Category: System Design
Difficulty: medium
Interview Round: Onsite
You are asked to design an HTTP-based API and high-level backend architecture for processing files in a cloud storage service (similar to a simplified Dropbox).
The system needs to perform a CPU-intensive operation on files (for example, virus scanning, OCR, or thumbnail generation).
Start with a basic requirement:
Design:
POST /processFiles
.
Address in your design:
Now assume that processing each file can take a long time, ranging from several seconds to several minutes, and the list may contain many files. A fully synchronous HTTP request will often:
Extend your design to handle long-running processing robustly.
New requirements:
Describe a high-level design that includes:
You do not need to write actual code, but explain your design clearly enough that an experienced engineer could implement it from your description.
Quick Answer: This question evaluates a candidate's ability to design HTTP APIs and scalable backend architectures for long-running file-processing jobs, covering competencies in API design, job orchestration, distributed systems, fault tolerance, state persistence, and idempotency.