2026년 5월 변경 이력
2026-05-06 (수)
✅ 이메일 시스템 구현 기준 확정
계정 보안, 결제 신뢰성, 운영 커뮤니케이션을 위한 이메일 시스템 설계를 구현 기준으로 확정했습니다.
- 이메일 모듈의 1차 우선순위를 회원가입 본인인증, 비밀번호 재설정/변경, 결제 성공 알림으로 정리
- 발신 주소를
noreply@vivid.place로 고정하고, SES 리전은 기존 AWS 리전을 사용하도록 결정 - local/dev는
EMAIL_DELIVERY_MODE=log, prod는EMAIL_DELIVERY_MODE=ses로 분리 - 신규 가입자는
isEmailVerified=false로 생성하고, 기존 가입자는isEmailVerified=true로 백필하도록 정리 - 미인증 계정은 로그인 자체를 차단하고, 프론트엔드가
EMAIL_NOT_VERIFIED에러 코드로 재발송 CTA를 표시하도록 설계 - 이메일 인증 토큰 TTL은 30분, 비밀번호 재설정 토큰 TTL은 15분으로 고정
- Redis에는 토큰 원문이 아닌 token hash만 저장하고, 인증/재설정 토큰은 단회 사용하도록 정의
- 메일 발송 파이프라인을
DB Outbox + SQS Standard Queue + EmailWorker + DLQ구조로 확정 - Dispatcher 주기는 prod 3초, local/dev 10초, batch size 10으로 정리
- SQS 발행 실패, 인증/비밀번호 메일 실패, 결제 알림 메일 실패의 재시도 정책을 타입별로 분리
- 결제 성공 메일은
PaymentsService.verifyAndProcessPayment()성공 이후 outbox에 기록하도록 설계
문서 반영
backend/EMAIL_SYSTEM.md