This question evaluates expertise in large-scale system design and distributed messaging, assessing competencies in event-driven and batch processing, multi-channel delivery, message templating and personalization, user preference and compliance handling, reliability concerns like retries and deduplication, scalability strategies, and observability. It is commonly asked to probe architectural reasoning about throughput, fault tolerance, backpressure, rate limiting, routing and trade-offs between real-time versus bulk delivery, and it falls under the System Design and distributed systems/messaging domain with emphasis on practical application of high-level architectural patterns rather than low-level implementation details.
Design a notification system for a company at Airbnb-like scale that can send notifications to different user types (e.g., customers/guests, hosts, employees) through multiple delivery channels:
The system must support two delivery modes:
Describe an end-to-end design that covers:
You may assume existing product services emit events (booking, check-in, campaign creation, etc.) and your system consumes them to deliver notifications.