개발 slecs

광고 스크립트 누락으로 수일간 광고가 조용히 사라졌던 이유

목차

광고 스크립트가 미로드 상태로 수일간 운영되고 있었다는 걸 뒤늦게 파악했다.

왜 광고가 안 떴는가

증상 자체는 단순했다. 특정 페이지들에서 광고 슬롯이 그냥 비어 있었다. 콘솔을 열어보니 HawkEyes is not defined 류의 에러가 찍혀 있었고, 원인은 명확했다. HawkEyesMaker.js CDN 스크립트가 <head> 에 빠져 있었던 것.

모비온 HawkEyes 는 광고 렌더링 전에 초기화 객체가 준비되어 있어야 하는 구조인데, 해당 스크립트 자체가 없으니 이후에 아무리 광고 코드가 실행되려 해도 참조할 전역 객체가 없었다. 전형적인 "스크립트 로드 순서 / 누락" 문제다.

이런 류의 버그가 무서운 이유는 화면이 깨지지 않는다는 점이다. 레이아웃은 멀쩡하고, 콘텐츠도 잘 보인다. 광고 슬롯만 조용히 비어 있다. QA 단계에서 기능 중심으로만 체크하면 그냥 통과된다. 매출 지표를 보거나 광고 대시보드를 직접 확인하기 전까지는 발견이 안 되는 종류의 결함이다.

어떤 파일들이 영향을 받았나

파일 역할
index.html 메인 랜딩 — 트래픽 가장 높은 페이지
courses.html 강좌 목록 — 광고 노출 핵심 지면
course-detail.html 강좌 상세 — 체류 시간 길고 광고 단가 높은 페이지
about.html 소개 페이지
contact.html 문의 페이지

다섯 개 파일 전부 raw HTML로 관리되는 정적 페이지들이다. 템플릿 엔진이나 공통 레이아웃 컴포넌트 없이 각 파일의 <head> 를 개별 관리하는 구조였기 때문에, 스크립트를 한 군데에만 추가한다고 해결되지 않고 파일별로 직접 박아 넣어야 했다.

이게 바로 이번 버그의 구조적 원인이기도 하다. 공통 <head> 스니펫이 없으면, 새 스크립트를 추가하거나 CDN URL을 변경할 때마다 N개의 파일을 일일이 수정해야 한다. 한 파일이라도 빠지면 그 페이지만 조용히 망가진다.

<!-- 수정 전: HawkEyesMaker.js 누락 상태 -->
<head>
  <meta charset="UTF-8">
  <title>...</title>
  <!-- 광고 초기화 스크립트 없음 -->
</head>

<!-- 수정 후: CDN 로드 추가 -->
<head>
  <meta charset="UTF-8">
  <title>...</title>
  <script src="https://cdn.example.com/HawkEyesMaker.js"></script>
</head>

회고

솔직히 이건 기술적으로 어려운 수정이 전혀 아니다. 스크립트 태그 한 줄 다섯 번 붙여넣기다. 그럼에도 이 커밋을 회고 글로 남기는 이유는, 이런 종류의 실수가 정적 HTML 관리 구조에서 반드시 재발한다는 걸 짚고 싶어서다.

팀 안에서 공유한 내용은 세 가지였다.

  • 광고 스크립트처럼 모든 페이지에 공통으로 들어가야 하는 리소스는 반드시 추가 여부를 체크리스트나 베이스 템플릿으로 강제해야 한다
  • 정적 HTML이라도 반복되는 <head> 구조가 있다면 SSI, 빌드 타임 인클루드, 혹은 최소한 스니펫 파일이라도 도입을 검토할 것
  • 광고처럼 비즈니스 지표와 직결되는 기능은 배포 후 대시보드 수치를 별도로 확인하는 절차가 QA 체크리스트에 있어야 한다

이번엔 빠르게 잡았지만, 이 구조 그대로 파일이 더 늘어나면 언젠가 또 같은 일이 생긴다. 근본 해결은 공통 <head> 관리 방식을 바꾸는 것이다.


다음 스프린트에 정적 파일 빌드 파이프라인 도입 논의를 올릴 예정이다. 끝.


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

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

댓글 0

첫 댓글 달아줘.