| 일 | 월 | 화 | 수 | 목 | 금 | 토 |
|---|---|---|---|---|---|---|
| 1 | 2 | |||||
| 3 | 4 | 5 | 6 | 7 | 8 | 9 |
| 10 | 11 | 12 | 13 | 14 | 15 | 16 |
| 17 | 18 | 19 | 20 | 21 | 22 | 23 |
| 24 | 25 | 26 | 27 | 28 | 29 | 30 |
| 31 |
- AWS 비용 절감
- ssh
- 논문 정리
- 청첩장 모임
- leetcode
- DevOps
- docker
- AWS
- 14일 공부
- 신혼 여행
- study
- 실용주의 프로그래머
- Rust
- PostgreSQL
- 디자인 패턴
- Playwright
- terraform
- 애즈
- MAPF
- 티스토리챌린지
- 경로 계획 알고리즘
- 구조 패턴
- Go-lang
- 오블완
- 생성 패턴
- amazon ecs
- 커머스
- github
- 지표
- Til
- Today
- Total
밤 늦게까지 여는 카페
광고 입찰비는 어떻게 정해지는 걸까? - 커머스 도메인 이해하기 #5 본문
안녕하세요. 2025년에 작성하려고 했던 페이싱 관련 글을 이제야 작성하게 되었습니다.
새로운 도메인, 업무, 그리고 문화에 적응하기까지 시간이 걸렸던 것 같습니다.
작년 8월과 비교하면 정말 많은 것이 달라졌다고 느껴집니다.
- 조만간 어떻게 지냈는지도 회고를 올려보려고 합니다...!
2026년도 벌써 5월이 되었는데 지금 그대로 에너지 유지할 수 있도록 힘내보겠습니다 :)
1. 광고 입찰비가 계산되는 과정, Pacing이 왜 필요할까요?

이전 글에서 디지털 광고 과금 방식과 RTB(Real-Time Bidding) 를 간단히 훑으면서,
각 광고 요청마다 DSP가 “입찰할까 말까, 한다면 얼마까지 쓸까?”를 실시간으로 결정한다는 이야기를 했습니다.
이번 글에서는 입찰가를 어떻게 정하고를 다루는 Pacing을 정리해보겠습니다.
- 참고: Lee, Kuang-Chih, Ali Jalali, and Ali Dasdan. "Real time bid optimization with smooth budget delivery in online advertising." Proceedings of the seventh international workshop on data mining for online advertising. 2013.
하루 예산이 100만 원인 캠페인이 있다고 가정해봅니다.
광고 시스템이 아침부터 입찰가를 엄청 공격적으로 쓰면
=> 오전에 예산 다 써버리고, 저녁 피크 시간대에는 아무 노출도 못 할 수 있습니다. (premature stop)
반대로 “아끼자 아끼자…” 하다가
=> 하루 끝났는데 40만 원이 남으면, 광고주 입장에선 “예산을 제대로 못 썼네?”가 될 수 있습니다. (under-delivery)

일반적으로 광고시스템은 이런 문제들을 동시에 해결하려고 한다고 합니다.
- CTR, CVR, CPA, ROAS 같은 지표를 최대한 좋게 만들면서
- 하루 동안 예산을 너무 빨리/들쭉날쭉하게 쓰지 않고 일관성 있게 나눠 쓰도록 하는 것이죠.
2. 이게 그렇게 어려운 문제인가?
그러면 가장 간단한 해결책이 떠오르실 거에요.
"하루를 24시간으로 쪼개서, 시간당 예산을 똑같이 쓰면 되지 않나?"
합리적인 접근이지만 2가지 문제가 있습니다.
- 트래픽 불균형: 서비스마다 트래픽이 몰리는 시간대가 다릅니다. 점심에 유저가 몰리고 새벽에는 아예 없을 수도 있습니다.
- 성과 불균형: 시간대마다 CTR/CVR/AR이 다를 수 있습니다. 밤 9시에는 전환이 많이 일어나지만 낮 2시에는 안 일어날 수도 있습니다.
단순 균등 페이싱은 "시간"만 보고 예산을 나누기 때문에
트래픽이 많은 시간대에 충분히 못 쓰거나 성과가 좋은 시간대/나쁜 시간대를 구분해서 쓰지 못하는 문제가 있습니다.
그래서 논문에서는 "트래픽 패턴 + 성과 패턴까지 같이 반영한 Pacing을 하자"고 제안합니다.
3. 페이싱 비율 계산하기
논문에서는 하루 예산 문제를 이렇게 설명합니다.
1. 하루를 T개의 time slot으로 나눈다.
- 예: 10분 단위, 30분 단위, 1시간 단위 등
2. 하루 전체 예산 B와 slot t에 사용하고 싶은 목표 예산 b(t)를 모든 슬롯에 대한 예산 합이 B가 되도록 정합니다.
3. slot t 동안 실제로 사용한 금액을 s(t)라고 하면 s(t)가 b(t)를 잘 따라가게 해야 합니다.
s(t)를 조금 더 분해하면 요청량 x 페이싱 비율 x 입찰률 에 비례한다는 것을 알 수 있습니다.
이 비례식을 조금 더 전개하면 다음과 같은 식을 얻을 수 있습니다.

- 타임슬롯을 적절한 크기로 나누면 특정 상수로 비례한다는 가정하에 pacing_rate(t+1), pacing_rate(t)에 대한 비례식을 나눈 것입니다.
- s(t+1)을 b(t+1)로 치환한 이유는 현재 시점에서 s(t+1)을 알 수 없기 때문에 목표값으로 대체합니다.
- win_rate(t+1)은 예측값이라고 합니다.
이 식을 통해서 이전 슬롯에서의 예산 소진 결과를 이용해 현재 슬롯의 페이싱 비율을 계산할 수 있어야 하는데...
4. b(t)를 어떻게 계산해야 할까요?
그런데 b(t)는 어떻게 계산해야 할까요?
여러 방법이 있겠지만 논문에서는 균등 분배, 성과 기반 분배 2가지 방식을 간단하게 설명해줍니다.
- 균등 분배
- 남은 예산을 남은 시간 슬롯 수에 균등하게 나누기

- 성과 기반 분배
- 균등 분배에 성과 기반 parameter 1개가 추가된 버전입니다.

5. 계산된 페이싱 비율을 어떻게 사용하는 거에요?
노출 2000번에 1만원과 같은 고정된 예산을 사용하는 Flat CPM 방식에서는 입찰률만 조절하고
입찰가를 조절할 수 있는 Dynamic CPM 방식에서는 기본 입찰가에 pacing_rate를 곱하는 방식으로 적용됩니다.
저는 여기서 페이싱이 입찰가까지 조절해서 조금 헷갈렸습니다만 다음과 같이 정리할 수 있었습니다.
- 트래픽 가치 예측: CTR/CVR/CPA를 정확히 예측하여 적절한 기본 입찰가를 계산하는 것이 핵심
- 페이싱: 입찰가 혹은 입찰률을 조절하여 예산 소진 속도를 조절하는 것이 핵심
이렇게 페이싱에 대해서 간단하게 공부를 마쳐봤습니다.
2013년에 나온 논문이기 때문에 엄청 많은 연구가 더 진행되었을텐데 도움이 될만한 자료가 있을지 궁금하네요...!
'For Fun > 잡학 지식' 카테고리의 다른 글
| AI 엔지니어링 스터디 #3 - AI 서비스 개발하기 전 체크리스트 (0) | 2026.02.03 |
|---|---|
| AI 엔지니어링 스터디 #2 - 파운데이션 모델 이해하기 (2) | 2026.01.26 |
| 코드 컨벤션, 아키텍처도 잘 지키고 있는지 테스트 케이스를 만들 수 있습니다! – ArchUnit vs Konsist (3) | 2026.01.12 |
| AI 엔지니어링 스터디 #1 - Anthropic이 알려주는 컨텍스트 엔지니어링 (2) | 2026.01.10 |
| 검색 맛보기 (0) | 2025.12.13 |