판매 측 광고 플랫폼은 일반적으로 광고 수익을 극대화할 수 있도록 광고 수요 소스를 다각화합니다. 광고 미디에이션을 사용하면 광고 네트워크 또는 서비스가 여러 광고 네트워크를 호출하여 지정된 광고 슬롯에 가장 적합한 광고를 결정합니다. 이 제안서에서는 Android의 Protected Audience API를 확장하여 개인 정보를 보호하는 방식으로 폭포식 구조 미디에이션 기능을 구현하는 방법을 소개합니다. 오늘날 광고 네트워크에서는 앱 개발자가 여러 광고 판매자의 광고 입찰에서 미디에이션할 수 있는 다양한 방법을 제공합니다.
- 폭포식 구조 미디에이션: 앱 개발자는 광고 네트워크를 순서가 지정된 목록으로 정의합니다. 대개 이 목록은 지정된 네트워크의 이전 eCPM을 기준으로 순서가 지정됩니다. 이 목록을 미디에이션 체인이라고 합니다. 앱 개발자의 미디에이션 플랫폼은 이 목록을 바탕으로 광고 네트워크를 나열된 순서대로 호출하여 관련 광고 수요 소스를 확인합니다.
- 프로그래매틱 미디에이션: 광고 기회 입찰에 참가하는 여러 광고 네트워크를 앱 개발자가 구성합니다. 이러한 네트워크에서는 기회의 가치 평가 방식에 따라 실시간으로 입찰할 수 있습니다.
- 하이브리드 미디에이션: 폭포식 구조 미디에이션과 프로그래매틱 미디에이션 기법이 조합된 형태입니다.
폭포식 구조 미디에이션
폭포식 구조 미디에이션에서 광고 기회가 발생하면 광고 SDK가 백엔드 서버에 요청을 보냅니다. 서버는 낙찰된 광고 소재로 요청에 응답하는 대신, 이전 eCPM에 따라 정렬된 광고 네트워크 목록을 포함하는 미디에이션 체인으로 응답합니다.
그림 1. 폭포식 구조 미디에이션 모델
기존 폭포식 구조 모델에서는 광고 SDK가 미디에이션 체인에 지정된 순서대로 각 광고 네트워크(또는 자체 입찰 SDK)를 호출합니다. 광고 네트워크가 광고 요청을 충족할 수 있는 경우 광고 네트워크는 그 광고를 렌더링합니다. 그러지 않으면 체인의 다음 네트워크로 요청이 전송됩니다. 이 프로세스는 요청이 처리되거나 체인이 소진될 때까지 반복됩니다.
폭포식 구조 미디에이션은 보통 퍼스트 파티 광고 수요 소스의 eCPM 재평가에 따라 정기적으로 미디에이션 체인의 순서를 다시 지정하는 방법으로 최적화합니다.
프로그래매틱 미디에이션
프로그래매틱 미디에이션('헤더 입찰'이라고도 함)은 광고 요청을 처리할 기회를 얻을 광고 네트워크를 결정할 때 이전 eCPM을 사용하는 방식을 대체합니다. 프로그래매틱 미디에이션에서는 제공업체가 실시간 입찰가를 대신 사용하여 낙찰된 광고를 찾습니다.
그림 2: 프로그래매틱 미디에이션 모델
하이브리드 미디에이션
일부 프로그래매틱 미디에이션 솔루션은 폭포식 구조와 입찰의 하이브리드 모드에서 광고 네트워크를 결합하여, 광고를 더욱 세부적으로 관리하면서도 실시간 eCPM을 사용하여 참여 광고 네트워크의 수익을 극대화하는 이점을 얻습니다.
하이브리드 미디에이션 모델에서는 광고 네트워크와 미디에이션 제공업체가 폭포식 구조 요소와 실시간 입찰 요소를 통합하여 앱 개발자의 유연성을 높일 수 있습니다. 하이브리드 모델을 사용하면 앱 개발자는 이전 eCPM을 기반으로 광고 네트워크를 구성하여 이들에게 광고를 게재할 기회를 먼저 주고, 그다음에 참여 네트워크에서 실시간 입찰을 실행하여 광고 기회를 채울 수 있습니다.
Protected Audience 폭포식 구조 미디에이션
Android의 Protected Audience API는 여러 입찰(미디에이션 그래프의 개별 노드와 관련된 각각의 입찰)을 진행해 폭포식 구조 미디에이션을 지원합니다. 입찰에서 낙찰자가 없는 경우 체인이 소진될 때까지 그다음 네트워크 입찰 노드가 호출됩니다. 폭포식 구조 미디에이션 프로세스는 다음과 같습니다.
- 미디에이션 SDK가 문맥 광고 서버 엔드포인트에서 미디에이션 체인을 가져옵니다. 이 엔드포인트는 문맥 광고 또는 미디에이션 체인을 반환할 수 있습니다.
- 광고 서버 엔드포인트가 미디에이션 체인을 반환하면 미디에이션 SDK가 체인의 각 항목을 순서대로 반복하고 참여 광고 네트워크의 SDK를 호출하여 문맥 광고 및 리마케팅 광고 선택을 실행합니다. 체인의 각 항목은 특정 노출수, 클릭수 또는 광고 시간에 따른 특정 가격으로 광고 공간을 구매하고자 하는 광고 네트워크의 요청을 나타냅니다.
- 체인의 광고 항목 중에서 낙찰된 광고를 선택하는 항목이 없는 경우, 미디에이션 SDK는 리마케팅 광고와 문맥 광고를 모두 고려하는 Protected Audience 광고 선택을 실행하여 자체 광고 네트워크에서 광고를 표시할 수도 있습니다.
그림 3. Protected Audience API를 사용한 폭포식 구조 미디에이션
위 다이어그램은 미디에이션 SDK가 구현할 수 있는 폭포식 구조 미디에이션 알고리즘의 예를 보여주지만, 여기에는 퍼스트 파티 광고 네트워크의 최적화 기능이 없습니다. Protected Audience API는 광고 선택 워크플로의 체인을 허용하고 낙찰된 노출을 보고함으로써 퍼스트 파티 광고 네트워크 최적화를 지원합니다.
AdSelection Outcome
selectAds()
의 반환 유형은 AdSelectionOutcome
객체입니다.
AdSelectionOutcome
에는 낙찰된 광고의 렌더링 URI와 함께, 낙찰된 광고 항목의 광고 소재를 식별하는 불투명 정수 AdSelectionId
가 포함되어 있습니다.
AdSelectionOutcome {
Uri renderUri;
Long AdSelectionId;
}
AdSelectionId
는 AdSelectionOutcome
을 가리키는 포인터 역할을 합니다. 현재 AdSelectionId
는 reportResult()
메서드에 ReportImpressionInput
매개변수로 전달되어, reportWin()
및 reportResult()
메서드가 호출되는 정확한 광고를 식별하는 데 도움이 됩니다.
체인 광고 선택 제안서
이전 광고 선택의 실행 결과를 고려하여 AdSelectionOutcome
객체를 통해 낙찰된 광고를 선택하도록 selectAds()
을 확장하는 것이 좋습니다.
이를 통해 광고 네트워크는 여러 광고 네트워크의 문맥 광고와 리마케팅 광고를 고려하는 미디에이션을 실행할 수 있습니다.
ChainedAdSelections
는 미디에이션 체인에서 selectAds()
메서드의 이전 호출에서 광고 선택 결과 목록을 포함할 수 있는 AdSelectionConfig.
ChainedAdSelections
에 선택적 매개변수로 추가됩니다. 다음 예에서 SDK는 기기의 SDK A와 SDK B의 결과를 사용하여 AdSelection
을 실행합니다. SDK A는 물론 B는 연결된 광고 선택을 실행하는 SDK에 관한 각각의 selectAds()
호출에서 명시적으로 AdSelectionOutcome
을 공유합니다.
AdSelectionConfig myAdSelectionConfig = new AdSelectionConfig {
Seller = "example-ssp1.com",
DecisionLogicURL = Uri.parse("https://..."),
CustomAudienceBuyerList = Arrays.asList("example-dsp1.com","example-dsp2.com"),
AdSelectionSignals = "{"min_price": 10,"auction_attempts": 3}"
SellerSignals = "{"seller_type": "news", "content_category": "sports","mature_ads_accepted" :"false"}"
PerBuyerSignals = "{"example-dsp1.com": {"key1" : "value1"},
"example-dsp2.com": {"key1" : "value1", "key2" : "value2"}"
ChainedAdSelections = {network_a_selection_outcome, network_b_selection_outcome}
};
// Invoke ad services API to initiate ad selection workflow.
AdSelectionOutcome winningAd = selectAds(myAdSelectionConfig);
그림 4. selectAds()
를 사용한 광고 선택 체이닝
이 selectAds()
호출의 반환 값은 또 다른 AdSelectionOutcome
객체입니다.
- 선택한 광고가 없는 경우 값
null
이 반환됩니다. ChainedAdSelections
에서 참조된 광고가 낙찰된 광고가 아닌 경우 새AdSelectionOutcome
객체가 반환됩니다.- 선택된 광고인 경우
AdSelection
에 전달된 결과 중 하나가 반환됩니다.
낙찰된 노출 보고
연결된 광고 선택의 낙찰자가 없는 경우 낙찰된 노출은 보고되지 않습니다.
AdSelectionConfig
에 전달된 AdSelectionOutcome
객체 중 하나가 선택되면 연결된 광고 선택을 실행하는 SDK가 낙찰된 광고 SDK와 결과에 관해 통신하게 됩니다. 그러면 낙찰된 광고 SDK가 자체 AdSelection
을 실행한 후 낙찰된 노출 보고서를 호출할 수 있습니다. 이를 통해 낙찰된 광고의 SDK 결정 로직 자바스크립트가 결과 보고에 사용됩니다. 이 시나리오에서는 연결된 광고 선택을 실행하는 SDK가 어떤 광고 SDK가 낙찰된 노출을 갖고 있는지 보고할 수 있습니다.
아무런 AdSelectionOutcome
결과도 선택되지 않은 경우 연결된 광고 선택을 실행하는 SDK가 낙찰된 노출 보고서를 호출합니다.
폭포식 구조 미디에이션 실행
이 페이지의 앞부분에서 설명한 것처럼, AdSelectionOutcome
의 인스턴스를 연결하는
기능을 통해 미디에이션 SDK는 폭포식 구조 미디에이션을 실행하면서 퍼스트 파티 광고 네트워크에 최적화를 허용할 수 있습니다. 이 프로세스는 다음과 같이 요약됩니다.
- 미디에이션 SDK가 문맥 광고 요청을 사용하여 미디에이션 서버에서 미디에이션 체인을 가져옵니다.
- 미디에이션 SDK가 리마케팅 광고와 문맥 광고를 둘 다 고려한 광고 선택을 실행합니다.
미디에이션 SDK가 퍼스트 파티 광고 선택의 결과와 함께 미디에이션 체인의 첫 번째 대상 항목의 이전 eCPM을 고려한 입찰을 실행합니다.
광고가 선택되면 낙찰된 광고가 결정되고 절차가 종료됩니다.
광고가 선택되지 않으면, 미디에이션 SDK가 미디에이션 체인에서 첫 번째 대상 항목을 선택하고 그에 대응하는 SDK를 호출하여 문맥 광고와 리마케팅 광고 선택을 실행합니다.
광고가 선택되면 광고가 렌더링되고 프로세스가 종료됩니다.
광고가 선택되지 않으면 체인의 그다음 항목이 고려되고 3단계가 실행됩니다.
체인에 더 이상 항목이 없으면, 미디에이션 SDK는 2단계와 마찬가지로 리마케팅 광고와 문맥 광고를 모두 고려한 Protected Audience 광고 선택을 실행하여 퍼스트 파티 광고를 표시합니다.
그림 5. Protected Audience API 폭포식 구조 미디에이션 프로세스
권장사항
퍼스트 파티 최적화 전에 문맥 입찰 실행
리마케팅 수요는 높은 입찰가를 생성하여 미디에이션 체인에서 낙찰 성과를 낳을 수 있습니다. 잘림은 리마케팅 잠재고객 목록을 미세 조정하여 퍼스트 파티 최적화를 실현하는 데 자주 사용되는 프로세스입니다.
Protected Audience API 리마케팅 수요는 Protected Audience 입찰을 통해 클라이언트 측에서만 사용할 수 있습니다. 따라서 서버 측에서 퍼스트 파티 최적화를 실행하기가 어려울 수 있습니다. 퍼스트 파티 최적화 문제를 해결하려면 먼저 문맥 입찰을 실행한 다음, 이 페이지의 앞부분에서 설명한 것처럼 낙찰된 광고 결과에 따라 퍼스트 파티 최적화를 실행합니다.
기기 내 미디에이션 체인을 작게 유지
최적의 성과를 얻으려면 기기 내 미디에이션 체인을 작게 유지해야 합니다. 기기 내 실행의 계산 비용은 미디에이션 체인의 일부로 실행되는 입찰 수에 선형일 수 있습니다. 즉, 노드가 많을수록 계산 주기 요구사항이 늘어나고 지연 시간도 증가합니다. 기기 내 미디에이션 실행에 노드를 전달할 때 지연 시간이 수익에 미치는 영향을 고려하세요.
추가 고려사항
Protected Audience 미디에이션에 관한 이 제안서는 현재 진행 중인 작업이므로 의견을 보내주세요.
Protected Audience API는 여러 광고 슬롯의 미디에이션을 위한 포괄적 솔루션은 제공하지 않습니다. 각 광고 슬롯은 독립적으로 처리되어야 합니다.
Protected Audience Mediation API는 폭포식 구조 미디에이션과 제한된 프로그래매틱 미디에이션을 지원합니다. 추가적 프로그래매틱 미디에이션의 사용 사례 지원에 관한 자세한 내용은 향후에 공유할 예정입니다.
문맥 광고를 가져온 후 Protected Audience 광고 선택이 실행되므로 Protected Audience API를 호출할 경우 광고 요청의 엔드 투 엔드 지연 시간에 영향을 줄 수 있습니다.
추천 서비스
- 참고: JavaScript가 사용 중지되어 있으면 링크 텍스트가 표시됩니다.
- Android 개발자 가이드의 Protected Audience API
- Protected Audience API를 사용한 맞춤 잠재고객 타겟팅 지원
- Protected Audience: 통합 가이드