알씨타운

POLLING이란? 본문

RCTOWN 리뷰/기술 리뷰

POLLING이란?

(주)소프트랩스 2022. 6. 23. 16:37

 

 

일반적인 HTTP 통신은

유저가 요청을 보낼 때만 서버가 응답하는 단방향 통신이며

서버로부터 응답받은 후 바로 연결 종료합니다.

 

ㅇㄹ
 

 

 

 

 

 

 

 

 

유저가 요청을 보낼 때만 서버가 응답하는 단방향 통신이기 때문에

서버에서 클라이언트로 역으로 요청하는 건 불가능했습니다.

클라이언트만이 서버로 연락할 수 있고 서버는 클라이언트의 요청에 응답하는 것만 가능했던 거죠...

 
 

하지만 통신의 발달로 서버에서 반대로 클라이언트에 요청해야 할 일들이 생기게 되었습니다.

HTTP 프로토콜은 단방향이기 때문에 지속해서 HTTP 요청을 해야 합니다.

이것이 가장 초기 모델 polling이라는 기법입니다.

폴링은 데이터 통신 방법의 하나로

"하나의 장치(또는 프로그램)가 충돌 회피 또는 동기화 처리 등을 목적으로 다른 장치(또는 프로그램)의

상태를 주기적으로 검사하여 일정한 조건을 만족할 때 송수신 등의 자료 처리를 하는 방식을 말합니다."

실시간처럼 보이는 웹사이트들은 클라이언트가 서버에게 일정한 주기를 가지고 응답을 주고받는 폴링 방식을 사용합니다.

이는 AJAX polling이라고도 불리는데 주로 AJAX 호출을 사용하기 때문입니다.

폴링의 문제점

1. 폴링의 주기가 짧으면 서버의 성능에 부담이 간다.

2. 주기가 길면 실시간성이 떨어진다.

3. 실시간으로 주는 건 불가능하다. 실시간 효과를 내려면 간격을 줄여야 하지만 서버와 클라이언트 모두에게 부담이다.

4. 보낼 데이터가 없어도 계속해서 데이터를 줘야 하므로 서버의 리소스를 낭비하게 된다.

폴링의 장점

1. Loop() 문 내에서 반복적으로 외부 입력을 감시하는 문법 (절차도 지향적). 소프트웨어 구현이 간편하다는 장점이 있다.

2. 계속해서 일괄적으로 요청을 할 수 있다.

3. 그래프를 그리거나 대용량의 데이터를 처리해야 한다면 http polling은 아직도 유효하며 오히려 매우 간단하고 최적화된 방식이다.

http는 단발성 통신이기에 header가 매우 무거운 프로토콜 중 하나입니다.

이 프로토콜이 마구마구 보내진다면 서버에 매우 무거운 부하를 주게 됩니다.

그래서 새로운 기법을 고안하게 되었고 그것이

바로 http long polling 기법입니다.

기본 방식은 polling처럼 무한히 물어보는 것입니다.

하지만 차이점이 있다면 일반 polling은 주기적으로 물어본다면,

Long Polling 서버는 대기하고 있다가 이벤트가 발생 시 응답하는 방식입니다. 서버는 즉시 응답을 주지 않습니다.

특정 이벤트가 발생하거나 타임아웃(timeout)이 발생하면 응답을 전달합니다.

클라이언트는 응답받은 후 다시 서버에게 데이터를 요청합니다.

그리고 클라이언트는 정보를 받자마자 바로 다시 서버에 요청을 보냅니다.

이 결과 연결은 무한히 지속되게 됩니다.

클라이언트는 마치 실시간으로 데이터를 받는 느낌을 받게 됩니다.

http long polling의 특징

1. 항상 연결이 유지되어 있다.

2. 변경에 매우 민감하게 반응한다. 사실상 실시간으로 통신이 가능하다.

3. 데이터가 주어지는 즉시 바로바로 반응하고 보내므로 요청 간격이 줄어든다면 polling보다 훨씬 데이터를 많이 보내게 된다.

long polling은 실시간으로 데이터를 핸들링할 수 있다는 polling에 없는 장점을 얻게 됩니다.

그래서 채팅을 구현할 때 많이 사용하는 기술 중 하나이기도 합니다.

요즘은 소켓 기술이 많이 보이고 있지만

그래프를 그리거나 대용량의 데이터를 처리해야 한다면

http polling은 아직도 유효하며 오히려 매우 간단하고 최적화된 방식입니다.

상황을 잘 판단하여 사용해야 하겠습니다. ^^

여기까지 알씨타운이었습니다.

 

 

 

'RCTOWN 리뷰 > 기술 리뷰' 카테고리의 다른 글

코드이그나이터에 대해!  (0) 2022.07.25
구글 웹 바이탈(Web Vitals) 이란?  (0) 2022.07.20
Web GL이란?  (0) 2022.07.07
PWA 란?  (0) 2022.07.07
소켓 아이오란?  (0) 2022.05.16
Comments