Bird
Raised Fist0
HLDsystem_design~5 mins

Notification system design in HLD - Cheat Sheet & Quick Revision

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
Recall & Review
beginner
What is the main purpose of a notification system in software architecture?
To deliver timely messages or alerts to users or systems, ensuring they receive important information or updates.
Click to reveal answer
beginner
Name two common types of notifications in system design.
Push notifications (sent to devices) and email notifications (sent via email servers).
Click to reveal answer
intermediate
Why is scalability important in a notification system?
Because the system must handle increasing numbers of users and messages without delays or failures, especially during peak times.
Click to reveal answer
intermediate
What role does a message queue play in a notification system?
It temporarily stores notifications to be processed asynchronously, helping to balance load and improve reliability.
Click to reveal answer
advanced
How can a notification system ensure message delivery reliability?
By implementing retries, acknowledgments, and durable storage to avoid message loss and confirm delivery.
Click to reveal answer
Which component is typically responsible for sending notifications to users?
ACache
BDatabase
CLoad balancer
DNotification sender service
What is the benefit of using a message queue in a notification system?
ATo store user profiles
BTo increase database size
CTo process notifications asynchronously
DTo reduce network bandwidth
Which of the following is NOT a common notification channel?
AFTP
BEmail
CSMS
DPush notifications
How can a notification system handle peak loads effectively?
ABy scaling horizontally and using queues
BBy ignoring some notifications
CBy storing notifications only in memory
DBy sending notifications synchronously
What is a common method to confirm that a notification was delivered?
ALoad balancing
BUser acknowledgment
CDatabase backup
DCaching
Explain the key components of a scalable notification system and how they interact.
Think about how messages flow from creation to delivery.
You got /5 concepts.
    Describe strategies to ensure reliability and fault tolerance in a notification system.
    Consider what happens if a message fails to deliver.
    You got /5 concepts.

      Practice

      (1/5)
      1. Which component in a notification system is primarily responsible for storing user preferences about how they want to receive notifications?
      easy
      A. User Management Service
      B. Notification Delivery Service
      C. Notification Queue
      D. Notification Generator

      Solution

      1. Step 1: Understand user preferences role

        User preferences define how users want to receive notifications (email, SMS, push).
      2. Step 2: Identify responsible component

        The User Management Service stores and manages user data including preferences.
      3. Final Answer:

        User Management Service -> Option A
      4. Quick Check:

        User preferences stored in User Management Service [OK]
      Hint: User preferences belong to user data, so User Management Service [OK]
      Common Mistakes:
      • Confusing Notification Queue as storage for preferences
      • Thinking Notification Delivery Service stores preferences
      • Assuming Notification Generator manages user data
      2. Which of the following is the correct sequence of components involved in sending a notification from creation to delivery?
      easy
      A. User Management Service -> Notification Delivery Service -> Notification Generator
      B. Notification Delivery Service -> Notification Queue -> Notification Generator
      C. Notification Queue -> Notification Generator -> Notification Delivery Service
      D. Notification Generator -> Notification Queue -> Notification Delivery Service

      Solution

      1. Step 1: Understand notification flow

        Notifications are created, queued, then delivered.
      2. Step 2: Match correct order

        Notification Generator creates, Notification Queue holds, Delivery Service sends.
      3. Final Answer:

        Notification Generator -> Notification Queue -> Notification Delivery Service -> Option D
      4. Quick Check:

        Creation, queue, delivery order = A [OK]
      Hint: Notifications flow: create, queue, then deliver [OK]
      Common Mistakes:
      • Mixing delivery before queuing
      • Starting with delivery service instead of generator
      • Ignoring the queue component
      3. Consider this simplified flow: A notification is created and placed in a queue. The delivery service fetches notifications from the queue and sends them. If the delivery service crashes after fetching but before sending, what happens to the notification?
      medium
      A. Notification is lost and never sent
      B. Notification is duplicated and sent twice
      C. Notification remains in the queue for retry
      D. Notification is sent immediately by the generator

      Solution

      1. Step 1: Analyze delivery service crash timing

        Crash occurs after fetching from queue but before sending notification.
      2. Step 2: Understand queue behavior with acknowledgment

        Without acknowledgment, message stays or returns to queue for retry.
      3. Final Answer:

        Notification remains in the queue for retry -> Option C
      4. Quick Check:

        Unacknowledged messages stay in queue [OK]
      Hint: Unsent messages stay in queue until confirmed sent [OK]
      Common Mistakes:
      • Assuming notification is lost without retry
      • Thinking notification is duplicated automatically
      • Believing generator sends notification directly
      4. A notification system is experiencing delays because the delivery service processes notifications sequentially. Which change will best improve throughput without losing message order?
      medium
      A. Store notifications only in the database without queue
      B. Add multiple delivery service instances with partitioned queues
      C. Use a single-threaded delivery service with longer timeouts
      D. Remove the queue and send notifications directly

      Solution

      1. Step 1: Identify bottleneck cause

        Sequential processing limits throughput.
      2. Step 2: Apply partitioned queues with multiple instances

        Partitioning allows parallel processing while preserving order per partition.
      3. Final Answer:

        Add multiple delivery service instances with partitioned queues -> Option B
      4. Quick Check:

        Parallelism with partitioning improves throughput [OK]
      Hint: Partition queues to parallelize delivery without breaking order [OK]
      Common Mistakes:
      • Removing queue loses reliability and order
      • Single-threaded service slows throughput
      • Storing only in DB delays delivery
      5. You need to design a notification system that supports millions of users with different notification preferences and guarantees delivery within seconds. Which architectural approach best meets these requirements?
      hard
      A. Implement microservices with separate components for user preferences, notification generation, queuing, and delivery with horizontal scaling
      B. Use a monolithic service handling all notifications synchronously
      C. Store all notifications in a single database table and poll it every minute for delivery
      D. Send notifications directly from the user management service without queues

      Solution

      1. Step 1: Analyze scalability and latency needs

        Millions of users and seconds-level delivery require scalable, decoupled design.
      2. Step 2: Choose microservices with separate components and horizontal scaling

        This approach allows independent scaling, fault isolation, and faster processing.
      3. Final Answer:

        Implement microservices with separate components for user preferences, notification generation, queuing, and delivery with horizontal scaling -> Option A
      4. Quick Check:

        Microservices + scaling = scalable, fast delivery [OK]
      Hint: Decouple components and scale horizontally for millions of users [OK]
      Common Mistakes:
      • Using monolith limits scalability and speed
      • Polling DB every minute causes delays
      • Skipping queues reduces reliability