AlgoMaster Logo

Design Notification System

Medium Priorityeasy21 min readUpdated June 27, 2026
Practice this Problem

In this chapter, we will explore the low-level design of a Notification System in detail.

Let’s start by clarifying the requirements:

1. Clarifying Requirements

Before diving into the design, it’s essential to clarify how the notification system is expected to behave. Asking the right questions helps uncover assumptions and define boundaries.

After gathering the details, we can summarize the key system requirements.

Functional Requirements
  • The system should support sending notifications via EMAIL, SMS, and PUSH.
  • Each notification targets a single recipient and a specific channel.
  • The system should send notifications asynchronously.
  • If sending fails, the system should retry the operation a few times before giving up.
  • Notifications may contain a subject (optional) and a message body (mandatory).
Non-Functional Requirements
  • The system should follow object-oriented design with clear separation of concerns.
  • It should be extensible, allowing future support for new notification types (e.g., WhatsApp, Slack).
  • Delivery should be non-blocking, using a thread pool to manage parallel sending.

2. Identifying Core Entities

Premium Content

This content is for premium members only.