Prompt
Design a system to ingest, store, and process street-level images for a "Street View"-like product.
Scenario
-
A fleet of taxis is equipped with cameras.
-
Each taxi periodically captures photos (optionally with sensor metadata like GPS, timestamp, heading) and uploads them to your backend over unreliable mobile networks.
-
Stored images are consumed by downstream systems for:
-
Image understanding / feature extraction
-
Map generation (stitching/selection)
-
Display to end users (serving tiles/panoramas or individual frames)
What to cover
-
Requirements gathering
-
Functional requirements (ingestion, storage, retrieval, processing hooks)
-
Non-functional requirements (durability, availability, latency, cost, privacy/security)
-
Scale assumptions (taxis, images per taxi, image size, retention)
-
High-level architecture
-
Main services and data stores
-
Data flow from taxi → ingestion → durable storage → processing pipeline → serving
-
Upload API design
-
How the taxi uploads images (single-shot vs chunked/resumable)
-
Response semantics (sync/async), idempotency, retries
-
Handling bad networks, offline buffering, and partial uploads
-
Security / authentication
-
How devices authenticate (tokens/certs)
-
How to prevent abuse and secure data in transit/at rest
-
What to do if a token/device credential is compromised (revocation, rotation, blast radius reduction)
-
Trade-offs & extensions
-
Storage choices and partitioning
-
Exactly-once vs at-least-once ingestion
-
If given more time, what additional features or safeguards you would add (and why)