개발 slecs

광고 SDK 로더 스크립트 누락으로 광고 송출이 전면 중단됐던 건

목차

광고 스크립트 누락을 뒤늦게 발견하고 핀포인트로 index.html 한 파일만 고친 날.


배경 — 왜 이게 빠졌나

사내 서비스에 외부 광고 솔루션을 붙이는 작업이었다. 광고 SDK 연동은 보통 두 단계로 나뉜다. 첫째는 계약/세팅 단계(외부 벤더와의 태그 협의, 슬롯 구성), 둘째는 실제 스크립트를 서비스 HTML에 심는 단계. 이번 건은 첫째 단계가 꽤 오래 걸렸고, 그 사이 코드베이스에는 광고 렌더링 관련 컴포넌트 코드만 먼저 들어가 있었다. 그러다 보니 index.html head에 로더 스크립트 한 줄을 빠뜨린 채로 배포된 상태가 꽤 지속됐다.

컴포넌트 코드가 있어도 SDK 자체가 로드되지 않으면 광고 송출은 당연히 0건. QA 환경에서 광고 슬롯이 비어 있는 게 확인됐을 때 팀원 입장에서는 "컴포넌트 설정 문제 아닐까?" 방향으로 먼저 파고들었고, 내가 index.html을 직접 열어보고 나서야 "아, 스크립트 자체가 없네"로 결론이 났다. 전형적인 스크립트 로딩 전에 SDK 호출 유형의 버그였다.


작업 내용

변경은 단 한 파일, index.html.

<!-- 수정 전 -->
<head>
  <meta charset="UTF-8" />
  <title>서비스명</title>
  <!-- 기타 메타/리소스 태그 -->
</head>

<!-- 수정 후 -->
<head>
  <meta charset="UTF-8" />
  <title>서비스명</title>
  <!-- 기타 메타/리소스 태그 -->
  <script src="https://cdn.example.com/HawkEyesMaker.js"></script>
</head>

변경 파일이 index.html 하나, diff도 한 줄 수준. 작업 자체는 5분이 안 걸렸지만 이 한 줄이 광고 전체 송출을 막고 있었다는 점에서 임팩트는 전혀 작지 않았다.

외부 광고 SDK를 head에 로드하는 이유는 보통 아래와 같다.

  • 초기화 타이밍 보장: 광고 슬롯 컴포넌트가 마운트되기 전에 SDK 전역 객체가 준비돼 있어야 함
  • 비동기 로딩 이슈 방지: body 하단이나 defer 로딩으로 넣으면 컴포넌트 렌더 시점에 SDK가 아직 undefined인 경우 생김
  • 벤더 권고 스펙 준수: 대부분의 광고 SDK는 head 삽입을 기본 가이드로 제시함

물론 head 동기 로드가 페이지 파싱을 블로킹한다는 단점은 있다. 벤더에 따라 async/defer 속성 사용이 가능한 경우도 있으므로, 이 부분은 SDK 스펙 문서를 확인하고 결정하는 게 맞다.


회고 — 이 류의 누락이 반복되는 이유

원인 유형 설명
타임라인 분리 컴포넌트 코드 작업 ↔ SDK 실제 적용 시점이 달라서 연결고리 누락
체크리스트 부재 "외부 SDK 연동 시 index.html head 수정" 항목이 PR 템플릿에 없었음
테스트 커버리지 공백 스크립트 로딩 자체를 검증하는 E2E 케이스가 없었음

팀 리딩 입장에서 이 버그는 개인 실수보다 프로세스 구멍에 가까웠다. 외부 벤더 연동 작업은 계약/세팅/코드 단계가 서로 다른 사람, 다른 타임라인에서 진행되는 경우가 많다. 그 갭 사이에서 "마지막 한 줄"이 빠지는 건 드문 일이 아니다.

이번 건 이후로 외부 스크립트 연동 PR에는 index.html 변경 여부를 명시적으로 체크하는 항목을 PR 템플릿에 추가했다. 코드리뷰 때 컴포넌트 코드만 보고 "LGTM" 찍는 상황을 줄이기 위해서다. 한 줄 fix가 생기면 그 한 줄 주변의 프로세스를 다시 돌아보는 게 팀장의 역할이라고 생각한다.

끝.


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

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

댓글 0

첫 댓글 달아줘.