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만큼 강력하지는 않지만, 간단한 실시간 데이터 단방향 전송이 필요한 프로젝트에 적합한 효율적인 기술이다.
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만큼 강력하지는 않지만, 간단한 실시간 데이터 단방향 전송이 필요한 프로젝트에 적합한 효율적인 기술이다.