공부하기/ETC
실시간 데이터 전송 기술 정리 | Polling, Long-Polling, SSE, WebSocket
다섯자두
2025. 4. 18. 00:23
최근 실시간 알림 기능을 구현하면서 공부했던 실시간 데이터 전송에 대표적인 기술들을 정리해본다.

1. Polling
주기적으로 서버에 요청을 보내 업데이트를 확인하는 방식
- 클라이언트에서 서버로 계속해서 request를 전송한다.
- 서버는 반복되는 request에 응답하면서, 전달할 이벤트가 있는 경우 전달한다.
▶︎ 장점
- 구현이 간단하다. (기본 HTTP만 지원되면 구현 가능)
▶︎ 단점
- 불필요한 요청이 많아지므로 서버 부하가 증가한다.
- 새 이벤트가 발생하자마자 확인할 수는 없어 지연(Latency)이 존재한다.
- 다수 클라이언트가 있을 경우 네트워크 오버헤드가 증가한다.
매우매우 간단하게 실시간 (비슷한) 서비스를 구현해볼 수 있는 방식
2. Long Polling
클라이언트가 서버에 요청을 보내고, 서버는 새로운 데이터가 있을 때까지 연결을 유지한 후 응답을 보내는 방식
- 클라이언트에서 서버로 request를 전송한다.
- 서버는 이벤트가 생길 때까지 기다렸다가 전달할 이벤트가 생긴 경우 그 때 응답하여 연결을 해제한다.
- 응답을 받은 클라이언트는 즉시 새로운 request를 전송한다.
초창기 Facebook 채팅을 구현할 때 Long Polling 방식을 썼다고 한다.
- 메시지를 기다릴 때 Long Polling 사용
- 메시지가 생기면 응답하고, 클라이언트는 바로 다시 요청
- 실시간성은 확보하면서도 서버 부하를 줄임
더 관심 있다면 여기 참고
▶︎ 장점
- Polling 보다는 진화한 방식으로, 이벤트가 없을 때는 대기하기 때문에 불필요한 요청이 줄어든다.
- 데이터 도착 시 즉시 응답하므로 실시간성이 높다.
- 브라우저 호환성이 우수하다.
▶︎ 단점
- 서버 리소스 소모가 크다. (연결 유지)
- 연결 타임아웃 처리 등 복잡성이 존재한다.
단순한 구현이 필요하고, 실시간성이 중요하며, 복잡한 대안을 쓰기 전 솔루션이라고 볼 수 있다.
3. SSE (Server-Sent Events)
서버가 클라이언트에게 단방향으로 실시간 이벤트를 푸시하는 방식
- 하나의 long-lived HTTP 연결을 맺는다.
- 서버측에서 이벤트가 생길 때마다 연결된 클라이언트에 전달한다.
▶︎ 장점
- 브라우저 지원이 좋다.
- 대부분의 최신 브라우저에서 지원한다.
- Chrome, Firefox, Safari, Edge 지원
- Internet Explorer 미지원
- 브라우저에서 제공하는 EventSource API를 통해 구현된다.
- 대부분의 최신 브라우저에서 지원한다.
- HTTP 기반이라 인프라 변경이 적다.
- 저수준의 자동 재연결을 지원한다.
- EventSource는 서버와의 연결이 끊어지면 자동으로 재연결을 시도한다.
▶︎ 단점
- 단방향이므로 양방향 통신이 필요할 경우 부적합하다.
최근 실시간 알림, 모니터링 대시보드, 피드 업데이트 등에 많이 쓰인다.
4. Web socket
클라이언트와 서버가 하나의 연결을 통해 양방향 통신을 주고받는 방식
- 하나의 지속적 TCP 연결을 맺는다.
- 연결된 클라이언트와 서버가 서로 메세지를 전송한다.
▶︎ 장점
- 양방향 통신을 지원한다. (full-duplex)
- 하나의 TCP 연결로 실시간 데이터 송수신이 가능하다.
- 지연시간이 최소화된다.
▶︎ 단점
- 초기 연결 비용이 높다.
- 클라이언트와 서버 모두 핸드셰이크 로직을 구현해야 한다.
- 인프라 구성이 복잡해진다.
- 프록시/방화벽 통과를 위해 별도 설정이 필요하다.
실시간 채팅, 게임 서버 등에 적합하다.
정리
| 방식 | 한 줄 설명 | 장점 | 단점 | 사용 예시 |
| Polling | 주기적으로 서버에 요청을 보내 업데이트를 확인하는 방식 | 구현이 간단하다 (기본 HTTP 지원만으로 가능) | 불필요한 요청 많음, 지연 존재, 네트워크 오버헤드 |
간단한 테스트 또는 비실시간 데이터 조회 (거의 사용되지 않음) |
| Long Polling | 클라이언트가 요청을 보내고, 서버는 데이터가 생길 때까지 기다렸다 응답하는 방식 | 불필요한 요청 줄어듦, 실시간성 높음, 브라우저 호환성 우수 |
서버 리소스 소모, 확장성 한계, 타임아웃 처리 복잡 |
초기 Facebook 채팅, 실시간 알림의 중간 솔루션 |
| SSE (Server-Sent Events) | 서버가 클라이언트에게 단방향으로 실시간 이벤트를 푸시하는 방식 | 브라우저 지원이 좋고, HTTP 기반이라 인프라 변경이 적다. 자동 재연결 지원 |
단방향 통신만 가능, IE 미지원 |
실시간 알림, 대시보드, 피드 업데이트 |
| WebSocket | 클라이언트와 서버가 하나의 연결을 통해 양방향 통신을 주고받는 방식 | 양방향 통신, 지연시간 최소, 실시간 송수신 |
초기 핸드셰이크 필요, 인프라 복잡, 프록시/방화벽 설정 필요 |
실시간 채팅, 게임 서버, 협업 툴 |