개요
무중단 배포 중 발생하는 WebRTC 연결 끊김, Redis 세션 불일치, 메시지 손실 등의 문제를 해결하고, 사용자 경험
저하 없이 안정적으로 서비스를 업데이트할 수 있도록 개선
관련 기능
- WebRTC (Kurento, ICE/SDP, 피어 연결 유지)
- Redis (세션 상태 관리, 분산 캐싱)
- Kafka (메시지 큐, 이벤트 스트리밍)
- K8s (롤링/블루-그린 배포, 헬스 체크, 우아한 종료)
목적
배포 중에도 진행 중인 실시간 화상 회의와 채팅이 중단되지 않도록 하여 서비스의 가용성과 사용자 만족도를 향상
목표
- 배포 중 무중단 영상 회의 유지 (자동 재연결을 통한 복구)
- 실시간 메시지 유실 방지
- 배포 다운타임 < 5초 달성
- 분산 환경에서 세션 일관성 보장
수정방향
- K8s 배포 전략: RollingUpdate/BlueGreen 전략, Probe 커스터마이징, terminationGracePeriodSeconds 설정
- 백엔드 우아한 종료: WebSocket 종료 전 클라이언트 알림, 진행 중인 요청 완료 대기, Redis 상태 저장
- 프론트엔드 자동 재연결: WebSocket 끊김 감지 시 자동 재연결, Exponential backoff
- Redis 세션 관리: 멀티 인스턴스 세션 일관성 검증, 마이그레이션 메커니즘
- 메시지 큐 안정성: Kafka 파티션 재조정, 순서 보장 및 중복 제거
주요 수정 기능
- K8s Deployment의 updateStrategy 설정
- Spring Boot 우아한 종료 핸들러 (GracefulShutdown)
- WebSocket/STOMP 종료 시 클라이언트 알림
- 클라이언트 자동 재연결 로직 강화
- Redis 분산 세션 일관성 검증
- 헬스 체크 엔드포인트 개선
- 배포 중 메시지 손실 방지 로직
테스트 방법
기능 검증
- 배포 중 실시간 채팅 메시지 송수신 확인 (손실 없음)
- 영상 회의 진행 중 배포 후 연결 자동 복구 시간 측정 (< 5초)
- 다중 방 동시 진행 중 배포 안정성 테스트
상태 검증
- 배포 전후 Redis 세션 일관성 확인
- Kurento 파드 상태 전환 로깅 검증
부하 테스트
개요
무중단 배포 중 발생하는 WebRTC 연결 끊김, Redis 세션 불일치, 메시지 손실 등의 문제를 해결하고, 사용자 경험
저하 없이 안정적으로 서비스를 업데이트할 수 있도록 개선
관련 기능
목적
배포 중에도 진행 중인 실시간 화상 회의와 채팅이 중단되지 않도록 하여 서비스의 가용성과 사용자 만족도를 향상
목표
수정방향
주요 수정 기능
테스트 방법
기능 검증
상태 검증
부하 테스트