“Change is automatic. Progress is NOT!” -Tony Robbins-

필자도 광고 시장 짬밥이 많지 않은 관계로 “고대”에는 어떻게 온라인 광고가 운영되었는지 잘 모른다. 그저 듣기로는 광고 지면 판매를 담당하는 직원이 "저희 지면에 광고 좀 실어주십시오”라며 세일즈를 하러 다닌 적도 있었다고 하고, 또 잘 팔리는 광고 지면은 서로 자기네 광고 싣겠다고 비싼 가격을 주고 매월 초에 줄을 서서 구매했다고 한다. 웹을 돌아다니면 포털에, 블로그에, 동영상에 (덕지덕지) 붙은 광고들은 다들 그렇게 팔렸(댄)다.

아직도 우리나라에서는 이런 인간적인(Read “구식”) 방식으로 지면이 사고 팔리는 경우가 많지만, 해외에서는 많은 지면들이 자동화되어서 거래되고 있다. 그 자동화 거래 시스템을 Real-Time Bidding, RTB 시스템이라고 부른다.

광고를 팔려는 측(“매체”)에서 쿠키 ID (유저의 접속 기록)를 보내주면 광고를 사려는 측(“광고주”)에서 그 ID에 맞는 가격(Bidding CPM)을 제시하는데, 여러 광고주가 동시에 가격을 제시하고, 그 중에서 최고가를 써낸 광고주에게 광고 지면을 판매하는 “경매” 방식으로 지면이 거래가 된다. 광고주는 내가 원하는 ID에 맞춰서 광고가 나가서 좋고, 매체 측에서는 비싸게 팔아서 좋다. 기존에는 어느 지면에 특정 연령, 성별의 사람들이 많이 들어오고 이들이 구매력이 높은 유저들이므로 1,000번 노출(CPM)에 500원, 1,000원 같은 방식으로 지면을 팔았지만, RTB로 지면을 거래하면 각 유저별로 경매를 붙일 수 있기 때문에 구매자가 많으면 고가로 지면을 판매할 수 있다.

웹페이지가 광고 지면을 팔 때 “우리 웹 사이트는 도시 지역 30대 여성이 많이 들어와서 XXX, YYY, ZZZ 계열의 상품 광고에 용이하고….”로 접근할 때는 그 웹 사이트에 20대 남성이 들어가도 같은 광고를 봐야했다. 그러나 쿠키 ID를 보고 광고주 입장에서 딱 필요한 사람에게만 높은 가격을 지불하고, 나머지 유저에게는 가격을 제시하지 않으면 광고주 입장에서는 “개이득” 아닌가? 매체 입장에서는 지면 팔리는 가격이 고만고만했는데, 가격 경쟁이 붙어서 높은 가격으로 지면을 파니 또한 “개이득”이다. 거기다 모든 거래를 컴퓨터가 알아서 진행하니 인건비를 아껴서 더 좋다.

이 글은 광고 시장 글이 아니라 Data Science에 관한 글이니까 RTB 광고에 더 궁금하신 분은 다른 글을 찾아보실 것을 추천하고, 필자는 RTB가 돌아가는 매커니즘과 기술을 소개해 드리고 싶다.

1. RTB 매커니즘

자동화라고하니 뭔가 대단해보이고 어려워보이겠지만, 사실 바탕에 있는 기술의 로직은 간단하다. 자동으로 AD ID를 송출하고, 거기에 맞춰서 비딩하고, 노출 여부를 결정하면 된다. 우선 오픈소스 RTB 플랫폼인 iab.com의 API 문서를 간단하게 살펴보자.

(Source: iab.com/OpenRTB)

일단 유저가 웹 (앱) 페이지에 들어오면 쿠키 ID (모바일에는 AD ID)를 확인할 수 있고, 이를 바탕으로 Ad request를 보낸다. 윗 그림 제일 왼쪽 상단에 보면 0. Ad Request가 있다. 그리고 1. Bid Request를 다수의 광고주에게 송출한다. 이때 쿠키 ID 뿐만 아니라 웹 사이트, 기기 종류, 장소, IP, 사용 언어, 브라우저, 쿠키 생성 시간, 노출 지면, 노출 지면의 사이즈 등등의 정보가 동시에 송출된다. 자세한 내용은 구글 RTB의 Ad Request 페이지에서 Example bid request를 참조하시면 좋을 것 같다.

지면을 구매하는 비더 (광고주, DSP 등)는 Bid Request에 있는 정보를 바탕으로 자신의 경매 입찰가를 제시한다. 이때 가격뿐만 아니라, 어떤 종류의 광고를 노출할지에 대한 정보도 함께 보낸다.

RTB 매체는 그 정보들을 바탕으로 낙찰여부와 낙찰가를 알려주면서 비딩이 종료된다. (비딩가와 낙찰가가 왜 다른지는 다음 섹션에 설명하겠다.)

지면을 낙찰받으면 자사 광고를 노출할 수 있는데, 이 모든 과정을 최대 100ms 안에 해결해야한다. (실제로는 더 빨리 진행된다. 그래서 한국에 있는 서버로 미국에 있는 RTB 지면을 구매하기는 ‘거의’ 불가능하다.)

아래 Bid Request object model을 보면 Bid Request에 어떤 정보가 들어오는지 Imp (Impression)에 어떤 정보가 들어가는지 좀 더 쉽게 파악할 수 있다. 먼저 DistributionChannel로 집적되는 정보를 보면 Publisher(매체)와 Content(광고내용), 그리고 Site, App (웹 or 앱) 정보가 들어간다. 각각 0 or 1의 2진법 정보로. 예를들어 매체 리스트가 총 100개 있으면 하나만 1이고 나머지는 0으로 들어갈 것이다. 이렇게 DistributionChannel에서 재정리된 정보가 BidRequest로 송출된다. 같은 방식으로 Device, User 등의 정보가 BidRequest에 들어가는 것을 확인할 수 있다.

(Source: iab.com/OpenRTB)

이렇게 RTB Exchange에서 정보를 송출하고 나면 Imp (Impression, 광고 노출) 탭에는 배너 노출인지, 음성 노출인지, 비디오 노출인지, Native Ad인지와 더불어 어떻게 구매가 이뤄졌는지 가격은 얼마고 화폐단위는 뭐였는지 등이 기록이 된다. Imp에서 BidRequest로 돌아가는 정보가 1 일 경우에만 체크되어 있는 것은 당연히 노출이 안 되면 Impression 정보가 없을 것이기 때문이다.

더 자세한 내용은 OpenRTB 의 API를 참조해주시면 되겠다.

Native Ad

요즘 한창 뜨고 있고 있고 저 위의 Bid Request object model에도 잠깐 언급된 Native Ad를 살펴보자. 예전에는 광고 지면이 어떤 내용인지 고려없이 유저의 특성만 보고 광고가 나갔다. 그래서 극단적인 경우에는 테러리스트들이 일으킨 참혹한 피해를 보여주는 동영상에 정작 테러리스트 모집 광고가 나가는 사건이 일어나기도 했다. (관련 기사)

덕분에 최근들어 광고 지면의 내용에 광고 내용을 맞추려는 시도들이 여럿 있다. URX 라는 실리콘 밸리 스타트업은 신문 기사에 있는 단어들을 읽어서 (Crawling 이라고 한다) 그 단어에 매칭되는 광고를 보여주는 기술을 제시했다. 기술 설명을 한 페이지를 보면 어느 도시에 대한 기사를 읽는 사람에게 그 도시의 숙박권 할인 쿠폰이나 여행권 광고가 나가도록 만들어놨는데, 광고 자동화가 어디까지 진화하는지 단적으로 보여주는 사례가 아닐까 싶다.

좀 더 단순한 시도로는 OpenRTB와 구글 RTB 등에서 시도하고 있는 광고지면 Feed 설정이다. 어느 지면이 어떤 카테고리인지 지정을 매우 세부적으로하고 나면, 그 페이지에 어떤 광고를 내보내야하는지 좀 더 세분화할 수 있다. 리타게팅과 RTB가 들어오기 전에 유저의 관심사를 세분화해서 유저별로 지면을 팔던 방법의 2017년 버젼이라고 보시면 얼추 맞을 듯 하다.

Feed 설정방식도 세분화되어서 Content feeds, social feeds, product feeds 등등 내용이 구체화되고 있는데 리타게팅 광고가 유저가 봤던 상품과 유사한 상품을 보여주는 것이라면, Native Ad는 유저가 지금 보고 있는 페이지 (예. 블로그, 신문 기사)에 나오는 상품과 매우 적합도가 유사한 상품을 보여주는 방식으로 이해하면 된다. 이런걸 보면 광고 자동화를 이용하는 인간의 아이디어는 참 끝이 없다는 생각이 든다.

좀 더 자세한 내용은 OpenRTB의 API 문서를 참조해주셨으면 한다.

2. 2차 가격 경매 (2nd price auction or Vickrey auction)

사실 R 코드 하나도 안 들어가는 이 글을 쓰고 싶었던 건 아니지만, “고대”부터 짬밥이 쌓이신 어느 광고회사 매체 세일즈 시니어 분이 2nd price auction을 이해 못 하시는 걸 보고 이 글을 쓰기로 맘을 고쳐 먹었다. 내용이 좀 어려울 줄은 알지만 간단하게 정리해보자.

우선 RTB는 우리가 알고 있는 경매 방식대로 돌아가지 않는다. 제일 비싼 가격을 제시한 사람이 자기가 제시한 가격대로 상품을 사가는 경매가 1st price auction이고, 2등이 제시했던 가격으로 상품을 사가는 경우가 2nd price auction이다. 2등 가격으로 팔면 파는 사람이 손해 아닌가? 먼저 결론만 말하면 “아니다”. 1등 가격으로 팔면 서로 눈치보기를 할 유인동기가 있지만, 2등 가격으로 팔면 남들 눈치 안 보고 자기가 생각하는 상품의 적정 가격을 써내게 된다. 처음 들으면 믿을 수 없을 것이다. (필자가 공부할 때 당황했던 기억이 아직도 생생하다ㅋ)

(Link)

자, 상품 1이 있고 구매자 A와 B가 있다고 생각해보자. 둘은 상품의 적정 가격을 100원, 99원으로 생각하고 있지만 서로가 얼마로 생각하는지는 모른다. (모른다는 가정이 제일 중요하다.) B가 자기가 생각하는 가격 99원으로 비딩에 참여한다고 해 보자. 이때 A가 어떤 전략을 취할 수 있을까?

100원 이상 가격으로 비딩: 그럴 필요가 없다. 어차피 100원 이상의 어떤 가격을 쓰건 경매에서 이기고 99원을 내고 상품을 사온다.

99원이상으로 비딩: 위와 같다. 비딩에서 이기고 99원을 낸다.

99원 밑으로 비딩: 경매에서 진다.

결론은? 99원 이상으로 비딩하면 되는데, 문제는 B가 99원으로 비딩할지 모른다. B가 생각하는 적정가격을 모르니까. 결국 100원 아래에 있는 “미지의 영역”을 찾아다니느니 100원으로 비딩하는게 제일 합리적이다. 잘못하다 경매에서 지면 국물도 없고, 이기더라도 자기가 비딩한 가격 아래로 지불하고 상품1을 구매하니까.

A가 100원으로 비딩한다면, B의 경우엔 어떨까?

99원 아래로 비딩: 경매에서 진다

100원 이상으로 비딩: 경매에서 이긴다. 그러나 100원을 내고 99원짜리 상품을 사야한다. 말을 바꾸면 1원을 손해본다.

B 입장에서는 A가 99원 아래로 비딩하지 않으면 절대로 이 상품을 구매할 수 없다. 그렇다고 100원 이상으로 비딩하면 이겨도 손해를 본다. 자기가 생각하는 가격보다 더 높은 가격을 제시하면, 이기면 손해를 보고, 지면 아무런 이득이 없다. 그래서 결국엔 자기가 생각하는 가격으로 비딩하는게 최적 전략이다.

위의 사례에서 사회적으로 최적 배분은 뭘까? 상품1의 가치를 100원으로 생각하는 사람이 이 상품을 사가고 판매자는 100원을 받는 것이다. 2nd price auction을 하면 구매자는 최적 배분이 되지만 판매자는 99원을 받으니 1원만큼 덜 이득을 본다.

이렇게 1원을 “손해"보는게 A와 B가 매일 눈치보고 (심지어는 담합하는) 1st price auction을 하는 것보다는 훨씬 낫지 않은가? (물론 B가 90원을 비딩하면 10원을 “손해”보는거지만, 여러 사람이 비딩에 참여하면 그 차이값이 줄어들 것이다.)

아무도 경매에 참여하지 않으면 0원에 팔 수는 없으니 최저 가격 (Floor price)를 정해놓기는 한다. (Myerson auction이라고 부른다.)

Bidding CPM optimizer

RTB에서 광고 지면을 구매할 때는 위에 보여드린 것처럼 남들 눈치 안 보고 재량껏 내가 생각하는 지면 가치를 써 내면 된다는 결론이 나왔다. 이제 문제는 내가 생각하는 지면 가치를 어떻게 합리적으로 계산하느냐이다.

위에서 언급했듯이, 구글을 비롯한 대부분의 RTB 판매자들은 유저를 식별할 수 있는 쿠키 ID (or 스마트폰 AD ID)와 IP, 지역, 시간대, 언어 설정, 쿠키 나이, 웹 브라우저, 웹사이트 주소, 노출 크기, 노출 위치 등등의 기본적인 정보를 구매자들에게 제공한다. (구글 RTB 예시 참조) 예를들면, 캘리포니아 지역의 스페인어 사용자를 대상으로만 하는 광고도 송출가능한 것이다. 이런 경우에는 특정 조건을 만족하는 유저에게 x원, 나머지 유저에게 0원 같은 단순한 방식으로 Bidding CPM을 정한다.

요즘 RTB를 활용해서 한창 유행인 리타게팅 광고 상품은 어떻게 작동될까? 일단 쿠키 ID를 받아 내부 DB에 있는 유저 정보와 매칭을 한다. 그리고 그 유저가 이전에 광고주 사이트에서 많은 활동을 했던 유저고, 특정 상품에 관심이 있을 것 같다는 계산이 나오면(글 3번. 최적화 참조) 이 유저의 기대 가치를 계산할 수 있다. (참고로 “고대"에 통신사 가입자들에게 같은 방식의 계산을 하는 모델을 Life-Time Value 모델이라고 했다.)

3. Hybrid RTBs

기존의 RTB는 모든 비딩 참여자에게 동등한 권리를 부여하고 높은 가격을 제시하면 누구나 그 지면을 구매할 수 있었다. 그러나 2차 가격 경매로 지면을 판매하는 매체들 입장에서는 당연히 지면을 더 비싸게 팔고 싶을 것이다. 그래서 지난 몇 년간 다양한 방식의 변형 모델들이 등장했다. 그 중 가장 유명한 2가지만 소개해본다.

Header bidding

비딩 참여자들의 등급을 나누면 어떨까? 우선권을 줄테니 얼마간의 프리미엄을 내던가, 아니면 프리미엄 클래스들이 구매하지 않은 지면에 대해서만 비딩에 참여하라고 하면 어떻게 될까? 경제학에서 말하는 2급 가격 차별(2nd Degree Price Discrimination)이다. 우리 일상생활에서는 비행기, 기차 티켓에서 흔히 볼 수 있다. 좋은 유저들이 많은 지면을 구매하기 위해서 줄까지 섰던 “고대”의 광고 시장을 생각하면 프리미엄 클래스가 되기 위해서 선뜻 비용을 지불하는 광고주들이 생기지 않을까? 실제로 구글, 페이스북, AppNexus 등의 광고시장 선두 주자들이 모두 이 방식을 빠르게 도입하고 있다.

Vickrey-Clarke-Groves (VCG) auction

페이스북에서 Generalized second price auction라고 부르는 지면 판매 방식이다. 관련 기사 관련 논문 쉽게 이야기하면 지면을 낱개로 파는 방식이 아니라, 여러 지면을 동시에 경매에 올려서 2차 가격으로 판매하는 방식이다. 문제는 지불 가격을 “사회에 주는 피해액 (Negative Externalities)”만큼으로 정하는 독특한 경매방식인데, 실제 디테일이 좀 복잡하니 아래에 간단한 예시를 들어보겠다.

광고 지면 3개에 광고를 조합해서 내는 방식을 총 4가지 방식 중 하나로 고를 수 있다고 해 보자. 이 때 사회적 효용이 가장 큰 조합은 그룹 4번이다. 이 때 가장 큰 이득을 보는 유저는 A와 B인데, 둘에게 각각 16, 12를 지불하라고하면 그 다음번 경매에는 얼마를 써 낼까? 아마 그룹 3이 선택되지 않도록 그룹3에 0을 쓰고 그룹4에도 낮은 숫자를 써 낼 것이다. 그래야 자기들이 가장 큰 이득을 보는 그룹 4를 저가에 구매할 수 있기 때문이다. 합리적인 경매 방식은 유저들이 자신의 진짜 가치를 써 넣도록 해야한다.

그러면 유저 A가 얼마를 내게할지를 정할 때, 유저 A의 존재를 지우고 다시 생각해보면 어떨까?

만약에 유저 A가 (6,14,2,16)을 써내지 않았다면 사회적 효용이 35인 그룹 3이 선택되었을 것이다. 유저 A를 제외하면, 그룹3이 선택되어야했을 걸 그룹4가 선택되면서 사회적으로는 35 - 26 = 9만큼의 손실을 본다. 유저 A에게 사회적 손실분인 9만큼 지불하라고 제시하면 다음번 경매에 거짓말을 굳이 해야할까? 어차피 남들이 생각하는 가치에 의해서 내가 내는 금액이 결정되고, 그룹4에 큰 숫자를 쓰지 않으면 그룹4가 선택 안 될수도 있으니 솔직하게 쓰는게 낫다. 같은 맥락에서 유저 B의 경우도 보자.

유저 A보다 차이값은 적지만 어쨌건 유저 B도 그룹 3대신 그룹 4가 선택되도록 만들어서 33 - 30 = 3만큼의 사회적 비용을 만들어냈다. 다른 유저들은 그룹4가 선택되면서 손해를 봤고, 유저 F는 금액이 너무 작아서 사회적 효용에 영향을 못 미친다. 이 경우 매체는 유저 A와 B에게만 9원, 3원을 지불하라고 할 수 있을 것이다.

물론 이렇게 적은 금액을 받으면서 VCG 경매를 계속할 수는 없다. 실제로 페이스북이 VCG를 이용하는 방식은 위의 예시보다 훨씬 더 복잡하다.

(위의 eCPM은 effective CPM의 약자로 CPM에 클릭 확률을 곱한 것이다.)

먼저 각 유저별로 광고 지면에 따른 자신의 Bid를 보낸다. 페이스북은 광고 5개로 만들어 낼 수 있는 모든 조합을 고려해서 상단의 예시처럼 그룹 1,2,3,4,…를 만들어낸다. 그 중 조합의 가치가 최대인 경우를 골라 위의 방식으로 지불 가격을 계산한다. 1등 지면을 얻은 광고주는 1등이 없었을 경우, 2등과 3등이 만들어냈을 사회적 가치만큼을 지불하는 것이다. 위에서 광고 A에 대한 지불 가격은 2등 가격 (10)과 3등 가격 (5)에 2등이 1등에 노출되었으면 얻었을 eCPM 차이값 (1.00 - 0.80)과 3등이 2등 지면에 노출되었으면 얻었을 eCPM 차이값(0.80 - 0.70)을 곱해서 계산되었다. 정리하면, 광고 A의 구매 비용은 광고 B와 광고 C의 비딩 가격에 의해서 결정된다. 광고B와 광고 C의 가격도 그 아래에 뜨는 광고의 가격에 의해서 결정되는 구조다.

금액을 다 합해보면 알겠지만, VCG 방식 RTB는 일반 RTB에 비해 단기적으로는 이득을 볼 수 없는 구조다. 그러나 "사회적인 피해액 (Negative externalities)”만큼을 지불하는 방식은 리타게팅 광고처럼 특정 광고 지면에 “몰아주기”를 통해서 수익을 창출하는 사업에 장애물이 될 수 있다. 그룹으로 묶인 모든 지면에 대해서 솔직한 가치를 써내는 편이 광고 지면을 살 수 있는 확률을 높이기 때문이다.

광고 자동화의 명암

광고주 쪽 영업을 열심히 하는 친구를 만나 들었던 이야기다. RTB와 리타게팅이 시장에 들어오면서 예전처럼 돈 2배 태우면 광고 물량 2배된다는 이야기를 하기가 어려워서 너무 힘들단다. 예전에는 CPM으로 계산하면 노출되는 지면 숫자가 정해지고, 클릭율이 어느정도 예상되면 CPM x CTR이 클릭숫자니까 그에 맞춰서 광고 예산을 설정하면 됐었는데, RTB가 들어오면서 CPM이 유저마다 다르게 적용되는 것도 당황스럽고, 리타게팅이 클릭율도 예상 안 되고 CPC도 일률적으로 적용되지 않는 것 같아서 광고주 쪽 영업가면 설명을 못하겠단다.

예의상 차마 못했던 말인데, 여기에만 조심스레 털어놓는다. 걸어다닐때는 1km에 15분정도 걸리니까 거리에 따라서 언제 도착할지 예상할 수 있는데, 자동차가 들어오고 난 다음부터 길이 막히고 신호에 걸려서 언제 도착할지 도무지 예측을 못하겠다고 불평하는 것 같더라. 아니면 필자가 광고 시장 경험이 일천하다보니 3.5인치 플로피 디스크가 20년전에는 널리 쓰이는 저장장치였음을 모르는 요즘의 “급식”같은 마인드여서 그런걸까?

이런 분들을 위해서 다음 글은 광고 데이터를 시뮬레이션하는 법을 소개해볼까 한다. 수학과 통계학이 좀 들어가지만, 요즘처럼 빅 데이터가 많고 컴퓨팅 파워가 발달한 시대에 모델만 한번 잘 짜놓으면 별다른 수고없이 쉽게 계산해낼 수 있을 것이다.

  1. 빅 데이터, 머신러닝, 데이터 사이언스에 대한 오해
  2. 데이터 시각화(Data visualization)
  3. 최적화 - CTR Optimizer
  4. 멀티 터치 어트리뷰션(Multi-Touch Attribution Model)
  5. 크로스 디바이스 매칭(Cross-Device Matching)
  6. RTB란?
  7. 시뮬레이션(Simulation)
  8. 머신러닝 1주차: Regression problems
  9. 머신러닝 2주차: Classification problems
  10. 사기 설치와 클릭(Fraud Installs & Clicks)

현재 저희 ab180과 함께 멋진 서비스를 만들어갈 개발자분들을 찾고 있습니다!

에이비일팔공은 데이터 회사로 사용자가 어디서 왔는지, 앱 안에서 어떤 행동을 하는지 수집하여 마케팅에 가장 손쉬운 형태로 제공하는 에어브릿지 애널리틱스는 서비스 반년 만에 230개 이상의 고객사를 확보하여 빠른 성장을 이뤄나가고 있습니다.

이와 동시에 사용자 행동 데이터를 기반으로 머신러닝과 딥러닝 기술을 통해 구매 가능성이 가장 높은 상품을 추천해주거나 재방문 가능성을 측정하는 모바일 광고 상품을 준비 중입니다.

사용자에게 가장 의미 있는 데이터를 제공하기 위한 우리의 연구는 오늘도 계속됩니다.


쉬운 앱마케팅을 위한 무료 그로스해킹 툴, 에어브릿지

에어브릿지는 앱마케팅 캠페인의 실시간 성과 측정부터 유입경로까지 분석가능한 원스톱 앱마케팅 솔루션입니다. 모바일 앱마케팅 분석, 지금 바로 무료로 시작하세요!