Bird
Raised Fist0
HLDsystem_design~25 mins

Media storage and CDN in HLD - System Design Exercise

Choose your learning style10 modes available

Start learning this pattern below

Jump into concepts and practice - no test required

or
Recommended
Test this pattern10 questions across easy, medium, and hard to know if this pattern is strong
Design: Media Storage and CDN System
Includes media upload, storage, CDN distribution, access control, and analytics. Excludes media editing or transcoding features.
Functional Requirements
FR1: Store large volumes of media files (images, videos, audio) uploaded by users
FR2: Serve media content to users with low latency globally
FR3: Support high read traffic with caching and content delivery
FR4: Allow secure access to media files with authentication and authorization
FR5: Support media file versioning and updates
FR6: Provide analytics on media access patterns
Non-Functional Requirements
NFR1: Handle 1 million media uploads per day
NFR2: Support 10 million daily media content requests globally
NFR3: API response latency for media requests should be under 200ms (p99)
NFR4: System availability target of 99.9% uptime
NFR5: Data durability with replication and backups
Think Before You Design
Questions to Ask
❓ Question 1
❓ Question 2
❓ Question 3
❓ Question 4
❓ Question 5
❓ Question 6
Key Components
Object storage service for media files
Content Delivery Network (CDN) for caching and global delivery
API gateway for upload and access requests
Authentication and authorization service
Metadata database for media info and versions
Logging and analytics service
Design Patterns
Cache-aside pattern for CDN caching
Event-driven invalidation for cache updates
Multi-region replication for durability and availability
Token-based secure access to media URLs
Reference Architecture
Client
  |
  | HTTP Upload/Download Requests
  v
API Gateway --- Authentication Service
  |
  | Upload -> Store metadata
  | Download -> Validate access
  v
Metadata DB <-> Object Storage (S3-like)
  |
  | Media files
  v
CDN Edge Locations
  |
  | Cached media delivery
  v
Clients Worldwide

Analytics Service collects logs from API Gateway and CDN
Components
API Gateway
Nginx or AWS API Gateway
Handles client requests for media upload and download, routes to backend services
Authentication Service
OAuth 2.0 / JWT
Validates user identity and permissions for media access
Metadata Database
PostgreSQL or DynamoDB
Stores media metadata, user info, versions, and access control data
Object Storage
Amazon S3 or MinIO
Stores actual media files with high durability and scalability
Content Delivery Network (CDN)
Cloudflare, AWS CloudFront, or Akamai
Caches media files at edge locations for low latency global delivery
Analytics Service
Elastic Stack or Google BigQuery
Collects and analyzes access logs for usage patterns and metrics
Request Flow
1. User uploads media file via API Gateway
2. API Gateway authenticates user via Authentication Service
3. Metadata about media is stored in Metadata Database
4. Media file is stored in Object Storage
5. User requests media download via API Gateway
6. API Gateway validates access with Authentication Service
7. Request is routed to CDN edge location
8. If media is cached in CDN, it is served directly to user
9. If not cached, CDN fetches media from Object Storage
10. Access logs are sent to Analytics Service for processing
Database Schema
Entities: - User (user_id, name, email, roles) - MediaFile (media_id, user_id, filename, size, content_type, upload_timestamp, version, access_permissions) - MediaVersion (version_id, media_id, version_number, created_at, metadata) - AccessLog (log_id, media_id, user_id, access_time, action_type) Relationships: - User 1:N MediaFile - MediaFile 1:N MediaVersion - MediaFile 1:N AccessLog
Scaling Discussion
Bottlenecks
Object Storage throughput limits under heavy upload/download
API Gateway becoming a request bottleneck
Metadata Database write/read load with millions of media files
CDN cache misses causing latency spikes
Authentication Service latency under high concurrent requests
Solutions
Use scalable object storage with multi-region replication and parallel uploads
Deploy multiple API Gateway instances behind load balancers
Use a horizontally scalable NoSQL database or sharded relational DB for metadata
Implement cache pre-warming and efficient cache invalidation strategies
Use stateless authentication tokens (JWT) to reduce authentication service load
Interview Tips
Time: 10 minutes for requirements and clarifications, 15 minutes for architecture and components, 10 minutes for scaling and trade-offs, 10 minutes for Q&A
Clarify media types, sizes, and access patterns early
Explain choice of object storage and CDN for scalability and latency
Discuss security with authentication and authorization
Describe caching strategy and cache invalidation
Highlight how system handles scale and availability
Mention analytics for monitoring usage and performance

Practice

(1/5)
1. What is the main purpose of a Content Delivery Network (CDN) in media storage systems?
easy
A. To store original media files permanently
B. To cache media files closer to users for faster access
C. To compress media files before storage
D. To encrypt media files for security

Solution

  1. Step 1: Understand CDN role

    A CDN stores copies of media files in servers near users to reduce latency.
  2. Step 2: Differentiate storage vs delivery

    Media storage holds original files; CDN speeds up delivery by caching.
  3. Final Answer:

    To cache media files closer to users for faster access -> Option B
  4. Quick Check:

    CDN = cache near users [OK]
Hint: CDN = cache near users for speed [OK]
Common Mistakes:
  • Confusing CDN with permanent storage
  • Thinking CDN compresses files
  • Assuming CDN encrypts files
2. Which of the following is the correct sequence for serving media using storage and CDN?
easy
A. User requests -> CDN cache -> Origin storage if cache miss
B. User requests -> Origin storage -> CDN cache
C. CDN cache -> User requests -> Origin storage
D. Origin storage -> CDN cache -> User requests

Solution

  1. Step 1: Understand request flow

    User first hits CDN cache to get media quickly.
  2. Step 2: Handle cache miss

    If CDN cache misses, it fetches from origin storage and caches it.
  3. Final Answer:

    User requests -> CDN cache -> Origin storage if cache miss -> Option A
  4. Quick Check:

    Request flow = User -> CDN -> Storage [OK]
Hint: Requests hit CDN first, then storage if needed [OK]
Common Mistakes:
  • Thinking origin storage serves user directly every time
  • Reversing CDN and storage order
  • Ignoring cache miss step
3. Consider a system where media files are stored in cloud storage and served via CDN. If the CDN cache TTL (time-to-live) is set to 1 hour, what happens when a media file is updated in storage immediately after a user requests it?
medium
A. User gets the updated file immediately from CDN
B. CDN automatically invalidates cache and fetches new file
C. User gets the old cached file from CDN until TTL expires
D. User request fails until cache refresh

Solution

  1. Step 1: Understand CDN TTL effect

    TTL controls how long CDN keeps cached copy before checking origin.
  2. Step 2: Effect of update during TTL

    Until TTL expires, CDN serves cached old file despite origin update.
  3. Final Answer:

    User gets the old cached file from CDN until TTL expires -> Option C
  4. Quick Check:

    Cache TTL = old file served until expiry [OK]
Hint: Cache TTL controls update delay [OK]
Common Mistakes:
  • Assuming CDN always fetches fresh file immediately
  • Thinking cache invalidates automatically on update
  • Believing user request fails on stale cache
4. A developer implemented a media delivery system using CDN and storage but users report slow media loading. Which of the following is the most likely cause?
medium
A. CDN is caching files for too long
B. Media files are too small to benefit from CDN
C. Storage is located in the same region as users
D. CDN cache miss due to incorrect cache headers

Solution

  1. Step 1: Analyze slow loading cause

    Slow loading often happens if CDN cache misses and fetches from origin repeatedly.
  2. Step 2: Identify cache header role

    Incorrect or missing cache headers prevent CDN from caching files properly.
  3. Final Answer:

    CDN cache miss due to incorrect cache headers -> Option D
  4. Quick Check:

    Cache headers control CDN caching [OK]
Hint: Check cache headers if CDN misses often [OK]
Common Mistakes:
  • Assuming small files don't benefit from CDN
  • Thinking storage location alone causes slowness
  • Believing long cache time causes slow loading
5. You are designing a global media storage system with CDN for a video streaming service. Which combination best improves scalability and user experience?
hard
A. Store media in a single central region and use CDN with regional edge caches
B. Store media in multiple regions without CDN to reduce latency
C. Use CDN only without origin storage to reduce costs
D. Store media locally on user devices to avoid network delays

Solution

  1. Step 1: Consider storage and CDN roles

    Central storage simplifies management; CDN edge caches bring content close to users.
  2. Step 2: Evaluate options for scalability and latency

    Multiple regions without CDN adds complexity; CDN without origin lacks source; local storage is impractical.
  3. Final Answer:

    Store media in a single central region and use CDN with regional edge caches -> Option A
  4. Quick Check:

    Central storage + CDN edges = scalable & fast [OK]
Hint: Central storage + CDN edges = best scalability [OK]
Common Mistakes:
  • Ignoring CDN benefits by using multi-region storage only
  • Thinking CDN can replace origin storage
  • Assuming local user storage is feasible