롱 폴링이란 무엇인가요?
Published: 2023-12-12 11:02:42

롱 폴링이란 무엇인가요?
-------------

롱 폴링은 실시간 웹 애플리케이션에서 클라이언트와 웹 서버 간의 거의 즉각적인 통신을 달성하기 위해 사용됩니다. 실시간 업데이트가 중요한 채팅 및 메시징 애플리케이션에서 특히 유용합니다.

기존 [HTTP](https://www.pubnub.com/guides/http/) 통신에서는 클라이언트가 서버에 새 요청을 보내고 응답을 기다립니다. 이를 쇼트 폴링이라고 합니다. 그러나 실시간 시나리오에서 짧은 폴링은 서버에 자주 요청해야 하므로 효율적이지 않을 수 있으며, 불필요한 네트워크 오버헤드와 지연 시간 증가를 초래합니다.

반면, 긴 폴링은 새로운 데이터를 사용할 수 있을 때까지 요청을 장기간 열어두어 효율성을 향상시킵니다. 서버는 요청을 열어두고 클라이언트에 다시 보낼 새 정보가 있을 때까지 기다립니다. 서버가 새 데이터를 확보하면 클라이언트에 응답하고, 클라이언트는 데이터를 처리하고 새로운 장기 폴링 요청을 시작할 수 있습니다.

롱 폴링은 클라이언트와 서버 간의 연결을 오래 유지함으로써 요청 횟수를 줄이고 지연 시간을 최소화하며 실시간 통신을 개선합니다. 따라서 확장성과 반응성이 뛰어난 채팅 및 메시징 애플리케이션을 구축하는 데 효과적인 기술이 필요한 사용 사례와 게임과 같이 실시간 데이터를 사용하는 기타 앱에 이상적입니다.

롱 폴링은 어떻게 작동하나요?
----------------

롱 폴링은 실시간 커뮤니케이션에서 클라이언트와 서버 간에 거의 즉각적인 메시지 전달을 달성하기 위해 사용되는 기술입니다. 지연 시간이 짧고 실시간 업데이트가 중요한 채팅 및 메시징 애플리케이션을 구축할 때 특히 유용합니다.

전통적으로 웹 브라우저는 서버에서 데이터를 가져오는 데 풀 기반 접근 방식을 사용합니다. 클라이언트가 서버에 요청을 보내면 서버는 요청된 데이터로 응답합니다. 짧은 폴링이라고 하는 이 접근 방식은 클라이언트가 업데이트를 확인하기 위해 반복적으로 요청을 보내야 하므로 통신이 지연될 수 있습니다.

반면에 긴 폴링은 푸시 기반 접근 방식으로, 서버가 업데이트가 제공되는 즉시 클라이언트에 업데이트를 전송합니다. 작동 방식은 다음과 같습니다:

1.  클라이언트는 일반적으로 HTTP 요청을 통해 서버에 요청을 시작합니다.
    
2.  서버는 즉시 응답하지 않고 요청을 열어두어 연결을 활성 상태로 유지합니다.
    
3.  사용 가능한 새 데이터가 없으면 서버는 다시 보낼 데이터가 있을 때까지 기다립니다.
    
4.  서버에 새 데이터가 있거나 미리 정의된 시간 초과가 발생하면 서버는 최신 정보를 클라이언트에 응답합니다.
    
5.  응답을 받은 클라이언트는 즉시 서버에 또 다른 요청을 보내 연결을 유지합니다.
    
6.  이러한 요청을 보내고 응답을 받는 주기가 계속되면서 실시간 업데이트가 이루어집니다.
    

롱 폴링은 요청-응답 주기를 장시간 열어두어 클라이언트와 서버 간의 실시간 연결을 효과적으로 시뮬레이션합니다. 이를 통해 서버는 업데이트를 사용할 수 있는 즉시 클라이언트에 푸시할 수 있으며 클라이언트가 업데이트를 반복적으로 확인할 필요가 없습니다.

롱 폴링을 구현하는 데 어떤 기술이 사용되나요?
--------------------------

롱 폴링은 클라이언트와 서버 간의 실시간 통신을 달성하기 위한 기술입니다. 이는 즉각적인 업데이트가 중요한 채팅 및 메시징 애플리케이션에서 일반적으로 사용됩니다. 롱 폴링을 구현하는 데는 여러 가지 기술이 사용될 수 있으며, 각 기술에는 장점과 고려 사항이 있습니다. 롱 폴링을 구현하는 데 사용되는 몇 가지 일반적인 기술을 살펴보겠습니다.

[**HTTP 롱 폴링**](https://www.pubnub.com/blog/http-long-polling/)**:**

롱 폴링을 구현하는 가장 기본적이고 널리 사용되는 접근 방식입니다. 이 방법은 HTTP 프로토콜을 활용하여 클라이언트와 서버 간에 오래 지속되는 연결을 설정하고 유지합니다. 클라이언트가 서버에 요청을 보내면 서버는 새로운 데이터를 사용할 수 있거나 특정 시간 초과에 도달할 때까지 요청을 열어둡니다. 새 데이터를 사용할 수 있게 되면 서버는 업데이트된 정보로 응답하고, 클라이언트는 즉시 다른 요청을 전송하여 주기를 계속합니다. 이 접근 방식은 구현하기 쉬우며 특별한 서버 측 기술이 필요하지 않습니다.

[**웹소켓:**](https://www.pubnub.com/guides/what-are-websockets-and-when-should-you-use-them/)

웹소켓은 수명이 긴 단일 연결을 통해 클라이언트와 서버 간의 실시간 통신을 가능하게 하는 전이중 통신 프로토콜입니다. 이 프로토콜은 긴 폴링에 대한 보다 효율적이고 지연 시간이 짧은 대안을 제공합니다. 웹소켓은 양방향 데이터 흐름을 지원하여 클라이언트와 서버가 비동기식으로 메시지를 전송할 수 있습니다. 따라서 빈번한 HTTP 요청이 필요하지 않으며 네트워크 오버헤드가 줄어듭니다. 웹소켓은 즉각적인 업데이트와 실시간 상호 작용이 필요한 애플리케이션에 적합합니다.

[**서버 전송 이벤트(SSE):**](https://www.pubnub.com/guides/server-sent-events/)

SSE는 서버가 수명이 긴 단일 HTTP 연결을 통해 클라이언트에 데이터를 푸시할 수 있는 단방향 통신 기술입니다. SSE를 사용하면 클라이언트가 계속 요청할 필요 없이 서버가 클라이언트에 여러 개의 업데이트를 보낼 수 있습니다. 서버는 연결을 시작하고 일련의 이벤트로 데이터를 전송합니다. 클라이언트는 이러한 이벤트를 수신하고 필요에 따라 처리할 수 있습니다.

애플리케이션에서 롱 폴링을 구현하기 위한 기술을 선택할 때 고려해야 할 몇 가지 요소가 있습니다:

-   확장성: 선택한 기술이 많은 수의 동시 연결을 처리할 수 있고 사용자 기반이 증가함에 따라 확장할 수 있는지 확인해야 합니다. 웹소켓과 SSE는 서버 리소스를 보다 효율적으로 사용할 수 있기 때문에 일반적으로 HTTP 기반 롱 폴링보다 확장성이 뛰어납니다.
    
-   보안: 선택한 기술의 보안 영향을 고려하세요. 웹소켓과 SSE는 [SSL/TLS와](https://www.pubnub.com/guides/ssl-tls/) 같은 암호화 프로토콜을 사용하여 보안을 유지할 수 있으므로 데이터 프라이버시와 무결성을 보장합니다. HTTP 기반 롱 폴링도 보안을 유지할 수 있지만 추가 인증 및 액세스 제어 조치가 필요할 수 있습니다.
    
-   브라우저 지원: 선택한 기술의 브라우저 호환성을 확인하세요. 웹소켓과 SSE는 HTTP 기반 롱 폴링보다 브라우저 지원이 우수하지만, 구형 브라우저의 경우 추가 기술이나 대체 옵션이 필요할 수 있습니다.
    
-   구현 복잡성: 선택한 기술의 구현 및 유지 관리의 용이성을 평가합니다. HTTP 기반 롱 폴링은 비교적 간단한 반면, 웹소켓과 SSE는 고급 지식과 인프라가 필요할 수 있습니다. 개발팀의 전문 지식 수준과 선택한 기술을 구현하고 유지 관리하는 데 필요한 리소스를 고려하세요.
    

**롱 폴링과 웹소켓 비교**
----------------

[롱 폴링과 웹소켓은](https://www.pubnub.com/blog/long-polling-vs-websockets/) 클라이언트(예: 웹 브라우저)와 서버 간의 실시간 연결을 달성하기 위한 기술입니다. 비슷한 용도로 사용되지만 두 기술에는 상당한 차이가 있습니다.

롱 폴링은 클라이언트가 웹 서버에 요청을 하면 서버가 다시 보낼 새 데이터가 있을 때까지 연결을 열어두는 기술입니다. 서버는 사용 가능한 새 데이터가 있으면 즉시 응답하거나 지정된 시간 초과 기간을 기다렸다가 빈 응답을 보낼 수 있습니다. 어떤 경우든 클라이언트가 응답을 받으면 즉시 서버에 새 연결을 설정하기 위해 또 다른 요청을 합니다. 이 프로세스가 계속 반복되므로 서버는 업데이트를 사용할 수 있게 되는 즉시 클라이언트에 푸시할 수 있습니다.

반면에 웹소켓은 클라이언트와 서버 간에 지속적인 양방향 통신 채널을 제공합니다. 요청이 있을 때마다 새 연결이 설정되는 롱 폴링과 달리, 웹소켓 연결은 한 번 설정되면 무기한으로 열려 있습니다. 따라서 양방향으로 지연 시간이 짧은 실시간 통신이 가능합니다. 서버는 언제든지 클라이언트에 데이터를 푸시할 수 있으며, 클라이언트 역시 응답을 기다릴 필요 없이 서버에 데이터를 보낼 수 있습니다.

### 롱 폴링과 웹 소켓의 유사점:

1\. 실시간 업데이트: 롱폴링과 웹소켓 모두 서버와 클라이언트 간의 실시간 통신을 지원하므로 지속적인 폴링이나 새로고침 없이도 즉각적인 업데이트가 가능합니다.

2\. 서버 부하 감소: 두 기술 모두 데이터를 사용할 수 있을 때만 전송하여 불필요한 요청을 최소화함으로써 서버 부하를 줄이고 확장성을 개선합니다.

3\. 폭넓은 언어 및 프레임워크 지원: 많은 [인기 프로그래밍 언어와](https://www.pubnub.com/docs/sdks) 프레임워크가 롱 폴링과 웹소켓을 지원하므로 다양한 에코시스템의 개발자가 액세스할 수 있습니다.

### 롱 폴링과 웹 소켓의 차이점:

1\. [지연](https://www.pubnub.com/guides/whats-so-important-about-low-latency/) 시간: 롱 폴링은 응답을 보내는 서버와 응답을 받는 클라이언트 사이에 지연이 발생하므로 지연 시간이 발생합니다. 웹 소켓은 지연 시간이 짧은 양방향 통신을 제공하므로 더 빠른 실시간 기능을 사용할 수 있습니다.

2\. 리소스 소비: 폴링이 길어지면 서버가 각 클라이언트와 열린 연결을 유지해야 하므로 리소스 소모가 발생하고 동시 연결 수가 제한될 수 있습니다. 하지만 웹소켓은 영구 연결을 사용하므로 전반적인 리소스 소비가 줄어듭니다.

3\. 확장성: 장시간 연결을 열어두어야 하는 긴 폴링은 서버를 수평적으로 확장하는 데 어려움을 줄 수 있습니다. 영구 연결을 사용하는 웹소켓은 많은 연결이 필요하지 않으므로 확장성이 뛰어납니다.

롱 폴링과 웹 소켓은 모두 실시간 업데이트를 제공하고 서버 부하를 줄이지만 지연 시간, 리소스 소비 및 확장성에서 차이가 있습니다. 웹 소켓은 리소스 소비를 줄이면서 더 빠른 양방향 통신을 제공하므로 짧은 지연 시간과 높은 확장성을 필요로 하는 애플리케이션에 적합합니다. 반면, 짧은 지연 시간이 중요하지 않고 동시 연결 수가 상대적으로 적은 경우에는 롱 폴링이 좋은 대안이 될 수 있습니다. 개발자는 [실시간 채팅 및 메시징 애플리케이션을](https://www.pubnub.com/guides/real-time-messaging-benefits-basics-and-first-steps/) 위해 두 가지 기술 중 하나를 선택할 때 이러한 요소를 고려해야 합니다.

**긴 폴링과 서버 전송 이벤트(SSE)의 비교**
----------------------------

[SSE는](https://www.pubnub.com/blog/websockets-alternatives/) 단순성과 구현 용이성 측면에서 롱 폴링과 유사하지만, 서버와 클라이언트 간 통신을 달성하는 더 효율적이고 표준화된 방법을 제공합니다. 두 기술 간의 몇 가지 추가적인 유사점과 차이점을 살펴보겠습니다.

### 롱 폴링과 SSE의 유사점:

1.  실시간 업데이트: 롱 폴링과 SSE는 모두 서버와 클라이언트 간의 실시간 통신을 지원하므로 지속적인 폴링이나 새로고침 없이도 즉각적인 업데이트가 가능합니다.
    
2.  서버 부하 감소: 두 기술 모두 데이터를 사용할 수 있을 때만 전송하여 불필요한 요청을 최소화함으로써 서버 부하를 줄이고 확장성을 개선합니다.
    
3.  광범위한 언어 및 프레임워크 지원: 많은 인기 프로그래밍 언어와 프레임워크가 롱 폴링과 SSE를 지원하므로 다양한 에코시스템의 개발자가 액세스할 수 있습니다.
    

### 롱 폴링과 SSE의 차이점:

1.  지연 시간: 롱 폴링은 응답을 보내는 서버와 응답을 받는 클라이언트 사이에 지연이 발생하기 때문에 지연 시간이 발생합니다. 반면 SSE는 서버에서 클라이언트로 지속적인 데이터 스트림을 제공하여 지연 시간을 줄이고 실시간 기능을 개선합니다.
    
2.  리소스 소비: 폴링이 길어지면 서버가 각 클라이언트와 열린 연결을 유지해야 하므로 리소스 소모가 발생하고 동시 연결 수가 제한될 수 있습니다. 하지만 SSE는 수명이 긴 단일 연결을 사용하므로 전반적인 리소스 소비가 줄어듭니다.
    
3.  확장성: 긴 시간 동안 연결을 열어 두어야 하는 폴링은 서버를 수평적으로 확장하는 데 어려움을 줄 수 있습니다. 클라이언트당 단일 연결을 사용하는 SSE는 많은 연결이 필요하지 않으므로 확장성이 뛰어납니다.
    

긴 폴링을 어떻게 최적화할 수 있나요?
---------------------

롱 폴링은 실시간 채팅 및 메시징 애플리케이션에서 거의 즉각적인 클라이언트 업데이트를 제공하기 위해 사용됩니다. 하지만 제대로 최적화하지 않으면 리소스 집약적이며 확장성 문제를 일으킬 수 있습니다. 다음은 성능과 확장성을 개선하기 위해 롱 폴링을 최적화하는 데 사용할 수 있는 몇 가지 기술입니다.

**일괄 응답:** 각 요청에 대해 응답을 보내는 대신 [여러 업데이트를 일괄 처리하여](https://developers.google.com/classroom/best-practices/batch#:~:text=separate%20HTTP%20request.-,Response%20to%20a%20batch%20request,same%20order%20as%20the%20requests.) 단일 응답으로 보냅니다. 이렇게 하면 HTTP 요청 수가 줄어들고 오버헤드를 최소화하는 데 도움이 됩니다.

**압축:** 네트워크를 통해 데이터를 전송하기 전에 데이터를 압축하면 페이로드 크기를 크게 줄일 수 있어 전송 속도가 빨라지고 대역폭 소비가 줄어듭니다. 이를 위해 [Gzip 압축과](https://en.wikipedia.org/wiki/Gzip) 같은 기술을 사용할 수 있습니다.

**캐싱:** [캐싱 계층을](https://aws.amazon.com/caching/) 구현하면 데이터베이스나 기타 데이터 소스의 부하를 줄이는 데 도움이 될 수 있습니다. 자주 요청되는 데이터를 캐싱함으로써 후속 요청을 캐시 자체에서 처리하여 응답 시간을 단축하고 확장성을 향상시킬 수 있습니다.

**연결 풀링:** 모든 요청에 대해 새 연결을 만드는 대신 재사용 가능한 연결 풀을 유지하면 긴 폴링 메커니즘의 효율성을 개선할 수 있습니다. 이렇게 하면 각 요청에 대해 새 연결을 설정하는 데 따른 오버헤드가 제거되어 성능이 향상됩니다.

**스로틀링 및 속도 제한:** 스로틀링 및 속도 제한 메커니즘을 구현하면 과도한 요청으로 인해 서버가 과부하되는 것을 방지할 수 있습니다. 이를 통해 공정한 리소스 할당을 보장하고 남용을 방지하여 성능과 확장성을 개선할 수 있습니다.

[**로드 밸런싱**](https://www.pubnub.com/guides/load-balancing/)**:** 부하 분산 기술을 사용하여 들어오는 요청을 여러 서버에 분산하면 부하를 분산하고 단일 서버에 과부하가 걸리는 것을 방지할 수 있습니다. 이는 긴 폴링 시스템의 전반적인 성능과 확장성을 향상시킵니다.

**모니터링 및 최적화:** 롱 폴링 시스템의 성능을 정기적으로 모니터링하고 병목 현상이나 개선이 필요한 부분을 파악하면 시스템을 최적화하여 성능과 확장성을 개선하는 데 도움이 될 수 있습니다. 프로파일링, 부하 테스트, 성능 튜닝과 같은 기술을 사용하여 성능 문제를 파악하고 해결할 수 있습니다.

**비동기(비동기) 처리:** 시간이 많이 걸리는 작업을 [비동기 프로세스나](https://www.pubnub.com/blog/asynchronous-tcp-publishing-on-a-single-tcp-payload/) 백그라운드 작업자에게 오프로드하면 리소스를 확보하고 긴 폴링 시스템의 응답성을 개선하는 데 도움이 될 수 있습니다. 메시지 대기열, 작업자 프로세스 또는 분산 컴퓨팅을 통해 이러한 효과를 얻을 수 있습니다.

**연결 시간 제한:** 적절한 연결 시간 제한을 구현하면 유휴 연결로 인해 불필요한 리소스가 소모되는 것을 방지할 수 있습니다. 일정 시간 동안 사용하지 않으면 유휴 연결을 종료함으로써 다른 클라이언트를 위한 리소스를 확보하고 확장성을 개선할 수 있습니다.

**확장 가능한 인프라:** 기본 인프라가 확장 가능하고 예상되는 부하를 처리할 수 있는지 확인하는 것은 장기 폴링을 최적화하는 데 매우 중요합니다. 여기에는 클라우드 컴퓨팅, 자동 확장 또는 [컨테이너화와](https://www.pubnub.com/guides/containerization/) 같은 기술을 사용하여 수요에 따라 리소스를 동적으로 할당하는 것이 포함될 수 있습니다.

롱 폴링과 호환되는 프로그래밍 언어는 무엇인가요?
---------------------------

실시간 채팅 및 메시징 애플리케이션에서 롱 폴링을 구현하는 데 호환되는 프로그래밍 언어가 몇 가지 있습니다. 다음은 몇 가지 예입니다:

1.  자바스크립트: 롱 폴링은 일반적으로 [JavaScript와](https://www.pubnub.com/blog/the-comprehensive-pubnub-publish-subscribe-javascript-api-tutorial/) 결합되어 클라이언트 측에서 원활하게 구현할 수 있습니다. [React](https://www.pubnub.com/blog/building-a-chat-app-with-react-native-and-pubnub-part-one-messaging/), Angular, [Vue.js와](https://www.pubnub.com/blog/building-a-laravel-chat-app-with-php-vue-js-and-pubnub/) 같은 [JavaScript](https://www.pubnub.com/guides/javascript/) 프레임워크는 애플리케이션에서 롱 폴링을 간단하게 구현할 수 있는 라이브러리와 툴을 제공합니다.
    
2.  PHP: [PHP는](https://www.pubnub.com/docs/sdks/php) 웹 개발에서 자주 사용되는 인기 있는 서버 측 언어입니다. 개발자가 긴 폴링을 효율적으로 구현할 수 있는 기능과 라이브러리를 제공합니다. 예를 들어 PHP 프레임워크인 Laravel은 이벤트 브로드캐스팅 시스템을 통해 롱 폴링을 지원합니다.
    
3.  Python: [Python은](https://www.pubnub.com/blog/socket-programming-in-python-client-server-p2p/) 롱 폴링을 구현하는 데 사용할 수 있는 또 다른 다목적 언어입니다. 장고와 플라스크 같은 Python 프레임워크는 롱 폴링 기법을 사용하여 실시간 애플리케이션을 구축하기 위한 도구와 라이브러리를 제공합니다.
    
4.  루비: [Ruby는](https://www.pubnub.com/docs/sdks/ruby) 웹 개발에 적합한 동적 객체 지향 프로그래밍 언어입니다. 널리 사용되는 웹 프레임워크인 [Ruby on Rails는](https://rubyonrails.org/) 다양한 라이브러리와 확장을 통해 롱 폴링을 지원합니다.
    
5.  Java: [Java는](https://www.java.com/en/) 엔터프라이즈 개발에서 널리 사용되는 언어이며 긴 폴링을 지원합니다. Spring 및 Java EE와 같은 Java 프레임워크는 실시간 애플리케이션에서 롱 폴링을 구현하기 위한 라이브러리 및 도구를 제공합니다.
    
6.  .NET/C#: [프로그래밍 언어 C#이](https://www.pubnub.com/docs/sdks/c-sharp) 포함된 [.NET 프레임워크는](https://dotnet.microsoft.com/en-us/learn/dotnet/what-is-dotnet-framework) 일반적으로 웹 애플리케이션을 구축하는 데 사용됩니다. 이 프레임워크는 긴 폴링 기법의 구현을 간소화하는 ASP.NET [SignalR과](https://www.pubnub.com/guides/what-is-signalr/) 같은 라이브러리 및 프레임워크를 제공합니다.
    

이는 롱 폴링을 지원하는 프로그래밍 언어의 몇 가지 예에 불과합니다. 다른 많은 언어와 프레임워크도 실시간 채팅 및 메시징 애플리케이션에서 롱 폴링을 구현할 수 있습니다.

긴 폴링을 구현하기 위한 프로그래밍 언어를 선택할 때 고려해야 할 몇 가지 요소가 있습니다. 먼저 애플리케이션의 구체적인 요구 사항을 고려하고 이러한 요구 사항에 가장 적합한 언어를 선택하세요. 확장성, 성능, 백엔드에서의 구현 용이성을 고려하세요.

또한 프로그래밍 언어를 둘러싼 커뮤니티와 생태계를 고려하세요. 강력하고 활발한 커뮤니티는 지원, 튜토리얼, 문서 및 리소스를 제공하여 애플리케이션에서 긴 폴링을 더 쉽게 구현할 수 있도록 도와줄 수 있습니다.

실시간 애플리케이션에서 롱 폴링은 어떻게 사용되나요?
-----------------------------

롱 폴링의 주요 장점 중 하나는 실시간 업데이트 전달의 효율성입니다. 클라이언트가 전송하는 요청의 수를 최소화하면 네트워크 지연 시간이 크게 줄어들고 전반적인 성능이 향상됩니다. 또한 서버가 클라이언트에 업데이트를 즉시 푸시할 수 있어 메시지와 알림을 신속하게 전달할 수 있습니다.

또한, 긴 폴링은 실시간 애플리케이션의 확장성을 용이하게 합니다. 열려 있는 연결 수를 줄이면 서버가 더 많은 동시 클라이언트를 처리할 수 있습니다. 이는 사용자 수가 지속적으로 변동하는 채팅 및 메시징 애플리케이션에서 특히 중요합니다.

긴 폴링은 시스템 리소스를 절약하는 데 도움이 됩니다. 기존 폴링에서는 업데이트 없이도 각 요청을 처리하고 응답하기 위해 서버가 필요합니다. 이러한 지속적인 처리는 서버 리소스에 부담을 주고 성능에 부정적인 영향을 미칠 수 있습니다. 반면, 롱 폴링은 새로운 데이터를 사용할 수 있거나 시간 초과가 발생할 때만 서버 처리를 트리거합니다. 따라서 시스템 리소스에 대한 부담을 최소화하고 확장성과 안정성을 개선할 수 있습니다.

그러나 롱 폴링을 구현하는 데는 몇 가지 문제가 발생할 수 있습니다. 한 가지 과제는 서버 리소스를 효과적으로 관리하는 것입니다. 롱 폴링은 장시간 연결을 열어두는 것이므로 여러 개의 동시 연결을 처리하려면 상당한 서버 리소스가 필요합니다. 이 문제는 클라우드 컴퓨팅, 자동 확장 또는 [컨테이너화와](https://www.pubnub.com/blog/buzzword-microservices-serverless-functions-programmable-infrastructur/) 같은 기술을 사용하여 수요에 따라 리소스를 동적으로 할당함으로써 해결할 수 있습니다. 개발자는 활성 연결 수에 따라 리소스를 자동으로 확장 또는 축소함으로써 서버가 예상되는 부하를 효과적으로 처리할 수 있도록 할 수 있습니다.

또 다른 과제는 시간 초과 및 연결 실패를 처리하는 것입니다. 긴 폴링에서 서버는 새 데이터를 사용할 수 있거나 시간 초과가 발생할 때까지 요청을 열어 둡니다. 시간 초과가 발생하면 서버는 시간 초과를 정상적으로 처리하고 연결을 종료하여 리소스를 확보해야 합니다. 또한 연결이 실패하면 서버는 이를 감지하고 재연결 시도를 적절히 처리할 수 있어야 합니다. 개발자는 강력한 오류 처리 및 연결 관리 메커니즘을 구현함으로써 실시간 애플리케이션에서 장시간 폴링의 안정성을 보장할 수 있습니다.

보안은 실시간 애플리케이션에서 롱 폴링을 구현할 때 고려해야 할 또 다른 중요한 사항입니다. 롱 폴링은 클라이언트와 서버 간의 지속적인 연결을 유지해야 하므로 민감한 데이터를 보호하기 위해 이러한 연결을 안전하게 보호하는 것이 중요합니다. SSL(보안 소켓 계층) 또는 TLS(전송 계층 보안) 프로토콜을 구현하면 긴 폴링 연결을 통해 전송되는 데이터를 암호화하고 도청이나 무단 액세스를 방지하는 데 도움이 될 수 있습니다.

전 세계 15개 이상의 PoP가 8억 명의 월간 활성 사용자를 지원하고 99.999%의 안정성을 제공하므로 중단, 동시 접속자 수 제한, 트래픽 폭증으로 인한 지연 문제를 걱정할 필요가 없습니다. PubNub은 실시간 데이터가 필요한 모든 애플리케이션에 적합합니다.

[무료 평가](https://admin.pubnub.com/#/register) 판에 가입하고 매월 최대 200 MAU 또는 총 트랜잭션 수 100만 건까지 무료로 이용할 수 있습니다.

PubNub이 어떤 도움이 될까요?
===================

이 문서는 원래 [PubNub.com에](https://pubnub.com/guides/long-polling/) 게시되었습니다.

저희 플랫폼은 개발자가 웹 앱, 모바일 앱, IoT 디바이스를 위한 실시간 인터랙티브를 구축, 제공, 관리할 수 있도록 지원합니다.

저희 플랫폼의 기반은 업계에서 가장 크고 확장성이 뛰어난 실시간 에지 메시징 네트워크입니다. 전 세계 15개 이상의 PoP가 8억 명의 월간 활성 사용자를 지원하고 99.999%의 안정성을 제공하므로 중단, 동시 접속자 수 제한, 트래픽 급증으로 인한 지연 시간 문제를 걱정할 필요가 없습니다.

PubNub 체험하기
-----------

[라이브 투어를](https://www.pubnub.com/tour/introduction/) 통해 5분 이내에 모든 PubNub 기반 앱의 필수 개념을 이해하세요.

설정하기
----

PubNub [계정에](https://admin.pubnub.com/signup/) 가입하여 PubNub 키에 무료로 즉시 액세스하세요.

시작하기
----

사용 사례나 [SDK에](https://www.pubnub.com/docs) 관계없이 [PubNub 문서를](https://www.pubnub.com/docs) 통해 바로 시작하고 실행할 수 있습니다.