Astro 사이트에 광고와 개인정보 동의 스크립트를 함께 도입한 이유
목차
Astro 기반 웹사이트에 AdSense 광고 플랫폼과 Privacy Messaging 스크립트를 Base 레이아웃에 추가했다. 단순해 보이는 script 추가지만, 이 결정 뒤에는 제품 수익화, 규정 준수, 성능 최적화를 모두 고려한 팀의 논의가 있었다.
모든 페이지가 아니라 Base 레이아웃에 넣은 이유
처음 AdSense 통합을 제안했을 때 팀에서 나온 첫 질문은 "어디에 넣을 건가"였다. 개별 페이지에 script를 삽입할 수도 있고, 공통 레이아웃에 넣을 수도 있다. 우리가 Base.astro를 선택한 건 다음 이유 때문이었다:
- 일관성: 모든 페이지에서 동일한 광고/메시징 환경을 보장
- 유지보수성: script 버전 업데이트나 설정 변경이 한 곳에서만 필요
- 성능: 중복 로딩 방지, 브라우저 캐싱 효율성
물론 단점도 있다. Base 레이아웃에 추가하면 관리자 페이지나 API 문서 같은 특정 섹션에서는 광고가 불필요할 수 있다. 그래서 나중에는 레이아웃을 세분화하거나 조건부 렌더링을 추가할 필요가 생길 수 있다.
<!-- src/layouts/Base.astro -->
<head>
<!-- AdSense script -->
<script async src="https://pagead2.googlesyndication.com/pagead/js/adsbygoogle.js"></script>
<!-- Privacy Messaging script -->
<script src="https://cdn.cookielaw.org/consent/..."></script>
</head>
AdSense와 Privacy Messaging, 왜 함께 추가했을까
이 둘은 서로 다른 목적이지만, 함께 움직인다. AdSense는 광고 수익화를 위한 도구고, Privacy Messaging은 GDPR, CCPA 같은 규정을 준수하기 위한 필수 요소다. 특히 유럽이나 미국 트래픽이 있다면, 광고 플랫폼 자체가 개인정보 동의 메시지를 먼저 보여줄 것을 요구한다.
우리 팀의 의사결정 프로세스를 보면:
1. 비즈니스 측: "광고로 수익화하면 x년 내 y 비용 충당 가능"
2. 개발팀: "규정 준수를 위해 Privacy Messaging 필수"
3. 리드: "둘 다 넣되, 사용자 경험은 해치지 말 것"
따라서 script 로딩 순서가 중요했다. Privacy Messaging이 먼저 로드되고, 사용자 동의 상태에 따라 AdSense가 작동하도록 구성해야 한다.
Head script 추가할 때의 고려사항
단순히 <script> 태그를 추가하는 것 같지만, 실제로는 여러 선택지가 있다:
| 요소 | 선택지 | 트레이드오프 |
|---|---|---|
| 로딩 시점 | async / defer / 동기 | async는 빠르지만 실행 순서 미보장, defer는 순서 보장 |
| 캐싱 | 파일 호스팅 vs CDN | CDN은 빠르지만 타사 의존, 호스팅은 느리지만 제어 가능 |
| 에러 처리 | try-catch wrapper | 광고/메시징 실패가 페이지 로드 차단하지 않도록 |
| 성능 영향 | 페이지 로드 시간 | 측정하고 모니터링 필요 |
우리는 다음을 결정했다:
- AdSense는 async로 로드 (광고 지연이 페이지 렌더링 차단하지 않음)
- Privacy Messaging은 defer로 로드 (동의 수집이 먼저 완료되어야 함)
- 둘 다 CDN을 통해 (타사 서비스이고, 지역별 최적 배포 제공)
<!-- AdSense: 비동기로 페이지 렌더링 차단 방지 -->
<script async src="https://pagead2.googlesyndication.com/pagead/js/adsbygoogle.js"></script>
<!-- Privacy: defer로 순서 보장 -->
<script defer src="https://cdn.privacy-message.com/consent.js"></script>
체크해야 할 항목들
이 기능을 배포하기 전/후로 다음을 모니터링했다:
- 페이지 로드 속도: Core Web Vitals (LCP, FID, CLS)에 미치는 영향 측정
- 에러 로깅: 광고/메시징 script 실패 시 alert 설정
- 사용자 동의율: Privacy Messaging 수락 비율 추적
- 광고 노출 수: AdSense 수익화가 예상대로 작동하는지 확인
- 지역별 이슈: 특정 국가에서 script 차단 가능성 (중국, 러시아 등)
팀의 관점에서 봤을 때, 이런 모니터링 체크리스트를 미리 정해두는 게 중요했다. 배포 후 "아, 로드 타임이 2초 증가했네?" 하고 발견하는 것보다, 미리 측정할 준비를 하는 게 훨씬 낫다.
회고: 타사 서비스 통합의 교훈
처음엔 "script 두 개 추가하면 끝"이라고 생각했는데, 실제로는 훨씬 넓은 영역을 고려해야 했다. 광고 플랫폼 통합은 단순 기술 문제가 아니라:
- 비즈니스 목표 (수익화)
- 규정 준수 (개인정보 보호법)
- 사용자 경험 (느린 페이지는 이탈 증가)
- 팀 역량 (모니터링, 트러블슈팅)
이 모든 것을 함께 고려하는 의사결정 프로세스가 핵심이었다. 다음에 유사한 타사 서비스를 통합할 때도 같은 체크리스트를 적용할 거다.
🛒 이 글과 어울리는 추천 상품
*위 링크는 쿠팡파트너스 활동의 일환이며, 일정액의 수수료를 제공받을 수 있습니다.
댓글 0
첫 댓글 달아줘.