

기계 번역으로 제공되는 번역입니다. 제공된 번역과 원본 영어의 내용이 상충하는 경우에는 영어 버전이 우선합니다.

# 예제 2: A/B 트래픽 분할
<a name="monetization-functions-examples-ab"></a>

## 시나리오
<a name="monetization-functions-examples-ab-scenario"></a>

스트리밍 서비스는 CUSTOM\_OUTPUT 함수를 사용하여 A/B 테스트를 위해 두 광고 결정 서버(ADS) URLs 간에 광고 요청 트래픽을 무작위로 분할하려고 합니다. 광고 요청의 절반은 v1 엔드포인트로 이동하고 절반은 v2 엔드포인트로 이동합니다.

## 구성
<a name="monetization-functions-examples-ab-config"></a>

**A/B 트래픽 분할(CUSTOM\_OUTPUT):**

```
{
    "FunctionId": "abTestAdsUrl",
    "FunctionType": "CUSTOM_OUTPUT",
    "CustomOutputConfiguration": {
        "Runtime": "JSONATA",
        "Output": {
            "adsRequest.url": "{%$random() < 0.5 ? 'https://ads.example.com/v1/decision?session=' & session.id : 'https://ads.example.com/v2/decision?session=' & session.id%}"
        }
    }
}
```

이 구성의 경우:
+ `FunctionId` -이 함수의 고유한 이름입니다.
+ `FunctionType` - HTTP 호출 없이 표현식을 `CUSTOM_OUTPUT` 평가합니다.
+ `Output` - 두 ADS URL 중 하나를 임의로 선택하는 `adsRequest.url` 표현식에 매핑됩니다. URLs

## 함수 매핑
<a name="monetization-functions-examples-ab-mapping"></a>

```
{
    "FunctionMapping": {
        "PRE_ADS_REQUEST": "abTestAdsUrl"
    }
}
```

## 함수 실행 시 발생하는 일
<a name="monetization-functions-examples-ab-runtime"></a>

1. 재생 중에 광고가 중단됩니다.

1. MediaTailor는 `PRE_ADS_REQUEST` 수명 주기 후크를 실행하고를 실행합니다`abTestAdsUrl`.

1. `$random()` 함수는 0에서 1 사이의 값을 반환합니다. 값이 0.5 미만인 경우 함수는 ADS URL을 v1 엔드포인트로 설정합니다. 그렇지 않으면 URL을 v2 엔드포인트로 설정합니다.

`$random()` 함수는 각 광고 시간에 평가되므로 분할은 세션이 아닌 광고 요청당입니다.

**작은 정보**  
트래픽 분할 비율을 조정하려면 임계값을 변경합니다. 예를 들어는 트래픽의 80%를 첫 번째 URL로 보내고 20%를 두 번째 URL로 `$random() < 0.8` 보냅니다.

**참고**  
에 쓰면 현재 광고 시간에 대한 재생 구성에 구성된 기본 ADS URL이 `adsRequest.url` 재정의됩니다.

자세한 내용은 [사용자 지정\_출력](monetization-functions-types-custom-output.md), [PRE\_ADS\_REQUEST](monetization-functions-hooks-pre-ads.md), [JSONata 표현식 참조](monetization-functions-jsonata.md) 섹션을 참조하세요.