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 서비스 대비 높은 커스터마이징성과 비용 효율성을 달성했습니다.
커뮤니티 반응: 언급되지 않음.
톤앤매너: 경험을 공유하는 개발자의 시점에서 전문적이고 상세하게 기술되어 있습니다.