PRD SAMPLE

홈 메인 배너 빈 화면 대응 — 대체 노출과 차단 측정

작성 김귀영 · 2026.08 · v1.0 · 상정 독자: PM 팀장(의사결정) · 시니어 개발자(구현 설계)
일상 QA 중 직접 발견하고 원인을 특정한 문제(광고 차단 프로그램의 홈 배너 차단)를 기능 요구사항으로 정리한 PRD 샘플입니다. 세부 수치·경로명은 내부 정보 보호를 위해 일반화했습니다.
읽는 순서 안내 — 팀장님은 01 · 02 · 06만으로 결정하실 수 있게 썼습니다. 개발 설계에 필요한 내용은 03 · 04 · 05에 있습니다.

01세 줄 요약과 결정 요청

PROBLEM 크롬 + 광고 차단 확장 환경에서 홈 메인 배너 이미지가 차단되어 최상단이 빈 화면으로 노출됩니다. 원인은 이미지 경로의 ad-image 네이밍이 차단 목록에 걸리는 것으로 특정했습니다.

PROPOSAL 차단을 우회하지 않습니다. ① 차단돼도 빈 화면이 나오지 않는 대체 노출(폴백)을 먼저 깔고, ② 차단 발생 비율을 지표로 만든 뒤, ③ 근본 대응(경로 변경)은 그 지표를 보고 결정합니다.

WHY THIS ORDER 빈 화면 제거는 규모와 무관하게 가치가 있고 비용이 낮습니다. 반대로 경로 변경은 참조 시스템 파악이 필요한 큰 작업인데, 지금은 영향 규모를 아무도 모릅니다. 싼 것부터 하고, 비싼 것은 숫자를 보고 결정합니다.

팀장님께 요청드리는 결정 3가지
① 1·2단계(폴백 + 측정) 착수 승인 — 프론트 1명 기준 규모 산정은 시니어 개발자 리뷰 후 확정
② 폴백에 노출할 기획전 콘텐츠의 운영 주체 지정 (홈 운영 담당 협의 필요)
③ 3단계(경로 변경) 진행 여부를 판단할 차단 발생 비율 기준값 합의 — 제안: 측정 2주 후 리뷰 미팅에서 결정

02배경 — 왜 지금 해야 하나

크롬에서 홈 메인 배너가 하얗게 비어 보이는 현상을 발견해 원인을 격리했습니다. 시크릿 모드에서 재현(캐시 원인 배제) → 엣지에서 정상(서버·데이터 원인 배제) → 개발자 도구에서 배너 이미지 경로의 ad-image 네이밍이 광고 차단 목록에 걸리는 것으로 특정.

방치할 수 없는 이유는 두 가지입니다.

03하기로 한 것, 하지 않기로 한 것

하기로 한 것

하지 않기로 한 것 (Non-goals)

하지 않는 것이유
차단 우회 (경로 즉시 변경 포함)차단 목록은 계속 업데이트되므로 우회는 반복 비용이 됩니다. 경로 변경 자체는 배제가 아니라 보류 — 측정된 규모가 기준값을 넘으면 3단계로 진행
"광고 차단을 꺼주세요" 안내이탈을 유발하는 UX이고 효과가 불분명. 도입하려면 별도 실험으로
광고 수익 정산 로직 변경이 문서 범위 밖 — 폴백 콘텐츠는 광고 집행 배너가 아닌 자체 기획전으로 한정해 정산 이슈 자체를 회피

04동작 정의

폴백 2중 구조 — 설계의 고정 조건 1개

고정 대체 콘텐츠는 차단 패턴이 없는 별도 경로에서 서빙해야 합니다. 원본과 같은 ad-image 경로에 두면 대체 콘텐츠까지 함께 차단되어 이 기능 전체가 무의미해집니다. 이 한 가지를 제외한 구현 방식은 개발 재량입니다.

순서노출 콘텐츠발동 조건
1차 폴백자체 기획전·시즌 프로모션 이미지 (별도 경로 서빙, 랜딩 링크 포함)배너 로드 실패 감지 시
2차 폴백텍스트+CSS로 그린 프로모션 배너 — 이미지가 없어 이미지 필터로 차단 불가1차 폴백 이미지마저 실패 시

05요구사항 — 인수 기준 포함

각 항목의 인수 기준은 QA가 이 문서만으로 TC를 쓸 수 있는 수준을 목표로 했습니다. 고정은 바꾸면 목적이 깨지는 조건, 재량은 더 나은 구현이 있으면 제안 환영이라는 뜻입니다.

5.1 차단 감지

ID요구사항인수 기준구분
R1배너 이미지 로드 실패 감지 — 로드 에러 또는 타임아웃 3초 (3초는 초기값, 실측 후 조정)차단 확장을 설치한 크롬에서 100% 폴백 전환. 정상 환경에서 오탐(불필요한 폴백 전환) 0건재량
R2네트워크 장애와 차단의 구분 — 차단에 걸리지 않는 초소형 확인용 리소스를 병행 요청해, 확인용은 성공 + 배너만 실패 = '차단'으로 분류하는 방식을 제안오프라인 상태는 '네트워크', 차단 확장 활성 상태는 '차단'으로 각각 분류됨재량 — 더 정확한 판별법 있으면 그 방식으로

5.2 폴백 노출

ID요구사항인수 기준구분
R31차 폴백은 원본 배너와 동일 크기로 교체 — 화면 밀림 없음교체 시 레이아웃 이동(CLS) 측정값 0고정
R4폴백 콘텐츠에 랜딩 링크(기획전 페이지) 연결1차·2차 폴백 모두 클릭 시 지정 랜딩으로 이동고정
R5기획전 이미지·문구·링크는 홈 운영 담당이 어드민에서 교체 가능 (배포 없이)운영 담당자가 어드민에서 변경 → 신규 세션에 반영재량 — 기존 어드민 구조에 맞춰
R62차 폴백 텍스트는 기본값을 코드에 내장 — 어드민 응답 실패 시에도 동작어드민 API를 차단한 상태에서도 2차 폴백 노출고정

5.3 측정

ID요구사항인수 기준구분
R7차단 감지 시 이벤트 로깅 — 시각 / 플랫폼(PC·모바일 웹) / 브라우저 / 분류(차단·네트워크, R2) / 노출된 폴백 단계재현 환경에서 발생시킨 이벤트가 5개 필드 모두 채워져 적재됨고정 — 필드 추가는 재량, 5개는 최소
R8폴백 클릭 이벤트 로깅 — 수집 주소 자체가 차단될 수 있으므로 차단 패턴 없는 주소로 전송차단 확장 활성 상태에서 폴백 클릭 → 이벤트 수집 확인고정
R9대시보드 — 홈 진입 PV 대비 차단 발생 비율, 플랫폼·브라우저별 분포기존 홈 지표 대시보드에서 일 단위 조회 가능재량

06엣지 케이스와 확인 필요 사항

정의된 엣지 케이스

상황정의된 동작
1차 폴백 이미지도 차단·실패2차 텍스트 폴백 (R6)
로깅 수집 주소까지 차단폴백 노출은 정상 동작, 측정만 누락 — 누락률은 서버 로그와 대조해 별도 추정
배너가 느리게 로드되는 중 타임아웃 도달폴백으로 교체하고, 이후 원본 로드가 완료돼도 세션 내 폴백 유지 (깜빡임 방지)

시니어 개발자님께 확인을 요청하는 것 — 모르는 것은 모른다고 적었습니다

07진행 계획과 성공 판정

단계내용완료·판정 기준
1폴백 + 차단 감지 배포 (R1, R3, R4, R6)차단 환경 재현 테스트에서 배너 영역 빈 화면 0건
2로깅·대시보드 (R7–R9) → 2주 수집차단 발생 비율 산출 + 폴백 클릭률 확인 가능
3측정 리뷰 → 경로 변경 착수 여부 결정01에서 합의한 기준값과 실측치를 놓고 팀장님·개발·데이터가 하나의 지표로 결정

실패의 정의도 적어둡니다 — 2주 측정에서 차단 발생 비율이 기준값 미만이면 3단계는 하지 않는 것이 성공입니다. 폴백과 지표는 남고, 큰 공사는 근거 없이 시작하지 않은 것이 되므로.

08검토했지만 선택하지 않은 대안

대안트레이드오프와 판단
경로 즉시 변경 (근본 대응 선행)성공하면 폴백이 불필요해지는 장점. 그러나 참조 시스템 규모 미상 + 영향 규모 미상 상태에서 가장 비싼 카드를 먼저 쓰는 순서가 됨. 측정 후 결정으로 보류
차단 해제 안내 노출일부 서비스에서 사용하는 방식이나, 이탈 리스크 대비 회수 효과의 근거가 없음. 폴백·측정과 배타적이지 않으므로 필요 시 별도 실험으로
아무것도 안 함빈 화면은 규모와 무관하게 신뢰 문제 + 측정이 없으면 이 판단 자체를 영원히 못 함