모비온 SP2 광고 패턴 분기 추가와 게이트 모달 제거
목차
광고 SDK 연동 분기 처리와 모달 제거를 한 번에 묶어서 처리한 날이었다.
배경: 왜 분기가 필요했나
광고 미디에이션 구조를 쓰다 보면 같은 벤더라도 패턴이 여러 갈래로 나뉘는 경우가 생긴다. 이번에 모비온 쪽에서 신규 광고 패턴(mediation/SP2)이 추가됐는데, 기존 코드는 이 패턴을 전혀 모르는 상태였다. 그냥 놔두면 SP2 광고 요청이 들어왔을 때 기존 분기를 타거나, 최악의 경우 아무것도 렌더링하지 못한 채 조용히 실패한다.
광고 쪽 버그가 조용히 실패하는 게 특히 더 골치 아픈 이유는, 눈에 보이는 에러가 없으니 QA 단계에서도 잡히기가 어렵고 매출 손실로 이어지고 나서야 뒤늦게 발견되는 경우가 많다. 그래서 이 분기 추가는 우선순위를 높여서 빠르게 처리하기로 판단했다.
작업 내용
변경된 파일은 크게 세 곳이다.
| 파일 | 역할 | 이번 변경 |
|---|---|---|
build-ads/build-ads.js |
광고 빌드 스크립트 | SP2 패턴 분기 로직 추가 |
src/components/AdGateModal.astro |
광고 게이트 모달 컴포넌트 | 파일 자체 제거(또는 내용 비움) |
src/layouts/Layout.astro |
전체 레이아웃 | 모달 마운트 코드 제거 |
build-ads.js 쪽은 빌드 타임에 광고 패턴을 구분해서 처리하는 로직이 들어가는 구조다. 런타임 분기보다 빌드 타임에서 처리하는 방식을 선택한 건, 클라이언트 번들에 불필요한 분기 코드를 남기지 않으려는 의도다. 대략적인 패턴은 이런 식이다.
// build-ads.js 개념적 패턴
function resolveAdPattern(type) {
if (type === 'mediation/SP2') {
return buildSP2Config();
}
// 기존 패턴 처리
return buildDefaultConfig();
}
SP2가 기존 mediation 구조와 어떻게 다른지는 벤더 문서를 꽤 파야 했다. 같은 mediation이라도 태그 구조나 초기화 타이밍이 미묘하게 달라서, "그냥 기존 분기에 케이스 하나 추가" 수준으로 끝나지 않는 경우가 있다. 실제로 이번에도 초기화 순서 차이 때문에 로컬에서 한 번 빈 지면이 뜨는 걸 확인하고 순서를 조정했다.
광고 게이트 모달 제거
AdGateModal.astro 제거 쪽이 사실 더 의사결정이 필요한 부분이었다. 광고 게이트 모달은 보통 광고 차단 감지나 특정 조건에서 유저에게 안내를 띄우는 용도로 쓰이는데, 이걸 제거하기로 결정했다는 건 몇 가지 가능성 중 하나다.
- 기존 모달이 신규 광고 패턴과 충돌하거나 불필요하게 트리거됐을 가능성
- UX 정책 변경으로 게이트 방식 자체를 걷어내기로 결정
- 모달 로직이 SP2 패턴 도입과 맞지 않아 제거 후 재설계 예정
어느 쪽이든 Layout.astro에서 모달을 마운트하는 코드까지 같이 걷어낸 건 맞는 처리다. 컴포넌트만 지우고 레이아웃에 마운트 코드가 남아있으면 빌드 에러나 dead reference가 생기니까.
코드리뷰 관점에서 이런 제거 작업은 항상 "이게 다른 곳에서 참조되고 있지는 않은가"를 먼저 확인하는 게 체크포인트다. Astro 구조에서는 import 추적이 비교적 명확하지만, 그래도 동적 import나 조건부 렌더링 안에 숨어있는 참조는 빌드 에러 없이 런타임에서 터지는 경우가 있다.
회고
광고 연동 작업은 팀 내에서도 도메인 지식이 좁게 집중되는 영역 중 하나라, 변경할 때마다 문서화를 같이 챙기는 게 중요하다. 이번에 SP2 패턴 분기를 추가하면서 왜 이 분기가 필요한지, 어떤 벤더 스펙을 따른 건지를 PR 설명에 같이 남겼다. 다음에 누군가 이 코드를 건드릴 때 벤더 문서를 처음부터 다시 파지 않아도 되도록.
모달 제거 같은 "삭제" 작업도 기능 추가만큼 명시적으로 기록해두는 게 낫다. 왜 제거했는지 흔적이 없으면 나중에 "이거 원래 있었던 거 아닌가?"로 다시 만들어지는 일이 생긴다. 그 사이클이 제일 피하고 싶은 패턴이다.
끝.
🛒 이 글과 어울리는 추천 상품
*위 링크는 쿠팡파트너스 활동의 일환이며, 일정액의 수수료를 제공받을 수 있습니다.
댓글 0
첫 댓글 달아줘.