새로고침 없는 실시간의 비밀
실시간 기능도 구현 방식에 따라 성능·비용·복잡도가 달라집니다.
최적의 구현 방식을 제안하는 가이드로 실시간 기능을 비교해보세요.
May 28, 2025
1. 실시간 통신이란?
- 클라이언트와 서버 간 데이터를 지속적으로 주고받으며 즉각적인 업데이트를 가능하게 하는 기술
예시: 채팅 애플리케이션, 주식 시세 표시, 실시간 알림

2. 폴링(Polling)
클라이언트가 주기적으로 서버에 요청을 보내는 전통적인 방식
작동 원리
- 클라이언트가 5초마다 서버에 "새 데이터 있나요?" 요청
- 서버는 데이터 유무에 따라 응답
- 데이터가 없어도 계속 요청 반복
장점
- 구현이 간단하고 모든 브라우저에서 호환됨
- 서버 측 변경 사항이 적음
단점
- 불필요한 요청이 많아 서버 부하 증가
- 실시간성이 떨어짐 (최대 폴링 주기만큼 지연 발생)
적합한 상황
- 간단한 알림 시스템
- 초기 MVP 개발 단계
3. WebSocket
클라이언트와 서버 간 지속적인 양방향 통신을 위한 프로토콜
작동 원리
- 클라이언트가 WebSocket 연결 요청 (HTTP → WS 업그레이드)
- 연결 성공 시 양측이 언제든지 데이터 전송 가능
- 연결은 명시적으로 종료될 때까지 유지
장점
- 낮은 지연 시간과 높은 실시간성
- 연결당 하나의 TCP 연결만 사용 (오버헤드 감소)
단점
- 연결 상태 관리 필요
- 방화벽이나 프록시에서 차단될 수 있음
적합한 상황
- 실시간 채팅
- 멀티플레이어 게임
- 협업 도구 (ex. 구글 독스)
4. Server-Sent Events (SSE)
서버에서 클라이언트로 단방향 스트리밍을 지원하는 기술
작동 원리
- 클라이언트가 EventSource 객체로 연결 초기화
- 서버는 "text/event-stream" 형식으로 지속적 데이터 전송
- 연결이 끊어지면 자동 재연결 시도
장점
- HTTP 기반으로 별도 프로토콜 불필요
- 자동 재연결 및 이벤트 ID 추적 지원
단점
- 단방향 통신만 가능 (클라이언트 → 서버 요청 불가)
- IE 및 일부 모바일 브라우저 미지원
적합한 상황
- 실시간 주가 차트
- SNS 알림 스트림
- 뉴스 피드 업데이트
5. 어떤 기술을 선택해야 할까?
상황 | 추천 기술 |
빠른 구현이 필요할 때 | 폴링 |
양방향 고성능 통신 필요 | WebSocket |
서버 → 클라이언트 단방향 스트리밍 | SSE |
TIP
- 초기에는 폴링으로 시작해 WebSocket이나 SSE로 전환하는 전략이 효과적입니다.
- WebSocket은 복잡하지만 확장성이 뛰어나며, SSE는 단순한 알림 시스템에 최적화되어 있습니다.

Share article