아키텍처
엠넷플러스 실시간 글로벌 투표 시스템 아키텍처 개선 사례
두줄요약
엠넷플러스는 투표 시스템을 이벤트 기반으로 재설계해 수집, 집계, 백업을 분리했습니다. 또한 DynamoDB와 SQS, MSK를 활용해 안정성과 처리 성능을 크게 개선했습니다.
문제 상황
- 외부 협력사 기반 투표 시스템의 확장성, 안정성, 비용 한계
- 검증, 이력 저장, 실시간 집계가 단일 파이프라인으로 묶인 강결합 구조
- 글로벌 대규모 동시 투표에서 데이터 유실과 서비스 중단이 허용되지 않는 핵심 서비스 요구
구조와 흐름
- 투표 수집과 집계·분석을 분리한 이벤트 기반 아키텍처로 재설계
- 실시간 집계는 Redis, 최종 집계는 DynamoDB 원장, 백업 집계는 MSK와 BigQuery로 분리
- SQS로 투표 요청을 즉시 수신하고 워커가 비동기로 원장 적재 처리
선택 이유
- DynamoDB를 단일 진실 원장으로 사용해 높은 내구성, 가용성, 자동 확장 확보
- SQS와 MSK 같은 관리형 서비스로 운영 부담과 장애 전파 가능성 축소
- PK/SK 설계와 TransactWriteItems로 중복 투표 차단과 멱등성 확보
성능/운영 포인트
- bufferTimeout과 동시성 제한으로 순간 트래픽을 흡수하고 저장 계층 부하 제어
- graceful shutdown, backpressure, fallback 경로로 대량 트래픽과 장애 상황 대응
- 성능 튜닝으로 평균 처리시간을 3초에서 300ms로 개선
