개발 slecs

도메인 변경으로 끊어진 통계 수집 복구

목차

도메인 이전 후 통계 대시보드 스크립트가 더 이상 로그를 수집하지 못하는 문제를 발견했다. 스크립트 내에 하드코딩된 구 도메인 경로를 신규 도메인으로 변경해 정상화했다.

배경: 왜 이런 일이 발생했나

팀에서 서비스 도메인을 이전하는 작업을 진행했다. DNS 리다이렉트, 로드밸런서 설정, SSL 인증서 같은 인프라 부분은 모두 점검되고 검증되었다. 하지만 놓쳤던 게 있었다 — 백엔드 배치 작업들이다.

통계 대시보드를 운영하는 scripts/stats-dashboard.py는 매일 밤 특정 경로의 액세스 로그를 읽어서 집계하는 일을 한다. 사용자 행동 분석, 성능 모니터링, 이상 탐지 같은 것들이 이 스크립트 결과에 의존한다. 그런데 도메인이 바뀌면 로그 경로도 함께 바뀐다. 대시보드 스크립트 어딘가에 구 도메인이 하드코딩되어 있었다는 뜻이다.

문제 상황

도메인 이전 이틀 후, 통계 대시보드의 데이터가 갱신되지 않는다는 신고가 들어왔다. 일차적으로 스크립트 실행 로그를 확인해보니 "파일을 찾을 수 없음" 같은 에러가 반복되고 있었다. 경로는 여전히 구 도메인 기반 이름으로 로그를 찾고 있었고, 실제 로그는 신규 도메인 경로에 쌓이고 있었던 것.

이런 상황은 표면상으로는 "스크립트가 조용히 실패한" 상태다. 즉시 에러 알림이 날아오지 않으니, 누군가 대시보드를 열어보지 않는 한 며칠이 지나도 알아채지 못한다. 그 사이 의사결정에 필요한 통계 데이터가 갱신되지 않는다.

수정 내용

scripts/stats-dashboard.py 내에서 액세스 로그 경로를 다루는 부분을 찾아 신규 도메인으로 변경했다.

# Before
access_log_path = "/var/log/psy.access.log"

# After
access_log_path = "/var/log/curiodot.access.log"

단순해 보이지만, 이것이 전부는 아니었다. 여러 함수에서 로그 경로를 조립하거나 참조하는 부분들도 함께 수정해야 했다.

수정 대상 변경 전 변경 후
로그 경로 참조 psy.access.log curiodot.access.log
아카이브 경로 /archive/psy/ /archive/curiodot/
캐시 키 생성 "stats:psy" "stats:curiodot"

배운 점과 앞으로의 대책

이 경험에서 몇 가지 배운 게 있다.

첫째, 인프라 변경 때마다 코드베이스 전체를 스윕해야 한다. 도메인이나 엔드포인트, IP 같은 구성 요소가 바뀔 때마다 grep으로 관련 파일들을 일괄 검색하는 습관이 중요하다. 운영 스크립트, 배치 작업, 테스트 픽스처, 설정 파일, 문서까지.

# 도메인 변경 후 체크리스트
grep -r "psy\." scripts/ src/ config/ tests/ --include="*.py" --include="*.yml"
grep -r "psy\." docs/ --include="*.md"

둘째, 환경변수나 설정 파일로 이런 값들을 관리하면 훨씬 낫다. 하드코딩은 버전 관리를 어렵게 하고, 운영 환경마다 다른 값이 필요할 때 코드를 수정해야 한다. 이 경우라면:

# Better approach
access_log_path = os.getenv("LOG_PATH", "/var/log/curiodot.access.log")

이렇게 하면 배포 환경마다 환경변수만 달리 설정해서 같은 코드를 쓸 수 있다.

셋째, 배치 작업의 실행 결과를 모니터링하는 것이 필수다. 이 스크립트는 매일 자동 실행되는데, 실패해도 아무도 모른다면 데이터 공백이 생긴다. Slack 알림, 체크섬 검증, 최근 갱신 시간 체크 같은 방식으로 "정상 작동" 상태를 확인하는 게 좋다.

서비스 도메인 이전처럼 큰 인프라 작업이 있을 때는 별도의 체크리스트를 운영 팀과 공유하고, 배치 작업, 스크립트, 모니터링 규칙까지 모두 함께 검토해야 한다는 걸 다시 한 번 느꼈다.


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

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

댓글 0

첫 댓글 달아줘.