What if sharing your favorite moments in chat was as easy as sending a text?
Why Media sharing in messages in HLD? - Purpose & Use Cases
Start learning this pattern below
Jump into concepts and practice - no test required
Imagine trying to send photos and videos to your friends by manually attaching files every time in a chat app that was not designed for media. You have to upload each file separately, wait for it to finish, and then send a message with a link or description. It feels slow and clunky, especially when you want to share many files quickly.
This manual method is slow because each file upload is separate and not optimized. It is error-prone since files can fail to upload or get lost. Users get frustrated waiting for uploads and managing links. The app can become unstable or crash with large files. Overall, it makes sharing media a painful experience.
Media sharing in messages solves this by integrating file uploads directly into the messaging flow. It handles multiple files efficiently, shows upload progress, and stores media securely. Users can send images, videos, and audio seamlessly as part of their conversations. This makes sharing fast, reliable, and enjoyable.
uploadFile(file1);
uploadFile(file2);
sendMessage('See my photos');sendMessage({ text: 'See my photos', media: [file1, file2] });It enables instant, rich conversations where users can express themselves beyond text by sharing memories and moments through media effortlessly.
Think of WhatsApp or Messenger where you tap the attachment icon, select multiple photos, and send them all at once within the chat. The app shows thumbnails and upload progress, making sharing smooth and fun.
Manual file sharing in messages is slow and frustrating.
Integrated media sharing makes uploads seamless and reliable.
Users enjoy richer, faster conversations with photos and videos.
Practice
Solution
Step 1: Understand media file size impact
Media files like photos and videos are large and can slow down message storage if kept together.Step 2: Separate storage benefits
Separating media storage allows using specialized systems like CDNs and cloud storage optimized for large files.Final Answer:
To improve performance and scalability by handling large media files separately -> Option CQuick Check:
Separate media storage = better performance [OK]
- Thinking media size doesn't affect performance
- Confusing UI design with storage design
- Ignoring scalability needs
Solution
Step 1: Identify media delivery needs
Media files are large and need fast delivery to users worldwide.Step 2: Role of CDN
A CDN caches media files close to users, reducing latency and bandwidth usage.Final Answer:
Content Delivery Network (CDN) -> Option AQuick Check:
Fast media delivery = CDN [OK]
- Confusing CDN with database indexing
- Thinking load balancers handle media files
- Ignoring network latency
Solution
Step 1: Understand media upload flow
Media files are large, so they are uploaded separately to cloud storage for efficiency.Step 2: Message stores media reference
The message contains a URL pointing to the media location, not the media itself.Final Answer:
The photo is uploaded to cloud storage and the message stores a URL pointing to it -> Option BQuick Check:
Media URL in message = cloud upload [OK]
- Embedding large media in message text
- Using base64 which increases size
- Storing media in message queues
Solution
Step 1: Identify problem with current design
Storing large media in the database slows down queries and reduces scalability.Step 2: Apply best practice for media storage
Moving media to cloud storage and storing URLs improves performance and scalability.Final Answer:
Move media files to cloud storage and store only URLs in the database -> Option DQuick Check:
Separate media storage = faster queries [OK]
- Relying only on hardware upgrades
- Compressing media but still storing in DB
- Removing media reduces feature, not fix
Solution
Step 1: Analyze scalability needs
Millions of users require scalable storage and fast delivery without overloading servers.Step 2: Choose best architecture components
Cloud storage handles large media files reliably; CDN speeds up delivery globally; storing URLs keeps messages lightweight.Step 3: Evaluate other options
Single server or embedding media causes bottlenecks; peer-to-peer lacks reliability and control.Final Answer:
Upload media to cloud storage, use a CDN for delivery, and store media URLs in messages -> Option AQuick Check:
Cloud storage + CDN + URLs = scalable media sharing [OK]
- Storing media in DB causing bottlenecks
- Sending base64 increases message size
- Ignoring global delivery speed
