폴링

목적지에 도착할 때까지 차 뒷좌석에서 '다 왔어요?' 하고 1분마다 물어보는 것과 같아요.

정의 폴링은 어떤 기기나 프로그램이 다른 대상에게 새로운 소식이나 데이터가 있는지 일정한 시간 간격마다 반복해서 물어보는 확인 방식이에요. 상대방이 먼저 알려주지 않아도 스스로 주기적인 질문을 던져서 최신 상태를 유지해요.

다 왔어요? 지금은요? 또 물어보기

장거리 자동차 여행을 떠났을 때 뒷좌석에 탄 아이가 1분마다 "다 왔어요?"라고 묻는 모습을 떠올려 보세요. 운전자는 매번 "아직 멀었어"라고 답하다가, 마침내 도착했을 때 비로소 "이제 다 왔다"고 알려주죠.

컴퓨터와 스마트폰 속 프로그램도 똑같은 방식으로 일할 때가 많아요. 내 스마트폰 앱이 서버를 향해 새로운 메시지나 알림이 도착했는지 정해진 주기마다 쉬지 않고 질문을 던져요. 1초나 3초처럼 일정한 시간 간격을 정해두고 "새로운 데이터 있어?"라고 계속 확인하는 거예요.

이처럼 특정 장치나 프로그램이 다른 곳의 상태를 주기적으로 점검하는 소통 기법을 '폴링(Polling)'이라고 불러요. 구조가 매우 직관적이고 만들기 쉬워서 전자기기와 소프트웨어 초창기부터 널리 쓰여온 기본 원리예요.

폴링(Polling) 방식의 주기적 데이터 확인 과정 시간 스마트폰 서버 새 글 있어? 아직 없어 새 글 있어? (1초 뒤) 아직 없어 새 글 있어? (2초 뒤) 새 글 도착!

단순하지만 에너지가 많이 들어요

폴링은 구현하기가 무척 단순하다는 장점이 있어요. 상태를 물어보는 명령어를 일정 시간마다 실행하도록 규칙을 정해두기만 하면 어떤 환경에서든 손쉽게 돌아가거든요.

하지만 아무런 변화가 없을 때도 계속 똑같은 질문을 반복하기 때문에 컴퓨터 자원과 전력을 낭비하게 돼요. 백 번을 물어보아도 아흔아홉 번은 "아무 일도 없다"는 허탈한 답변만 돌아오는 셈이에요. 이 과정에서 중앙처리장치(CPU)와 인터넷 통신망이 쓸데없이 지치게 돼요.

소식을 즉시 알아채기 어렵다는 문제도 있어요. 질문과 다음 질문 사이의 빈틈에 중요한 사건이 터지더라도, 다음 질문 순서가 찾아올 때까지는 그 사실을 알 방법이 없어요. 확인 주기를 너무 좁히면 배터리가 광속으로 닳고, 주기를 넓히면 반응 속도가 느려지는 고민이 생겨요.

조금 더 정확히 말하면: 인터럽트와 푸시

조금 더 정확히 말하면, 오늘날의 컴퓨터 시스템은 이런 비효율을 줄이기 위해 '필요할 때만 알려주는 방식'을 함께 써요. 내가 매번 문을 두드리는 대신, 소식이 생겼을 때 상대방이 먼저 초인종을 눌러주는 형태예요.

컴퓨터 하드웨어 부품들은 CPU가 일일이 부품들을 감시하는 대신, 마우스 클릭이나 키보드 입력이 들어왔을 때만 신호를 쏘아 보내는 방식을 써요. 이를 인터럽트(Interrupt, 가로채기)라고 불러요.

스마트폰 앱이나 웹 브라우저에서도 마찬가지예요. 채팅 앱이 메시지를 기다릴 때 무작정 서버를 찌르는 대신, 서버와 연결 통로를 항상 열어두는 웹소켓이나 실시간 푸시 알림을 활용해요. 덕분에 기기는 배터리를 아끼면서도 소식을 빛의 속도로 전달받을 수 있게 되었어요.

폴링 방식과 푸시/이벤트 방식의 동작 비교 다이어그램 폴링 (반복 확인) "새 글 있어?" 끊임없이 확인 (자원 낭비) 푸시 / 인터럽트 (이벤트 방식) "변화 발생!" 소식이 생길 때 즉시 전송 평소에는 조용히 대기 (배터리·자원 절약)

🤔 흔한 오해

✕ 오해

폴링은 비효율적이어서 요즘 컴퓨터나 웹에서는 전혀 쓰이지 않는다.

✓ 사실

단순함과 안정성이 필요한 곳에서는 여전히 쓰여요. 예를 들어 하드웨어 센서의 미세한 상태를 읽거나, 복잡한 통신 통로를 만들기 어려운 간단한 임베디드 장치나 배치 작업에서는 폴링이 가장 안전하고 명쾌한 해결책이 되기도 해요.

🧺 일상에서 만나요

1 식당 예약 앱에서 내 순번이 되었는지 확인하려고 10초마다 서버에 새로고침 요청을 보내는 상황이에요.
2 프린터가 인쇄를 마쳤는지 컴퓨터가 주기적으로 신호를 보내 확인하는 방식이에요.
💡 그러니까 한마디로

폴링은 새로운 소식이 있는지 일정한 주기마다 직접 물어보아 상태를 확인하는 통신 방식이에요.