Question: Design a system that sends push notifications, emails, and SMS to millions of users.
Requirements: Multi-channel delivery, user preferences, rate limiting, retry on failure.
Architecture: Notification Service (receives requests), Priority Queue (SQS), Template Engine (renders messages), Channel Dispatchers (one per channel: push, email, SMS).
Flow: Request arrives with user ID, message type, and data. Service checks user preferences. Renders templates. Queues messages by priority. Each dispatcher handles delivery and retries.
Scale: Rate limit per user ( notifications per hour). Deduplicate to prevent double-sends. Separate queues per priority level. Dead letter queue for repeated failures.