네트워크Event-DrivenPollingMessage ProcessingAsyncLatencySystem Design

이벤트 기반 vs 폴링: 메시지 처리 방식 비교

이벤트가 발생하면 바로 처리하는 방식과 일정 주기로 상태를 확인하는 방식의 흐름 비교

시각화 로드 중...

개요

Network Overview

이벤트 기반(Event-Driven)과 폴링(Polling)은 메시지나 상태 변화가 생겼을 때 처리 주체가 그 변화를 알아차리는 방식이 다릅니다. 이벤트 기반은 변화가 발생한 시점에 이벤트를 발행해 Consumer에게 처리 기회를 전달하고, 폴링은 Consumer가 정해진 주기마다 서버나 저장소를 조회해 새로운 상태가 있는지 확인합니다.

01

이벤트 기반 처리 흐름

  • 발생 시점이 트리거: 사용자의 클릭, 주문 생성, 파일 업로드처럼 의미 있는 변화가 발생하면 Producer가 즉시 이벤트를 발행합니다.
  • 대기 주기 없음: Consumer는 이벤트를 전달받은 뒤 바로 처리를 시작할 수 있어, 고정된 조회 주기를 기다리는 지연이 없습니다.
  • 비동기 결합: Producer는 누가 언제 처리할지 직접 제어하지 않고 이벤트만 남기므로 서비스 간 결합도를 낮출 수 있습니다.
  • 주의점: 여기서 즉시는 지연이 0이라는 뜻이 아니라, 폴링 주기를 기다리지 않는다는 의미입니다. 실제 환경에서는 Broker, 네트워크, Consumer 스케줄링에 따른 처리 지연이 존재합니다.
02

폴링 처리 흐름

  • 주기적 조회가 트리거: Consumer는 1초, 3초, 10초처럼 정해진 간격마다 새 메시지나 상태 변경 여부를 요청합니다.
  • 최대 대기 시간이 존재: 변화가 폴링 직후에 발생하면 다음 조회까지 거의 한 주기만큼 기다릴 수 있습니다. 이 페이지의 예시는 차이를 명확히 보여주기 위해 3초 주기를 사용합니다.
  • 구현이 단순한 경우가 많음: 기존 HTTP 조회 API를 그대로 사용할 수 있어 낮은 빈도의 상태 확인이나 관리자 화면에는 실용적입니다.
  • 빈 요청 비용: 변화가 없어도 주기마다 요청이 발생하므로 클라이언트 수와 폴링 빈도가 커지면 불필요한 네트워크·서버 부하가 늘어납니다.
03

같은 메시지를 처리할 때의 차이

  • 트리거: 이벤트 기반은 변화가 먼저 알리고, 폴링은 Consumer가 먼저 물어봅니다.
  • 지연 시간: 이벤트 기반은 이벤트 전달 경로의 지연이 중심이고, 폴링은 여기에 다음 조회 시점까지의 대기 시간이 추가될 수 있습니다.
  • 요청 패턴: 이벤트 기반은 실제 이벤트 수에 비례해 트래픽이 발생하는 경향이 있고, 폴링은 이벤트가 없어도 조회 트래픽이 계속 발생합니다.
  • 복구 방식: 이벤트 기반은 재시도, offset, DLQ 같은 전달 보장 설계가 중요하고, 폴링은 마지막 확인 시점이나 cursor를 기록해 놓친 구간을 다시 조회하는 방식이 중요합니다.
04

선택 기준

즉시성이 중요하고 이벤트 수가 많거나 Producer와 Consumer를 느슨하게 분리해야 한다면 이벤트 기반이 적합합니다. 반대로 변경 빈도가 낮고 수 초 단위의 지연을 허용하며 단순한 HTTP 조회만으로 충분하다면 폴링이 더 간단한 선택일 수 있습니다. 실제 시스템에서는 이벤트 기반 내부 처리와 폴링 기반 상태 조회를 함께 사용하는 경우도 많습니다.

핵심 단계

  1. 1

    메시지 생성 — 사용자가 발송 버튼을 누르면 동일한 메시지가 이벤트 기반 흐름과 폴링 흐름에 동시에 입력됩니다.

  2. 2

    이벤트 기반 처리 — 이벤트는 발생 직후 Consumer에 전달되어 고정 주기를 기다리지 않고 바로 처리 완료 시각을 기록합니다.

  3. 3

    폴링 대기 — 폴링 흐름에서는 메시지가 대기 상태로 남고, Consumer는 3초마다 새 메시지가 있는지 조회합니다.

  4. 4

    다음 폴링 처리 — 조회 시점에 대기 중인 메시지를 발견하면 처리 완료 시각과 실제 대기 시간을 기록합니다.

핵심 개념 및 실무 적용 분야

✓주문 생성, 결제 완료, 재고 변경처럼 발생 즉시 후속 처리가 필요한 도메인 이벤트
✓채팅·알림처럼 사용자가 가능한 한 빨리 새 메시지를 확인해야 하는 기능
✓배치 작업 상태나 관리자 대시보드처럼 수 초 단위 지연을 허용할 수 있는 상태 조회
✓외부 시스템이 webhook을 제공하지 않아 일정 간격으로 처리 결과를 확인해야 하는 연동