AWS SES 기반 대량 이메일 발송 시스템 구축기: 비용 효율성, 확장성, 그리고 추적 기능 확보
🤖 AI 추천
이 글은 AWS SES, GraphQL, MongoDB, Node.js 등을 활용하여 비용 효율성과 확장성을 갖춘 대량 이메일 발송 시스템을 직접 구축한 경험을 공유합니다. 특히 트랜잭션 이메일, 정기 리포트, 타겟팅 발송 등 다양한 요구사항을 충족시키면서 커스터마이징, 비용 절감, 추적 가능성까지 확보하려는 프론트엔드 및 백엔드 개발자, 시스템 아키텍트에게 실질적인 도움을 줄 수 있습니다.
🔖 주요 키워드

핵심 기술: AWS SES를 기반으로 GraphQL, MongoDB, Node.js, ArgoCD, Kubernetes 등을 활용하여 비용 효율적이고 확장 가능한 대량 이메일 발송 시스템을 구축하는 과정과 아키텍처를 상세히 설명합니다.
기술적 세부사항:
* 목표: 비용 효율성, 확장성, 커스터마이징, 추적 가능성 확보
* 주요 요구사항: 트랜잭션 이메일, 정기 리포트, 타겟팅 발송
* 선택 스택:
* 이메일 전송: AWS SES (Simple Email Service)
* API 서버: GraphQL (Apollo Federation)
* 데이터 저장: MongoDB (사용자 정보, 발송 이력)
* 워크플로우/모듈화: Node.js (Express 기반)
* 스케줄 관리: ArgoCD + Kubernetes CronJob
* 이벤트 수집/모니터링: AWS SNS + CloudWatch
* 이메일 발송 플로우:
1. 대상자 필터링
2. 워크플로우 트리거
3. 배치 발송 컨트롤러
4. GraphQL API 호출
5. AWS SES 발송
6. 이벤트 발생 (Open, Click, Bounce)
7. AWS SNS → Webhook → MongoDB 업데이트
* 주요 구현 기능:
* 발송 대상자 동적 필터링
* 언어 분기 자동화 (템플릿명_kr, 템플릿명_en)
* 발송 실패 시 3회 재시도 로직
* 이메일 오픈 및 클릭 추적
* 수신거부 처리 및 이력 기록
* 템플릿 생성 및 수정
* 단일 및 최대 50명 대상 일괄 발송
* 이벤트 기반 자동 발송
* 사용자별/메시지별 발송 이력 조회
* 워크플로우 상세:
* DB에서 필터 조건에 따라 대상자 추출
* 1,000명 단위 분리, 50명 단위 배치 발송
* 이메일 중복 제거, 언어별 분리, 재발송 로직 포함
* 트래픽 관리를 위한 발송 지연
* AWS SES 설정:
* Region: us-east-1
* 일일 발송 제한량: 200,000건
* Configuration Set: 이벤트 추적을 위한 SNS/CloudWatch 연동
* 이메일 발송 이벤트:
* Send (성공 발송)
* Open (수신자가 메일 열람)
* Click (링크 클릭)
* Bounce (전송 실패)
* 오픈 추적: 1x1 투명 GIF 이미지 삽입, 비정상적으로 빠른 오픈 이벤트 필터링 (12초 이내) 및 처리 고민
개발 임팩트:
마케팅, 운영, 프로덕트 팀 모두가 이메일 발송을 신뢰하고 관리할 수 있는 통합적인 기반을 마련했으며, SaaS 서비스 대비 높은 커스터마이징성과 비용 효율성을 달성했습니다.
커뮤니티 반응: 언급되지 않음.
톤앤매너: 경험을 공유하는 개발자의 시점에서 전문적이고 상세하게 기술되어 있습니다.