광고 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
첫 댓글 달아줘.