애플리케이션에 코드 추가 - Amazon CloudWatch

애플리케이션에 코드 추가

중요

지원 종료 알림: 2025년 10월 16일, AWS에서는 CloudWatch Evidently에 대한 지원을 중단할 예정입니다. 2025년 10월 16일 이후에는 Evidently 콘솔 또는 Evidently 리소스에 더 이상 액세스할 수 없습니다.

CloudWatch Evidently로 작업하려면 애플리케이션에 코드를 추가해 각 사용자 세션에 변형을 할당하고 지표를 Evidently로 보냅니다. CloudWatch Evidently EvaluateFeature 작업을 사용하여 사용자 세션에 변형을 할당하고, PutProjectEvents 작업을 사용하여 시작 또는 실험에 대한 지표를 계산하는 데 사용할 이벤트를 Evidently로 전송합니다.

변형 또는 사용자 지정 지표를 생성할 때 CloudWatch Evidently 콘솔에서 추가해야 하는 코드의 샘플을 제공합니다.

종합 예제를 보려면 자습서: Evidently 샘플 애플리케이션으로 A/B 테스트 섹션을 참조하세요.

EvaluateFeature 사용

시작 또는 실험에서 기능 변형을 사용하는 경우 애플리케이션은 각 사용자 세션에 변형을 할당하는 EvaluateFeature 작업을 사용합니다. 사용자에게 변형을 할당하는 것은 평가 이벤트입니다. 이 작업을 호출하면 다음을 전달합니다.

  • 기능 이름(필수). Evidently는 출시 또는 실험의 기능 평가 규칙에 따라 평가를 처리하고 엔터티에 대한 변형을 선택합니다.

  • entityId(필수). 고유 사용자를 나타냅니다.

  • evaluationContext(선택 사항). 사용자에 대한 추가 정보를 나타내는 JSON 객체입니다. 세그먼트를 만든 경우, Evidently는 특성 평가 중에 이 값을 사용하여 사용자를 대상의 세그먼트에 매칭합니다. 자세한 내용은 세그먼트를 사용하여 대상에 집중 단원을 참조하십시오.

    다음은 Evidently로 전송할 수 있는 evaluationContext 값의 예입니다.

    { "Browser": "Chrome", "Location": { "Country": "United States", "Zipcode": 98007 } }

고정 평가

CloudWatch Evidently는 “고정” 평가를 사용합니다. entityId, 기능, 기능 구성evaluationContext의 단일 구성은 항상 동일한 변형 할당을 수신합니다. 엔터티가 재정의에 추가되거나 실험 트래픽이 전화 접속 연결이 될 때만 이 변형 할당이 변경됩니다.

기능 구성에는 다음이 포함되어 있습니다.

  • 기능 변형

  • 이 기능(있는 경우)에 대해 현재 실행 중인 실험에 대한 변형 구성(각 변형에 할당된 백분율)입니다.

  • 이 기능(있는 경우)에 대해 현재 실행 중인 실행에 대한 변형 구성입니다. 변형 구성에는 정의된 세그먼트 재정의(있는 경우)가 포함됩니다.

실험의 트래픽 할당을 늘린 경우 이전에 실험 처리 그룹에 할당된 entityId은(는) 계속해서 동일한 처리를 받습니다. 실험에 지정된 변형 구성에 따라 이전에 대조군에 할당되었던 entityId를 실험 처리 그룹에 할당할 수 있습니다.

실험의 트래픽 할당이 줄어들면 entityId이(가) 처리 그룹에서 대조군으로 이동할 수 있지만 다른 처리 그룹에는 들어가지 않습니다.

PutProjectEvents 사용

Evidently에 대한 사용자 지정 지표를 코딩하려면 PutProjectEvents 작업을 사용합니다. 다음은 간단한 페이로드 예제입니다.

{ "events": [ { "timestamp": {{$timestamp}}, "type": "aws.evidently.custom", "data": "{\"details\": {\"pageLoadTime\": 800.0}, \"userDetails\": {\"userId\": \"test-user\"}}" } ] }

entityIdKeyentityId거나, userId 같이 다른 이름으로 바꿀 수 있습니다. 실제 이벤트에서 entityId는 사용자 이름, 세션 ID 등이 될 수 있습니다.

"metricDefinition":{ "name": "noFilter", "entityIdKey": "userDetails.userId", //should be consistent with jsonValue in events "data" fields "valueKey": "details.pageLoadTime" },

이벤트가 올바른 시작 또는 실험과 연결되도록 하려면 EvaluateFeaturePutProjectEvents를 모두 호출할 때 동일한 entityId를 전달해야 합니다. EvaluateFeature 호출 후에 PutProjectEvents를 호출해야 합니다. 그렇지 않으면 데이터가 삭제되고 CloudWatch Evidently에서 사용되지 않습니다.

PutProjectEvents 작업에는 기능 이름이 입력 파라미터로 필요하지 않습니다. 이렇게 하면 여러 실험에서 단일 이벤트를 사용할 수 있습니다. 예를 들어, entityIduserDetails.userId로 설정하여 EvaluateFeature를 호출한다고 가정합니다. 두 개 이상의 실험이 실행 중인 경우 해당 사용자의 세션에서 단일 이벤트가 각 실험에 대한 지표를 방출하도록 할 수 있습니다. 이를 위해 동일한 entityId를 사용하여 각 실험에 대해 PutProjectEvents를 한 번 호출합니다.

Timing

애플리케이션이 EvaluateFeature를 호출한 후 PutProjectEvents의 지표 이벤트가 해당 평가를 기준으로 귀속되는 1시간의 기간이 있습니다. 1시간 후에 이벤트가 더 이상 발생하는 경우 해당 이벤트는 귀속되지 않습니다.

그러나 초기 호출의 1시간 동안 새 EvaluateFeature 호출에 동일한 entityId가 사용되는 경우 이제 이후 EvaluateFeature 결과가 대신 사용되며 1시간 타이머가 다시 시작됩니다. 이는 이전 고정 평가(Sticky evaluations) 섹션에 설명된 대로 실험 트래픽이 두 할당 간에 전화 접속 연결이 되는 경우와 같은 특정 상황에서만 발생할 수 있습니다.

종합 예제를 보려면 자습서: Evidently 샘플 애플리케이션으로 A/B 테스트 섹션을 참조하세요.