Design a Real Estate Photo Upload and Variant Delivery System
Our real estate platform allows property agents to upload high-resolution photos for property listings. Homebuyers browse these listings across mobile and desktop applications, expecting rapid image load times and responsive display sizes. You need to design the backend system that receives high-res original photos, generates standard display variants asynchronously, and delivers them to buyers efficiently.
- Agents can request secure upload authorization and upload high-resolution photos directly to storage.
- The system automatically validates and transforms uploaded images into thumbnail, medium, and large variants asynchronously.
- Homebuyers can fetch ordered photo metadata and optimized image URLs for any property listing.
- Agents can reorder or soft-delete photos from an active listing.
- Low delivery latency with <50ms response times for cached media requests via CDN.
- Image processing completion within 10 seconds of upload completion.
- High read availability of 99.99% for media delivery.
- Strong data durability (99.999999999%) for uploaded original photos.
50,000 photo uploads per day (~750 GB/day raw storage). 10 million active listings served daily, resulting in 50 million image view requests per day (peak 2,000 requests/second).
- High-level system architecture showing clients, API servers, storage, processing workers, and CDN.
- Detailed step-by-step sequence diagram or narrative for direct-to-storage upload and notification flow.
- Data model schema for property listings, media metadata, and photo display ordering.
Strong design uses short-lived pre-signed URLs or upload tokens issued by an API service, allowing client apps to upload binary files directly to object storage (e.g., S3) to prevent application server bottlenecking.
Strong design employs object storage creation events published to a message queue (e.g., SQS/Kafka) to trigger stateless worker fleets or serverless functions that generate variants and write metadata back to the database.
Strong design positions a Global Content Delivery Network (CDN) in front of object storage with cache-control headers, predictable CDN URL routing per variant size, and origin shielding to protect primary storage.
Strong design includes a clear data model mapping property listings to photos with explicit display order sequence numbers, variant object key paths, and upload state flags (e.g., pending, ready, failed).
Every functional requirement in the brief is visibly served by something on the board, and the non-functional targets are addressed rather than ignored.
Components are labelled, data flows are drawn as connections between them, and the direction of each flow is unambiguous.
Follow-up: How would your design adapt if a celebrity listing suddenly receives a 100x spike in traffic, without increasing origin bandwidth costs or causing cache stampedes?
Listings contain up to 50 photos each. Original photos are up to 15MB in JPEG or PNG format. Standard output display formats required: thumbnail (200x200), medium (800x600), and large (1920x1080). Direct uploads must not proxy heavy binary payloads through application servers.
- Views
- 6