Polling과 LogTailing

변경된 데이터 수집을 위한 방법

프로그램을 개발하다보면 변경된 데이터를 반영하기 위해 데이터를 조회해 오는 기술들이 필요로 할 때가 있습니다. 먼저 이러한 상황이 쓰여야하는 예를 들어보면 아래와 같은 상황이 있겠습니다.

  • 실시간으로 바뀌는 환율및 주가 정보를 가져와서 반영해야 하는 경우
  • IOT 시스템에서 감지된 실시간 센서 정보를 반영해야 하는경우
  • 신규 주문 혹은 주문 변경이 감지되었을때 알림을 보내야하는 경우

이를 위한 가장 대표적인 방법인 PollingLogTailing 2가지에 대해서 정리해보려고합니다.


폴링 (Polling)

Polling은 대부분 알고 계시고 간단한 방법일텐데 정기적으로 데이터 수집하는 방식으로, 주기적으로 대상 시스템에 요청을 보내 데이터의 변경을 감지합니다. 예를 들어, 매 분 아래와 같은 쿼리 호출을 통해 변경된 환율 데이터를 가지고 올 수 있을것입니다.

select *
from exchg_rate
where mod_dt >= ${이전 변경시간}

장점

  • 구현이 간단합니다.

단점

  • 예약된 주기로 데이터를 가지고 오기때문에 실시간으로 변하는 정확한 데이터 감지는 어려울 수 있습니다.

로그 테일링 (LogTailing)

Log Tailing은 로그 파일의 실시간 업데이트를 감지하는 방식으로, 데이터의 변경이 발생하는 즉시 감지 할 수 있습니다. 일반적으로 DB 변경 log 를 감지하는 CDC (Capture Data Change)를 사용해 구현 할 수 있습니다.

장점

  • 로그 파일의 변경을 모니터링하여 변경된느 모든 이벤트를 감지할 수 있습니다.

단점

  • 구현이 간단하지 않을수 있습니다.
  • 실시간 데이터가 전송되기 때문에 변경이 매우 잦은경우 네트워크 부하가 발생할 수 있습니다.

어떤 기술을 사용해야 할까?

위에서 알아본것과 같이 각각의 장/단점이 있기때문에 구현하려는 서비스의 환경에 따라 결정이 나뉘게 될것입니다. 변경되는 모든 데이터들을 실시간으로 빠르게 감지해야하는 서비스의 경우 Log Tailing 을 사용해야 할것이고, 주기적으로 최종 변경된 데이터에 대해서만 감지하면 되는경우에는 Polling이 유용 할 수 있습니다.

이 뿐 아니라 많은 경우에서는, 두 기술을 혼합하여 사용하는 것이 가장 효과적일 수도 있기때문에 상황에 따라 유연하게 적절한 기술을 선택하여 데이터 수집을 최적화하는 것이 중요합니다.