Design a Reliable Notification System

Quick Overview

Design notification storage, recipient fanout, high-traffic processing, and reliable delivery with recoverable state and long-term operational trade-offs.

Design a Reliable Notification System

Company: Meta

Role: Software Engineer

Category: System Design

Difficulty: medium

Interview Round: Technical Screen

Design a notification system. Explain the storage choices, recipient fanout strategy, behavior under high traffic, and reliability model. Include the operational trade-offs and maintenance concerns that matter after the initial design is deployed. ### Constraints and Clarifying Questions - Clarify notification sources, channels, recipient counts, arrival patterns, latency goals, and retention needs. No specific channels or numerical targets are supplied. - Establish whether recipients are fixed when an event is accepted or evaluated later. - Define what accepted, attempted, delivered, and failed mean for each chosen channel. - Ask about preferences, ordering, duplicate tolerance, and whether old notifications can become irrelevant. ### Part 1 — Accept and Store Notification Work Describe the path from a producer's request to durable notification work. Choose storage for event data, recipient or subscription information, and delivery progress. #### What This Part Should Cover - Stable identities, validation, durable acceptance, and retry handling. - Storage choices connected to access patterns and consistency needs. - A recoverable link between accepted events and work that must be dispatched. ### Part 2 — Fan Out and Handle High Traffic Explain how one event reaches its recipients and how the design behaves under large audiences, hot partitions, bursts, and a constrained downstream channel. #### What This Part Should Cover - An explicit fanout strategy and the point at which recipient membership is determined. - Bounded batching, partitioning, and backpressure. - Scheduling or isolation choices that prevent one large workload from blocking unrelated notifications. ### Part 3 — Deliver Reliably and Maintain the System Explain failure recovery, delivery-state updates, and how operators identify and repair incomplete work. Describe how the design can evolve without breaking existing producers or losing accepted notifications. #### What This Part Should Cover - Retry and duplicate-handling behavior at the external delivery boundary. - Clear state semantics and reconciliation of ambiguous outcomes. - Useful monitoring, retention, replay, and schema-evolution policies. ```hint Trace one accepted notification Follow one logical notification across a process crash, a large fanout, and an uncertain channel response. Identify the durable identity and evidence used at each boundary. ``` ### What a Strong Answer Covers - A coherent data and processing model tied to the stated workload. - Scalable fanout that respects channel limits and preserves recoverability. - Operational reasoning about failures, duplicate effects, and long-term changes. ### Follow-up Questions - What changes when an event targets a very large audience rather than a single recipient? - How would you replay a failed batch without re-notifying recipients whose delivery already completed? - Which records must survive long enough to support the chosen retry and reconciliation guarantees?

Overview: Design notification storage, recipient fanout, high-traffic processing, and reliable delivery with recoverable state and long-term operational trade-offs.

|Home/System Design/Meta
Meta logo
Meta
Aug 25, 2026
mediumSoftware EngineerTechnical ScreenSystem Design
0
0

Design a notification system. Explain the storage choices, recipient fanout strategy, behavior under high traffic, and reliability model. Include the operational trade-offs and maintenance concerns that matter after the initial design is deployed.

Constraints and Clarifying Questions

  • Clarify notification sources, channels, recipient counts, arrival patterns, latency goals, and retention needs. No specific channels or numerical targets are supplied.
  • Establish whether recipients are fixed when an event is accepted or evaluated later.
  • Define what accepted, attempted, delivered, and failed mean for each chosen channel.
  • Ask about preferences, ordering, duplicate tolerance, and whether old notifications can become irrelevant.

Part 1 — Accept and Store Notification Work

Describe the path from a producer's request to durable notification work. Choose storage for event data, recipient or subscription information, and delivery progress.

What This Part Should Cover Guidance

  • Stable identities, validation, durable acceptance, and retry handling.
  • Storage choices connected to access patterns and consistency needs.
  • A recoverable link between accepted events and work that must be dispatched.

Part 2 — Fan Out and Handle High Traffic

Explain how one event reaches its recipients and how the design behaves under large audiences, hot partitions, bursts, and a constrained downstream channel.

What This Part Should Cover Guidance

  • An explicit fanout strategy and the point at which recipient membership is determined.
  • Bounded batching, partitioning, and backpressure.
  • Scheduling or isolation choices that prevent one large workload from blocking unrelated notifications.

Part 3 — Deliver Reliably and Maintain the System

Explain failure recovery, delivery-state updates, and how operators identify and repair incomplete work. Describe how the design can evolve without breaking existing producers or losing accepted notifications.

What This Part Should Cover Guidance

  • Retry and duplicate-handling behavior at the external delivery boundary.
  • Clear state semantics and reconciliation of ambiguous outcomes.
  • Useful monitoring, retention, replay, and schema-evolution policies.

What a Strong Answer Covers Guidance

  • A coherent data and processing model tied to the stated workload.
  • Scalable fanout that respects channel limits and preserves recoverability.
  • Operational reasoning about failures, duplicate effects, and long-term changes.

Follow-up Questions Guidance

  • What changes when an event targets a very large audience rather than a single recipient?
  • How would you replay a failed batch without re-notifying recipients whose delivery already completed?
  • Which records must survive long enough to support the chosen retry and reconciliation guarantees?

Submit Your Answer to Earn 20XP

Sign in to leave a comment

Loading comments...