Design: Media Sharing in Messages
Design covers media upload, storage, message integration, delivery, and retrieval. Does not cover user authentication or message text-only features.
Functional Requirements
FR1: Users can send and receive messages with media attachments (images, videos, audio).
FR2: Support media upload, storage, and retrieval with messages.
FR3: Allow preview of media in message threads.
FR4: Support media formats: JPEG, PNG, MP4, MP3.
FR5: Ensure media is delivered with messages in real-time or near real-time.
FR6: Users can download or view media inline.
FR7: Support up to 10 million daily active users.
FR8: Handle up to 100,000 concurrent media uploads.
FR9: Ensure media upload latency p99 < 3 seconds.
FR10: Ensure message delivery latency p99 < 500ms.
FR11: Ensure 99.9% system availability.
Non-Functional Requirements
NFR1: Media files can be up to 50MB each.
NFR2: Storage must be scalable and cost-effective.
NFR3: System must protect user privacy and secure media content.
NFR4: Support mobile and web clients.
NFR5: Media should be cached for fast retrieval.
NFR6: Use CDN for media delivery to reduce latency.
