롱 폴링(Long Polling)이란? 실시간 통신의 옛날 방식 이해하기

롱 폴링이란?

롱 폴링(Long Polling)은 서버로부터 실시간에 가까운 데이터를 받기 위해 사용하던 기법입니다. 웹소켓(WebSocket)이 널리 쓰이기 전, 클라이언트가 서버의 변화를 즉시 감지하기 위한 대표적인 방법이었습니다. 기본 원리는 간단합니다. 클라이언트가 서버에 요청을 보내고, 서버는 응답할 새로운 데이터가 생길 때까지 연결을 끊지 않고 붙잡아둡니다. 데이터가 생기면 그때 응답을 보내고, 클라이언트는 응답을 받자마자 곧바로 다시 요청을 보내 다음 데이터를 기다립니다.

이를 일반 폴링(Polling)과 비교하면 이해가 쉽습니다. 일반 폴링은 ‘1초마다 새 소식 있어요?’라고 계속 물어보는 방식이라 새 소식이 없어도 매번 응답을 받고 요청을 반복해야 합니다. 반면 롱 폴링은 ‘새 소식 생기면 알려주세요, 그때까지 기다릴게요’라고 한 번 물어보고, 서버가 소식이 생길 때까지 답을 미루는 방식입니다. 마치 카페에서 진동벨을 받고 자리에서 기다리다가, 음식이 나오면 그제서야 벨이 울리는 것과 비슷합니다.

동작 원리와 예시

실제 흐름은 다음과 같습니다.

  • 클라이언트가 GET /messages 요청을 서버에 보낸다.
  • 서버는 새로운 메시지가 없으면 응답을 보내지 않고 연결을 유지한다.
  • 새 메시지가 도착하면 서버가 그 데이터를 응답으로 전송한다.
  • 클라이언트는 응답을 받는 즉시 다시 같은 요청을 보낸다.

이 과정을 반복하면 사용자 입장에서는 실시간으로 데이터를 받는 것처럼 느껴집니다. 다만 서버는 요청 하나마다 연결을 계속 열어둬야 하므로, 동시 접속자가 많아지면 서버의 연결 자원 소모가 커진다는 단점이 있습니다.

실무에서 왜 알아야 하는가

지금은 실시간 통신이 필요하면 대부분 웹소켓이나 Server-Sent Events(SSE)를 사용합니다. 웹소켓은 하나의 연결을 계속 유지하며 양방향으로 데이터를 주고받을 수 있어 훨씬 효율적이기 때문입니다. 그럼에도 롱 폴링을 알아야 하는 이유는, 여전히 방화벽이나 프록시 환경 때문에 웹소켓 연결이 막히는 경우 대체 수단으로 쓰이기 때문입니다. 또한 채팅, 알림 시스템 등 실시간 기능의 발전 과정을 이해하면, 왜 웹소켓 같은 기술이 등장했는지 그 배경을 자연스럽게 파악할 수 있습니다. 결국 롱 폴링은 완성형 기술이라기보다, 실시간 통신이라는 문제를 해결하기 위한 중요한 중간 단계로 이해하면 좋습니다.

댓글 남기기