피드로 돌아가기
Dev.toBackend
원문 읽기
HTTP 기반 SSE 도입을 통한 실시간 단방향 스트리밍 최적화 및 인프라 복잡도 제거
What Are Server-Sent Events (SSE)? A Developer's Guide for 2026
AI 요약
Context
실시간 데이터 전송을 위해 WebSocket을 관성적으로 채택하며 발생하는 프록시 타임아웃 및 스티키 세션 설정의 복잡성 증가. 단순 서버-클라이언트 단방향 통신 요구사항임에도 불구하고 불필요한 프로토콜 업그레이드 비용을 지불하는 아키텍처적 비효율성 존재.
Technical Solution
- HTTP GET 요청을 유지하여 서버가 데이터를 지속적으로 푸시하는
text/event-stream기반의 단방향 스트리밍 구조 설계 EventSourceAPI 활용을 통한 브라우저 수준의 자동 재연결(Auto-reconnect) 메커니즘 구현Last-Event-ID헤더를 이용한 상태 복구 및 이벤트 연속성 보장 로직 적용- HTTP/2 Multiplexing을 통한 연결 수 제한 문제 해결 및 리소스 효율 극대화
:heartbeat주석 라인 전송을 통한 세션 유지 및 Connection Idle 타임아웃 방지 전략 수립- 텍스트 기반의 단순 라인 구분자(`
`) 포맷을 통한 프레임 분석 및 파싱 오버헤드 최소화
실천 포인트
- 실시간 채팅과 같은 양방향 통신이 아닌 피드, 알림, 로그 스트리밍인 경우 WebSocket 대신 SSE 검토 - 프록시나 WAF 환경에서 프로토콜 업그레이드 이슈를 피해야 하는 경우 HTTP 표준 기반의 SSE 채택 - 이벤트 유실 방지를 위해 서버 측 `id:` 필드 설정 및 클라이언트의 `Last-Event-ID` 처리 로직 확인 - HTTP/
1.1 사용 시 브라우저당 연결 제한(6개)을 인지하고 HTTP/2 적용 여부 판단 - 커스텀 Authorization 헤더가 필요한 경우 `EventSource` 대신 `fetch`와 `ReadableStream` 조합 고려