Традиционный процесс регистрации пользователя с активацией по электронной почте состоит из следующих шагов:

  1. Получить информацию о пользователе
  2. Сохраненная информация о пользователе с дополнительными метаданными
    { emailActivationDone: false, emailActivationExpiration: 'now() + 30 minutes'}
  3. Отправить письмо со ссылкой для активации аккаунта
  4. Обработать URL-адрес ссылки для активации учетной записи, обновив настройки учетной записи
    { emailActivationDone: true }, если срок регистрации еще не истек
  5. Есть работа по удалению / отключению всех учетных записей
    where emailActivationDone == false AND emailActivationExpiration < getDate()

Обычный сценарий развертывания включает в себя приложение пользовательского интерфейса, которое собирает информацию о пользователе и отправляет его в пользовательский API. Пользовательский API создает нового пользователя в базе данных и отправляет электронное письмо, содержащее ссылку для активации. Внешнее приложение обрабатывает ссылку активации электронной почты, вызывая пользовательский API для активации пользователя (обновляя запись в базе данных пользователя). Запланированное задание очищает просроченные регистрации.

Использование функций Azure Durable в этом сценарии

Реализация устойчивой функции в этом сценарии выгодна по следующим причинам:

  • Единая единица развертывания: единое развертывание функции Azure реализует рабочий процесс, не требуя запланированного задания для очистки попыток регистрации с истекшим сроком действия.
  • упрощенная модель базы данных: пользователь создается в базе данных только после успешной активации электронной почты, оставляя вашу базу данных свободной от неполных регистраций пользователей.
  • гибкость: оркестровка рабочего процесса обеспечивает четко определенный контракт для запроса статуса запущенного экземпляра. Добавление проверки доменов из черного списка в рабочий процесс возможно без каких-либо изменений ни в одном из приложений вызывающего абонента.

Подробности реализации можно найти в репозитории GitHub по адресу https://github.com/fbeltrao/Samples/tree/master/serverless-user-email-confirmation