
백엔드
모든 탭에 퍼지는 실시간 이벤트, SSE 1개로 끝내는 전략
두줄요약
여러 탭의 실시간 이벤트를 Service Worker와 SSE로 하나의 연결에 통합했습니다. 메시지 유실 방지, 권한 검증, 재연결 전략까지 포함해 안정성을 높였습니다.
문제 상황
- 여러 탭에서 실시간 이벤트를 각각 연결해 서버 부하, 네트워크 오버헤드, 클라이언트 자원 낭비가 발생하는 구조
- 고객사 프록시 환경에서 WebSocket, HTTP/2 호환성 문제가 있는 B2B 제약
구조와 흐름
- Service Worker를 탭과 SSE 서버 사이 프록시로 두어 브라우저 여러 탭을 하나의 TCP 연결로 통합
- 서버 수신 이벤트를 Clients#matchAll로 Service Worker가 제어하는 모든 클라이언트에 전파
- SSE id를 마지막 이벤트 식별자로 저장해 재연결 시 유실 구간을 복구
선택 이유
- SharedWorker보다 클라이언트 생애주기 관리 부담이 적고 탐색 API가 내장된 점
- 백그라운드 동작 가능성과 SSE 재연결 사양을 활용한 호환성 확보
- 단방향 푸시에 집중해 운영 비용을 낮추는 전략
성능/운영 포인트
- 권한을 메시지 전송 시점에 실시간 검증해 보안과 최신성 확보
- 하트비트 감지, 재연결, 지수 백오프로 네트워크 불안정에 대응
- exactly-once 전달, 고가용성, 메시지 순서 보장을 최소 요구사항으로 설계
