Server Sent Events (SSE)란 무엇인가?
SSE(Server Sent Events)는 HTTP 프로토콜을 통해 서버에서 클라이언트로 실시간으로 이벤트 전달할 수 있는 표준 기술이다. 클라이언트(웹 브라우저)는 요청을 보내고 서버는 지속적으로 데이터를 스트리밍 방식으로 전송한다
SSE를 사용하면 좋은 경우는?
웹 애플리케이션에서 실시간 데이터 업데이트가 필요한 경우(단방향)에 유용하며 효율적으로 해결 가능 하다
예시
- 실시간 알림 기능
새로운 메시지나 사용자 알림을 즉시 표시해야 하는 경우 - 데이터 대시보드
센서 데이터, 실시간 가격 변동 또는 분석 결과와 같은 정보를 실시간으로 보여줄 때 - 읽기 전용 메세지 스트림ChatGPT가 chunked 단위로 쪼개진 단어를 붙여서 보여줄 때 (현재 chatGPT 응답 UI)
SSE vs WebSocket vs Polling
실시간 데이터를 처리할 때 사용할 수 있는 대안 기술들로 WebSocket과 Polling등이 있다
1. SSE (Server Sent Events)
- 장점
- 단방향 통신: 서버에서 클라이언트로만 데이터를 전송
- 실시간 알림, 실시간 데이터 스트림처럼 서버에서 데이터 푸시가 더 중요한 경우 적합
- 사용 편의성: 브라우저에서 기본적으로 지원(EventSource). 별도의 라이브러리 불필요
- 자동 재연결: 연결이 끊어지면 브라우저가 자동으로 재연결을 시도
- 단방향 통신: 서버에서 클라이언트로만 데이터를 전송
- 단점
- 브라우저 한정: EventSource는 브라우저 중심의 기술이기 때문에 브라우저가 아닌 환경에서는 추가 구현이 필요
2. WebSocket
- 장점
- 양방향 통신: 클라이언트와 서버 간 데이터를 자유롭게 주고받음
- 양방향 데이터를 주고받는 고성능 실시간 애플리케이션에 적합
- 단점
- 복잡한 설정 관리 필요 (보안, 확장성 등)
- 연결 유지 및 재연결 관리 필요
- 방화벽이나 프록시 환경에서 제약될 수 있음
3. Polling
- 장점
- 오래된 브라우저에서도 동작
- 별도의 기술 구현 없이 HTTP 요청/응답 기반으로 동작
- 단점
- 클라이언트가 지속적으로 서버에 요청을 보내 데이터를 대기하므로 네트워크 자원 낭비
- 불필요한 요청/응답의 수 증가
- 클라이언트가 요청하기 전까지 데이터 전송 불가
Server-Sent Events는 WebSocket만큼 강력하지는 않지만, 간단한 실시간 데이터 단방향 전송이 필요한 프로젝트에 적합한 효율적인 기술이다.