Отправка писем прямо в HTTP-обработчике
Регистрация реализована так: в обработчике POST /signup сервис создаёт пользователя, затем синхронно отправляет приветственное письмо через внешний SMTP-сервис и только после этого отвечает клиенту. SMTP иногда отвечает по 10–15 секунд.
Что в этой схеме плохо и как её обычно перестраивают?
- Пользователь ждёт внешний сервис и видит ошибку регистрации, хотя аккаунт создан; письмо надо отправлять фоном через очередь
- Ничего страшного: пользователь должен убедиться, что письмо ушло, до окончания регистрации — иначе он не узнает о проблеме
- Проблема в SMTP: протокол синхронный по своей природе, достаточно перейти на HTTP-API провайдера, и задержки исчезнут
- Нужно увеличить таймаут HTTP-сервера и клиента, чтобы медленные ответы SMTP успевали дойти и регистрация не обрывалась
