Bird
Raised Fist0
HLDsystem_design~7 mins

Fan-out on write vs fan-out on read in HLD - Architecture Trade-offs

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
Problem Statement
When a system needs to deliver updates to many users, doing all the work at once can cause delays or overload. If the system tries to send updates to every user immediately when data changes, it can slow down writes and increase failure risk. Conversely, if it waits until users request data, the read requests can become very slow and heavy, causing poor user experience.
Solution
Fan-out on write spreads the work of sending updates to all users right when data changes, so reads are fast later. Fan-out on read delays sending updates until a user asks for them, doing the work on demand to keep writes fast. Each method balances load differently between writing and reading to keep the system responsive.
Architecture
Data Source
(Write)
Fan-out on
Data Source
(Write)
Fan-out on

The top diagram shows fan-out on write where updates are pushed to user feeds immediately after data changes. The bottom diagram shows fan-out on read where user feeds are generated when users request them.

Trade-offs
✓ Pros
Fan-out on write makes user reads very fast since data is precomputed.
Fan-out on write reduces read-time computation and latency.
Fan-out on read keeps writes fast and simple, avoiding write bottlenecks.
Fan-out on read saves storage by computing feeds only when needed.
✗ Cons
Fan-out on write can cause slow writes and overload if many users must be updated.
Fan-out on write requires complex mechanisms to keep feeds consistent and handle failures.
Fan-out on read can cause slow reads and spikes in load when many users request data simultaneously.
Fan-out on read may lead to repeated computation for popular data, increasing resource use.
Use fan-out on write when read latency must be minimal and write load is manageable, typically under millions of users. Use fan-out on read when write speed is critical and user base is very large or highly dynamic.
Avoid fan-out on write if your system has extremely high write rates or millions of users causing write bottlenecks. Avoid fan-out on read if your application requires instant read responses or has predictable read patterns that benefit from precomputation.
Real World Examples
Twitter
Uses fan-out on write to push tweets to followers' timelines immediately, ensuring fast read experience.
Facebook
Uses a hybrid approach but relies heavily on fan-out on read for large user bases to compute news feeds on demand.
Instagram
Uses fan-out on write to deliver posts to followers quickly, optimizing for fast feed loading.
Alternatives
Hybrid Fan-out
Combines fan-out on write for active users and fan-out on read for less active users.
Use when: When user activity varies widely and you want to balance write and read load dynamically.
Pull-based Feed
Users fetch updates directly from source without precomputed feeds.
Use when: When user base is small or real-time data is critical without caching.
Summary
Fan-out on write pushes updates to all users immediately, making reads fast but writes heavier.
Fan-out on read delays update delivery until users request data, keeping writes light but reads heavier.
Choosing between them depends on system scale, read/write load, and latency requirements.

Practice

(1/5)
1. What is the main advantage of using fan-out on write in system design?
easy
A. Simpler read logic by fetching data on demand
B. Faster read operations by duplicating data during write
C. Reduced storage usage by avoiding data duplication
D. Faster write operations by delaying data duplication

Solution

  1. Step 1: Understand fan-out on write behavior

    Fan-out on write duplicates data to multiple places during the write operation.
  2. Step 2: Analyze impact on read speed

    This duplication allows reads to be faster because data is already pre-distributed and ready to access.
  3. Final Answer:

    Faster read operations by duplicating data during write -> Option B
  4. Quick Check:

    Fan-out on write = Faster reads [OK]
Hint: Fan-out on write means write duplicates data for fast reads [OK]
Common Mistakes:
  • Confusing fan-out on write with fan-out on read
  • Thinking fan-out on write reduces storage
  • Assuming writes are faster with fan-out on write
2. Which of the following best describes fan-out on read?
easy
A. Data is compressed during write to save storage
B. Data is duplicated during write to speed up reads
C. Data is cached permanently to reduce read latency
D. Data is fetched and combined during read to keep writes fast

Solution

  1. Step 1: Define fan-out on read

    Fan-out on read means data is not duplicated during write but fetched from multiple sources during read.
  2. Step 2: Understand write speed impact

    This keeps writes fast because no extra duplication work is done during write time.
  3. Final Answer:

    Data is fetched and combined during read to keep writes fast -> Option D
  4. Quick Check:

    Fan-out on read = Fast writes, complex reads [OK]
Hint: Fan-out on read delays data gathering until read time [OK]
Common Mistakes:
  • Mixing fan-out on read with fan-out on write
  • Assuming fan-out on read duplicates data during write
  • Confusing caching with fan-out on read
3. Consider a system using fan-out on write. If a user updates their profile, what happens during the write operation?
medium
A. The update is duplicated to multiple storage locations immediately
B. The update is written once and read fetches combine data later
C. The update is cached temporarily and written later asynchronously
D. The update is compressed and stored in a single location

Solution

  1. Step 1: Recall fan-out on write behavior

    Fan-out on write duplicates data during the write operation to multiple places.
  2. Step 2: Apply to user profile update

    When a user updates their profile, the system writes the update to all relevant storage locations immediately.
  3. Final Answer:

    The update is duplicated to multiple storage locations immediately -> Option A
  4. Quick Check:

    Fan-out on write = Immediate duplication on write [OK]
Hint: Fan-out on write duplicates data immediately on update [OK]
Common Mistakes:
  • Thinking update is written once and combined later
  • Confusing caching with fan-out on write
  • Assuming asynchronous write in fan-out on write
4. A system using fan-out on read is experiencing slow response times. What is a likely cause?
medium
A. Writes are slow due to data duplication
B. Storage is overloaded due to duplicated data
C. Reads are slow because data is fetched from multiple sources on demand
D. Data is compressed causing decompression delays

Solution

  1. Step 1: Understand fan-out on read read behavior

    Fan-out on read fetches data from multiple sources during read, which can add latency.
  2. Step 2: Analyze slow response cause

    Because reads combine data on demand, slow response times are likely due to this complex read process.
  3. Final Answer:

    Reads are slow because data is fetched from multiple sources on demand -> Option C
  4. Quick Check:

    Fan-out on read = Slow reads if sources are many [OK]
Hint: Fan-out on read can cause slow reads due to multiple fetches [OK]
Common Mistakes:
  • Blaming slow writes in fan-out on read
  • Assuming storage overload in fan-out on read
  • Confusing compression delays with fan-out issues
5. You are designing a social media feed system. Which approach is better if you want instant feed updates but can tolerate higher storage costs?
hard
A. Fan-out on write to duplicate feed data for fast reads
B. Fan-out on read to keep writes fast and storage low
C. Use caching only without fan-out
D. Compress data on write to save storage

Solution

  1. Step 1: Identify system needs

    Instant feed updates require fast reads with up-to-date data.
  2. Step 2: Match approach to needs

    Fan-out on write duplicates feed data during write, enabling fast reads and instant updates but uses more storage.
  3. Step 3: Evaluate other options

    Fan-out on read delays data gathering to read time, causing slower reads. Caching alone may not guarantee instant updates. Compression saves storage but slows access.
  4. Final Answer:

    Fan-out on write to duplicate feed data for fast reads -> Option A
  5. Quick Check:

    Instant updates + higher storage = Fan-out on write [OK]
Hint: Instant reads with more storage? Choose fan-out on write [OK]
Common Mistakes:
  • Choosing fan-out on read for instant updates
  • Ignoring storage cost impact
  • Assuming caching replaces fan-out needs