πŸŽ‰ 75% of content is free forever β€” Unlock Premium from $10/mo β†’
CW
Search courses…
πŸ’Ό Servicesℹ️ Aboutβœ‰οΈ ContactView Pricing Plansfrom $10

Design Instagram

System Design ProblemsSocial Media Systems🟒 Free Lesson

Advertisement

System Design Problems

Design Instagram

Instagram serves 2B+ monthly active users with 100M+ photos uploaded daily. This design covers feed generation, media storage, social graph management, and real-time notifications.

  • Scale β€” 2B MAU, 100M photos/day, 500M stories/day
  • Feed β€” Personalized ranking with sub-100ms latency
  • Media β€” Multi-resolution storage and CDN delivery

Instagram is a masterclass in building systems that balance real-time social interactions with massive media delivery.

Requirements Clarification

Functional Requirements

  1. Upload photos/videos with captions
  2. View personalized feed of posts from followed users
  3. Like, comment, and share posts
  4. Follow/unfollow users
  5. View stories (24-hour ephemeral content)
  6. Direct messaging with media sharing
  7. Explore/discover trending content

Non-Functional Requirements

  1. Availability: 99.99% uptime
  2. Latency: Feed loads < 200ms
  3. Durability: Media must never be lost
  4. Consistency: Eventual consistency for feed, strong for actions
  5. Scale: 100M photo uploads/day, 1B feed reads/day

Instagram's key insight: Feed generation is the most complex problem. With 1000+ followed users per person, computing a personalized feed requires sophisticated ranking algorithms and caching strategies.

Back-of-the-Envelope Estimation

Feed Read QPS

QPSread=2Γ—109Γ—1086400β‰ˆ231K\text{QPS}_{\text{read}} = \frac{2 \times 10^9 \times 10}{86400} \approx 231K

Here,

  • 2B2B=Daily active users
  • 1010=Feed views per user per day
  • 8640086400=Seconds in a day

Storage Estimation

Photo storage:

  • Average photo size: 2MB
  • 100M photos/day Γ— 2MB = 200TB/day
  • With 3 copies (replication) = 600TB/day
  • With multiple resolutions: 600TB Γ— 3 = 1.8PB/day

Metadata storage:

  • 100M records Γ— 1KB = 100GB/day
  • User data: 2B users Γ— 5KB = 10TB total

High-Level Architecture

ClientsCDNAPI Gateway / Load BalancerPost ServiceUpload/MetadataFeed ServiceFan-out/RankingSocial GraphFollow RelationsMedia ServiceProcessing/CDNNotificationPush/Email/SMSMessage Queue (Kafka)Feed Cache(Redis Cluster)User Cache(Redis Cluster)Social Cache(Redis Cluster)Post DB(MySQL Sharded)User DB(MySQL Primary)Graph DB(Neo4j/JanusGraph)Object Storage(S3/GCS)Search Index (Elasticsearch)

Feed Generation Deep Dive

Fan-out on Write vs Fan-out on Read

DfFan-out Strategies

Fan-out on write: When a user posts, immediately push the post ID to all followers' feed caches. Fast reads but expensive for users with millions of followers.

Fan-out on read: When a user requests their feed, pull posts from all followed users and merge. Always fresh but slow for users following many accounts.

Instagram uses a hybrid approach: fan-out on write for most users, fan-out on read for celebrities (users with >10K followers).

Fan-out Cost Comparison

Fan-outΒ onΒ Write:Β O(f)Β perΒ post,Β O(1)Β perΒ read\text{Fan-out on Write: } O(f) \text{ per post, } O(1) \text{ per read}

Here,

  • ff=Number of followers
  • O(f)O(f)=Write cost proportional to followers
  • O(1)O(1)=Constant read cost

Fan-out on Read Cost

Fan-outΒ onΒ Read:Β O(1)Β perΒ post,Β O(k)Β perΒ read\text{Fan-out on Read: } O(1) \text{ per post, } O(k) \text{ per read}

Here,

  • kk=Number of followed users
  • O(k)O(k)=Read cost proportional to followed users

Feed Ranking Algorithm

DfMulti-Stage Ranking

Instagram's feed ranking uses a multi-stage approach:

  1. Candidate Generation: Retrieve recent posts from followed users
  2. Initial Scoring: Fast heuristic scoring
  3. ML Ranking: Deep learning model for personalization
  4. Blending: Mix with ads and suggested content

Feed Score Components

S=w1β‹…Raffinity+w2β‹…Rtimeliness+w3β‹…Rtype+w4β‹…RengagementS = w_1 \cdot R_{\text{affinity}} + w_2 \cdot R_{\text{timeliness}} + w_3 \cdot R_{\text{type}} + w_4 \cdot R_{\text{engagement}}

Here,

  • RextaffinityR_{ ext{affinity}}=Relationship affinity score
  • RexttimelinessR_{ ext{timeliness}}=Recency score
  • RexttypeR_{ ext{type}}=Content type preference
  • RextengagementR_{ ext{engagement}}=Predicted engagement

Media Processing Pipeline

UploadValidationProcessResizeCDN PushMedia Processing PipelineGenerate thumbnails, apply filters, extract EXIF, content moderation, virus scan

Data Model

Post Schema

Post=(post_id,user_id,media_urls[],caption,location,timestamp,likes_count,comments_count)\text{Post} = (post\_id, user\_id, media\_urls[], caption, location, timestamp, likes\_count, comments\_count)

Here,

  • postidpost_id=Unique post identifier (ULID)
  • mediaurls[]media_urls[]=Array of media URLs at different resolutions
  • likescountlikes_count=Denormalized like count

Scaling Strategies

Horizontal Sharding

DfSharding by User ID

Posts are sharded by user_id using consistent hashing. This ensures all posts from a single user are on the same shard, enabling efficient queries for user profiles.

The challenge with user-based sharding: celebrity users create hotspots. Instagram solves this with read replicas and caching for high-traffic users.

Practice Exercises

  1. Feed Design: How would you handle the case where a user follows someone who has posted 1000 times in the last hour? How do you prevent feed flooding?

  2. Media Storage: Design a multi-resolution image storage system. How do you determine which resolutions to generate and store?

  3. Consistency: When a user likes a post, how do you ensure the like count is eventually consistent across all read replicas while avoiding race conditions?

  4. Optimization: How would you reduce the latency of feed generation for users who follow 5000+ accounts?

Key Takeaways:

  • Instagram uses hybrid fan-out (write for normal users, read for celebrities)
  • Feed ranking is a multi-stage ML pipeline
  • Media processing requires async pipelines with multiple resolutions
  • Sharding by user_id with special handling for celebrity hotspots
  • CDN is critical for media delivery performance

What to Learn Next

-> Design Twitter Real-time feeds, fan-out, and timeline generation.

-> Design Facebook Social graph, news feed, and platform architecture.

-> Design YouTube Video streaming and transcoding at scale.

-> Design Netflix Content delivery and recommendation systems.

-> CAP Theorem Understanding consistency vs availability trade-offs.

-> Caching Strategies Write-through, write-back, and cache invalidation.

⭐

Premium Content

Design Instagram

Unlock this lesson and 900+ advanced tutorials with a Premium plan.

🎯End-to-end Projects
πŸ’ΌInterview Prep
πŸ“œCertificates
🀝Community Access

Already a member? Log in

Need Expert System Design Help?

Get personalized tutoring, project support, or professional consulting.

Advertisement