새로고침 없는 실시간의 비밀

실시간 기능도 구현 방식에 따라 성능·비용·복잡도가 달라집니다. 최적의 구현 방식을 제안하는 가이드로 실시간 기능을 비교해보세요.
May 28, 2025
새로고침 없는 실시간의 비밀

1. 실시간 통신이란?

  • 클라이언트와 서버 간 데이터를 지속적으로 주고받으며 즉각적인 업데이트를 가능하게 하는 기술
예시: 채팅 애플리케이션, 주식 시세 표시, 실시간 알림
notion image

2. 폴링(Polling)

클라이언트가 주기적으로 서버에 요청을 보내는 전통적인 방식
작동 원리
  1. 클라이언트가 5초마다 서버에 "새 데이터 있나요?" 요청
  1. 서버는 데이터 유무에 따라 응답
  1. 데이터가 없어도 계속 요청 반복
장점
  • 구현이 간단하고 모든 브라우저에서 호환됨
  • 서버 측 변경 사항이 적음
단점
  • 불필요한 요청이 많아 서버 부하 증가
  • 실시간성이 떨어짐 (최대 폴링 주기만큼 지연 발생)
적합한 상황
  • 간단한 알림 시스템
  • 초기 MVP 개발 단계

3. WebSocket

클라이언트와 서버 간 지속적인 양방향 통신을 위한 프로토콜
작동 원리
  1. 클라이언트가 WebSocket 연결 요청 (HTTP → WS 업그레이드)
  1. 연결 성공 시 양측이 언제든지 데이터 전송 가능
  1. 연결은 명시적으로 종료될 때까지 유지
장점
  • 낮은 지연 시간과 높은 실시간성
  • 연결당 하나의 TCP 연결만 사용 (오버헤드 감소)
단점
  • 연결 상태 관리 필요
  • 방화벽이나 프록시에서 차단될 수 있음
적합한 상황
  • 실시간 채팅
  • 멀티플레이어 게임
  • 협업 도구 (ex. 구글 독스)

4. Server-Sent Events (SSE)

서버에서 클라이언트로 단방향 스트리밍을 지원하는 기술
작동 원리
  1. 클라이언트가 EventSource 객체로 연결 초기화
  1. 서버는 "text/event-stream" 형식으로 지속적 데이터 전송
  1. 연결이 끊어지면 자동 재연결 시도
장점
  • HTTP 기반으로 별도 프로토콜 불필요
  • 자동 재연결 및 이벤트 ID 추적 지원
단점
  • 단방향 통신만 가능 (클라이언트 → 서버 요청 불가)
  • IE 및 일부 모바일 브라우저 미지원
적합한 상황
  • 실시간 주가 차트
  • SNS 알림 스트림
  • 뉴스 피드 업데이트

5. 어떤 기술을 선택해야 할까?

상황
추천 기술
빠른 구현이 필요할 때
폴링
양방향 고성능 통신 필요
WebSocket
서버 → 클라이언트 단방향 스트리밍
SSE
💡
TIP
  • 초기에는 폴링으로 시작해 WebSocket이나 SSE로 전환하는 전략이 효과적입니다.
  • WebSocket은 복잡하지만 확장성이 뛰어나며, SSE는 단순한 알림 시스템에 최적화되어 있습니다.
notion image
Share article

다글제작소