Design street-view image ingestion and storage system
Company: Google
Role: Software Engineer
Category: System Design
Difficulty: hard
Interview Round: Technical Screen
## 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
1. **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)
2. **High-level architecture**
- Main services and data stores
- Data flow from taxi → ingestion → durable storage → processing pipeline → serving
3. **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
4. **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)
5. **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)
Quick Answer: This question evaluates understanding of large-scale system design for media ingestion, covering distributed ingestion pipelines, durable storage and retrieval, processing and serving architectures, upload API semantics, and device security/token management.