광고 유닛 식별자 오류로 빈 슬롯 노출되던 문제 수정
목차
광고 게이트(gate) 유닛 네이밍 이슈를 잡아서 수정했다.
배경: 왜 suffix 하나가 문제였나
psy gate라는 유닛 식별자에 -gate suffix가 붙어 있었다. 겉으로 보면 별거 아닌 문자열 하나 차이지만, 광고 시스템에서 유닛 이름은 실제 렌더링 타깃과 1:1로 매핑되는 식별자다. 잘못된 suffix가 붙으면 해당 슬롯이 아예 다른 유닛을 바라보거나, 정의되지 않은 유닛을 호출해서 광고가 노출되지 않는다. 이 경우는 후자에 가까웠다 — suffix 때문에 기존에 잘 돌아가던 in-article 유닛과 연결이 끊겨 있던 상황이었음.
수정 자체는 단순하다. -gate를 제거하고, 이미 페이지에서 쓰고 있던 in-article 유닛을 그대로 재사용하도록 바꿨다. 변경 파일도 src/pages/t/[slug]/index.astro 하나다.
작업 내용
| 항목 | 변경 전 | 변경 후 |
|---|---|---|
| 유닛 식별자 | psy-gate |
psy |
| 유닛 종류 | (신규 gate 유닛 참조 시도) | 기존 in-article 유닛 재사용 |
| 영향 파일 | src/pages/t/[slug]/index.astro |
동일 |
핀포인트 수정이라 코드 diff 자체는 작다. 하지만 이런 류의 변경은 "얼마나 건드렸냐"보다 "왜 이게 틀렸는지"를 정확히 짚는 게 더 중요하다.
실제로 광고 유닛을 새로 추가할 때 흔히 발생하는 패턴이다. 누군가 게이트(gate) 포지션용으로 별도 유닛을 만들려다가 suffix를 붙인 채로 머지됐거나, 아니면 기획 단계에서 psy-gate라는 명칭이 쓰이다가 실제 등록된 유닛 이름과 달라진 경우. 어느 쪽이든 결과는 같다 — 광고 슬롯이 빈 채로 나간다.
{/* Before */}
<AdUnit id="psy-gate" type="in-article" />
{/* After */}
<AdUnit id="psy" type="in-article" />
구조 자체는 이미 in-article 유닛이 페이지에 존재하고 있었기 때문에, 새 유닛을 추가하는 게 아니라 재사용으로 정리하는 방향이 맞았다. 중복 유닛을 따로 두면 나중에 설정 변경이 생겼을 때 두 곳을 동시에 관리해야 하는 부담이 생긴다. 재사용 쪽이 유지보수 측면에서 훨씬 깔끔하다.
회고
광고 유닛 관련 버그는 스택 에러가 나지 않아서 발견이 늦는 경우가 많다. 렌더링은 되는데 슬롯이 비어 있는 것처럼 보이는 상황 — 개발 환경에서는 mock으로 채워져 있어서 그냥 지나치기 쉽다. 이번 케이스가 딱 그랬다.
팀 관점에서 짚어두고 싶은 건, 광고 유닛 식별자는 코드 안에서만 관리되는 값이 아니라는 점이다. 외부 광고 플랫폼에 실제로 등록된 이름과 코드 내 id 값이 정확히 일치해야 동작한다. 그래서 이 계통의 수정은 코드 리뷰만으로는 잡기 어렵고, 실제 유닛 등록 현황을 같이 확인해야 한다. 코드 리뷰 시 광고 유닛 id 변경이 포함된 PR이 올라오면, "등록된 유닛 맞죠?"를 리뷰 체크리스트에 넣어두는 게 현실적인 예방책이다.
suffix 하나를 지운 수정이지만, 이게 슬러그 기반 아티클 페이지 전체에 영향을 준다는 걸 생각하면 가볍지 않다. [slug] 라우트는 콘텐츠 페이지 전반을 커버하는 동적 라우트니까.
끝.
🛒 이 글과 어울리는 추천 상품
*위 링크는 쿠팡파트너스 활동의 일환이며, 일정액의 수수료를 제공받을 수 있습니다.
댓글 0
첫 댓글 달아줘.