피드로 돌아가기
Dev.toInfrastructure
원문 읽기
Serverless 기반 Webhook-to-Email 변환기로 월 비용 1달러 미만의 알림 시스템 구축
Self-Hosted Vessel Email Alerts with AWS Lambda and SES
AI 요약
Context
시스템 간 통신을 위한 Webhook 인터페이스는 소프트웨어에는 적합하나 인간이 실시간으로 인지하기에는 부적절한 구조임. 이를 해결하기 위해 Webhook 스트림을 인간 중심의 Email 알림으로 변환하는 가벼운 Translation Layer 설계가 필요함.
Technical Solution
- API Gateway HTTP API 채택을 통한 REST API 대비 비용 1/3 절감 및 단일 경로 최적화
- Lambda 내 모듈 범위 Client 선언으로 Warm Start 시 TLS Handshake 재사용 및 지연 시간 단축
- DynamoDB의 Conditional PutItem과 24시간 TTL 설정을 통한 Webhook 중복 전송 방지 및 Idempotency 보장
- HMAC-signed JSON 검증 로직을 통한 외부 요청의 무결성 및 보안성 확보
- f-string 기반의 경량 렌더링 구조를 통해 외부 템플릿 라이브러리 의존성 제거 및 Cold Start 최소화
- SES Verified Email Identity 활용으로 DNS 설정 없이 즉각적인 메일 발송 환경 구축
Impact
- 월 1,000건 알림 기준 총 운영 비용 1달러 미만 달성
- AWS Free Tier 활용 시 사실상 비용 0원 수준의 인프라 구현
Key Takeaway
시스템의 반응형 통합(API)과 인간의 인지형 알림(Email)을 분리하여 설계하되, 서버리스 아키텍처를 통해 이벤트 발생 시에만 비용이 발생하는 효율적인 Dispatcher 패턴을 적용함.
실천 포인트
1. Webhook 중복 수신 방지를 위해 DynamoDB를 활용한 Idempotency Key 저장소 구축 검토
2. 비용 최적화를 위해 REST API 대신 HTTP API 사용 고려
3. Lambda Warm Start 성능 향상을 위해 AWS SDK Client를 핸들러 외부 전역 변수로 선언
4. 단순 알림 서비스의 경우 무거운 템플릿 엔진 대신 언어 내장 문자열 포맷팅 사용