Планировщик порциями создаёт уникальные задания и outbox в БД, publisher отправляет их в Kafka, consumer вызывает SMS-провайдера. Ключ кредита, даты и типа напоминания подавляет повторное планирование.
Спроектируйте масштабируемый сервис ежедневных SMS-напоминаний о платеже по кредиту: данные о клиентах и кредитах находятся в БД, отправка SMS выполняется через Kafka. Учтите отказоустойчивость, дублирование, нагрузку и граничные случаи.
Планировщик порциями создаёт уникальные задания и outbox в БД, publisher отправляет их в Kafka, consumer вызывает SMS-провайдера. Ключ кредита, даты и типа напоминания подавляет повторное планирование.
Короткий ответ
Что ответить на собеседовании
Подробный разбор
Ответ с пояснениями
Планировщик порциями создаёт уникальные задания и outbox в БД, publisher отправляет их в Kafka, consumer вызывает SMS-провайдера. Ключ кредита, даты и типа напоминания подавляет повторное планирование.
Используйте keyset pagination и конкурентный захват с lease. Перед отправкой перепроверяйте долг, контакт, timezone и разрешённое время. Нужны retries с backoff, лимит провайдера и сверка неопределённых результатов. Kafka не отправляет SMS сама и не гарантирует однократный внешний эффект: нужен idempotency key провайдера либо явно согласованная обработка риска дублей.