실시간 채팅 시스템

중급

API Gateway WebSocket + Lambda + DynamoDB로 실시간 양방향 통신을 구현하는 패턴

아키텍처 다이어그램

개요

API Gateway의 WebSocket API를 활용하여 서버리스로 실시간 채팅을 구현하는 패턴입니다. 연결 관리부터 메시지 라우팅까지 모두 서버 없이 처리할 수 있어요.

구성

  1. Cognito — 사용자 인증 및 JWT 토큰 발급
  2. API Gateway (WebSocket) — 클라이언트와 양방향 WebSocket 연결 관리
  3. Lambda — $connect, $disconnect, sendMessage 등 이벤트 핸들링
  4. DynamoDB — 활성 연결 ID 저장 + 채팅 메시지 이력 저장

장점

  • 서버 관리 없이 실시간 양방향 통신 구현
  • 접속자 수에 따라 자동 스케일링
  • 유휴 상태에서 비용 거의 없음
  • Cognito로 사용자 인증까지 원스톱 구현

주의사항

  • WebSocket 연결 유지 시간 제한 (최대 2시간, 유휴 10분)
  • Lambda 콜드 스타트로 첫 메시지 지연 가능
  • 대규모 채팅방의 경우 메시지 팬아웃 설계 필요
  • 오프라인 메시지 전달을 위한 추가 설계 필요 (SQS 등)