Skip to content

feat :: 채팅방 무중단 배포 복구 #134

Description

@SeJonJ

개요

무중단 배포 중 발생하는 WebRTC 연결 끊김, Redis 세션 불일치, 메시지 손실 등의 문제를 해결하고, 사용자 경험
저하 없이 안정적으로 서비스를 업데이트할 수 있도록 개선

관련 기능

  • WebRTC (Kurento, ICE/SDP, 피어 연결 유지)
  • Redis (세션 상태 관리, 분산 캐싱)
  • Kafka (메시지 큐, 이벤트 스트리밍)
  • K8s (롤링/블루-그린 배포, 헬스 체크, 우아한 종료)

목적

배포 중에도 진행 중인 실시간 화상 회의와 채팅이 중단되지 않도록 하여 서비스의 가용성과 사용자 만족도를 향상

목표

  • 배포 중 무중단 영상 회의 유지 (자동 재연결을 통한 복구)
  • 실시간 메시지 유실 방지
  • 배포 다운타임 < 5초 달성
  • 분산 환경에서 세션 일관성 보장

수정방향

  1. K8s 배포 전략: RollingUpdate/BlueGreen 전략, Probe 커스터마이징, terminationGracePeriodSeconds 설정
  2. 백엔드 우아한 종료: WebSocket 종료 전 클라이언트 알림, 진행 중인 요청 완료 대기, Redis 상태 저장
  3. 프론트엔드 자동 재연결: WebSocket 끊김 감지 시 자동 재연결, Exponential backoff
  4. Redis 세션 관리: 멀티 인스턴스 세션 일관성 검증, 마이그레이션 메커니즘
  5. 메시지 큐 안정성: Kafka 파티션 재조정, 순서 보장 및 중복 제거

주요 수정 기능

  • K8s Deployment의 updateStrategy 설정
  • Spring Boot 우아한 종료 핸들러 (GracefulShutdown)
  • WebSocket/STOMP 종료 시 클라이언트 알림
  • 클라이언트 자동 재연결 로직 강화
  • Redis 분산 세션 일관성 검증
  • 헬스 체크 엔드포인트 개선
  • 배포 중 메시지 손실 방지 로직

테스트 방법

기능 검증

  • 배포 중 실시간 채팅 메시지 송수신 확인 (손실 없음)
  • 영상 회의 진행 중 배포 후 연결 자동 복구 시간 측정 (< 5초)
  • 다중 방 동시 진행 중 배포 안정성 테스트

상태 검증

  • 배포 전후 Redis 세션 일관성 확인
  • Kurento 파드 상태 전환 로깅 검증

부하 테스트

  • 배포 중 메시지 처리량 및 리소스 모니터링

Metadata

Metadata

Assignees

Labels

enhancementNew feature or request

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions