개발 slecs

분석 데이터 누락·중복 제거로 정확한 모니터링 복구

목차

PV(페이지뷰) 분석 추적 시스템에서 누락되거나 중복 집계되던 사이트들을 정리했다. 전체 커버리지를 완성하면서 동시에 부정확한 로깅으로 인한 중복 제거까지 함께 처리한 작업이다.

왜 이런 누락과 중복이 발생하는가

보통 사이트별 PV 추적 시스템은 점진적으로 성장한다. 처음엔 핵심 서비스 몇 개만 추적하다가, 신규 서비스가 생기거나 통합 대상이 늘어나면서 차례대차례 추가되기 마련이다. 하지만 그 과정에서 다음 같은 문제가 쉽게 발생한다.

누락 시나리오:
- 신규 사이트 출범 후 제때 PV 추적 시스템에 등록 안 됨
- 여러 팀이 병렬로 관련 코드를 작성했을 때 설정 싱크 누락
- 문서와 코드 사이의 간격 (리스트는 있는데 실제 추적 로직엔 빠짐)

중복 시나리오:
- 같은 사이트를 다른 이름이나 경로로 중복 등록
- 레거시 이름과 신규 이름이 함께 존재
- 서로 다른 로깅 경로가 같은 사이트를 중복 계산

이번엔 bible이라는 사이트가 완전히 누락돼 있었고, formpack 같은 항목은 중복으로 집계되고 있었다. 데이터 기반 의사결정을 하는 팀 입장에서 이런 불일치는 심각한 신호다. 분석 대시보드가 실제 트래픽을 제대로 반영하지 못하면 어떤 통계도 신뢰할 수 없기 때문이다.

세 가지 수정 사항

작업 영향 의도
bible 사이트 추가 커버리지 100% 달성 모니터링 사각지대 제거
daily-bible, pdf2api 전용 로깅 중복 제거 + 명확한 추적 경로 각 서비스 고유의 로깅 규칙 확보
formpack 중복 제거 정확한 집계 수 같은 데이터 이중 계산 방지

특히 daily-biblepdf2api는 로깅 방식이 특수하다는 점이 흥미롭다. 이 두 서비스는 일반적인 웹 PV 로그와는 다른 구조를 가지거나, 발생 빈도/시간대가 다를 수 있다. 그래서 별도의 추적 로직으로 격리하는 게 정확도 개선에 핵심이었다.

이런 버그를 반복하지 않으려면

이런 류의 누락·중복 버그는 한 번 발생하면 시간이 지날수록 찾기 어려워진다. 누적된 분석 데이터를 신뢰할 수 없게 되기 때문이다. 팀 차원에서는 몇 가지 패턴을 도입하면 좋다.

1단계: 설정의 중앙화
추적할 사이트 목록을 YAML이나 JSON으로 한곳에 정의하고, 코드는 이를 참조하게 한다. 하드코딩된 리스트 여러 군데 산재 금지.

# 한 곳에서 정의
tracked_sites:
  - name: bible
    log_path: /var/log/bible
    parser: default
  - name: daily-bible
    log_path: /var/log/daily-bible
    parser: specialized  # 특수 로직
  - name: pdf2api
    log_path: /var/log/pdf2api
    parser: specialized

2단계: 정기적 검증
실제 데이터와 설정 사이의 차이를 주기적으로 감시한다. 예를 들어 주 1회 자동화된 스크립트가 모든 사이트의 로그 파일을 스캔해서, 설정에 있는 모든 사이트의 최신 데이터 포인트가 도착했는지 확인하는 식이다.

3단계: 코드 리뷰 체크리스트
신규 서비스 추가나 추적 로직 변경 시 다음을 확인:
- 이미 등록된 서비스와 이름/경로 중복 아닌가?
- 전용 로깅이 필요한가? 아니면 기본 파서로 충분한가?
- 문서와 코드가 일치하는가?

남은 생각

이번 작업을 하면서 느낀 점은 "작은 누락과 중복은 자동으로 드러나지 않는다"는 것. PV 수가 늘어나거든 "아, 예상보다 많네"라고 지나칠 수 있다. 반대로 줄어드는 경우엔 "서비스 인기가 떨어진 거겠지"라고 착각하기 쉽다. 데이터 기반의 판단을 하는 조직일수록 이런 "조용한 오류"의 위험을 간과하면 안 된다.

같은 맥락에서 다음에 레거시 코드를 정리하거나 통합할 땐 먼저 "현재 추적 중인 항목이 정말 맞나"를 한번 더 검증하는 단계를 넣어야겠다는 생각도 든다.


🛒 이 글과 어울리는 추천 상품

*위 링크는 쿠팡파트너스 활동의 일환이며, 일정액의 수수료를 제공받을 수 있습니다.

댓글 0

첫 댓글 달아줘.