실시간 채팅 시스템
중급API Gateway WebSocket + Lambda + DynamoDB로 실시간 양방향 통신을 구현하는 패턴
아키텍처 다이어그램
개요
API Gateway의 WebSocket API를 활용하여 서버리스로 실시간 채팅을 구현하는 패턴입니다. 연결 관리부터 메시지 라우팅까지 모두 서버 없이 처리할 수 있어요.
구성
- Cognito — 사용자 인증 및 JWT 토큰 발급
- API Gateway (WebSocket) — 클라이언트와 양방향 WebSocket 연결 관리
- Lambda — $connect, $disconnect, sendMessage 등 이벤트 핸들링
- DynamoDB — 활성 연결 ID 저장 + 채팅 메시지 이력 저장
장점
- 서버 관리 없이 실시간 양방향 통신 구현
- 접속자 수에 따라 자동 스케일링
- 유휴 상태에서 비용 거의 없음
- Cognito로 사용자 인증까지 원스톱 구현
주의사항
- WebSocket 연결 유지 시간 제한 (최대 2시간, 유휴 10분)
- Lambda 콜드 스타트로 첫 메시지 지연 가능
- 대규모 채팅방의 경우 메시지 팬아웃 설계 필요
- 오프라인 메시지 전달을 위한 추가 설계 필요 (SQS 등)