Adicionar código à sua aplicação - Amazon CloudWatch

Adicionar código à sua aplicação

Para trabalhar com o CloudWatch Evidently, você adiciona código à aplicação para atribuir uma variação a cada sessão do usuário e enviar métricas para o Evidently. Você utiliza a operação EvaluateFeature do CloudWatch Evidently para atribuir variações às sessões dos usuários e você utiliza a operação PutProjectEvents para enviar eventos ao Evidently a serem utilizados a fim de calcular métricas para seus lançamentos ou experimentos.

Ao criar variações ou métricas personalizadas, o console do CloudWatch Evidently fornece exemplos do código que você precisa adicionar.

Para um exemplo completo, consulte Tutorial: teste de A/B com a aplicação de exemplo do Evidently.

Utilizar a operação EvaluateFeature

Quando as variações de recursos são usadas em um lançamento ou experimento, a aplicação usa a operação EvaluateFeature para atribuir uma variação para cada sessão do usuário. A atribuição de uma variação a um usuário é um evaluation event (evento de avaliação). Quando você chama essa operação, você passa pelo seguinte processo:

  • Feature name (Nome do recurso): obrigatório. O Evidently processa a avaliação de acordo com as regras de avaliação de recursos do lançamento ou experimento e seleciona uma variação para a entidade.

  • entityId– Obrigatório. Representa um único usuário.

  • EvaluationContext– Opcional. Um objeto JSON representando informações adicionais sobre um usuário. Se você tiver criado segmentos, o Evidently usará esse valor para corresponder o usuário a um segmento do seu público durante as avaliações de recursos. Para ter mais informações, consulte Usar segmentos para delimitar o público.

    Veja a seguir um exemplo de um valor de evaluationContext que você pode enviar para o Evidently.

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

Avaliações com aderência

O CloudWatch Evidently utiliza avaliações com “aderência”. Uma única configuração de entityId, recurso, configuração de recurso e evaluationContext sempre obtém a mesma atribuição de variação. A única vez em que essa atribuição de variação muda é quando uma entidade é adicionada a uma substituição ou o tráfego do experimento é discado.

Uma configuração de recurso inclui o seguinte:

  • As variações de recursos

  • A configuração de variação (porcentagens atribuídas a cada variação) para um experimento em execução para esse recurso, se houver.

  • A configuração de variação para uma inicialização em execução para esse recurso, se houver. A configuração de variação inclui as substituições de segmento definidas, se houver.

Se a alocação de tráfego de um experimento for aumentada, qualquer entityId que tenha sido previamente atribuído a um grupo de tratamento experimental continuará recebendo o mesmo tratamento. Qualquer entityId que tenha sido previamente atribuído ao grupo de controle pode ser atribuído a um grupo de tratamento experimental de acordo com a configuração de variação especificada para o experimento.

Se a alocação de tráfego de um experimento for reduzida, um entityId pode passar de um grupo de tratamento para um grupo de controle, mas não entrará em um grupo de tratamento diferente.

Utilizar a operação PutProjectEvents

Para codificar uma métrica personalizada do Evidently, use a operação PutProjectEvents. Veja a seguir um exemplo de carga útil simples.

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

A entityIdKey pode ser apenas uma entityId, ou você pode renomeá-la para qualquer outra coisa, comouserId. No evento real, entityId pode ser um nome de usuário, um ID de sessão e assim por diante.

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

Para ter certeza de que os eventos estejam associados ao lançamento ou experimento correto, transmita o mesmo entityId ao chamar EvaluateFeature e PutProjectEvents. Certifique-se de chamar PutProjectEvents depois de EvaluateFeature. Caso contrário, os dados serão descartados e não serão usados pelo CloudWatch Evidently.

A operação PutProjectEvents não requer o nome do recurso como parâmetro de entrada. Portanto, você pode usar um evento único em vários experimentos. Por exemplo, suponhamos que você chame EvaluateFeature com entityId definido como userDetails.userId. Se houver dois ou mais experimentos em execução, será possível fazer com que um único evento da sessão desse usuário emita métricas para cada um desses experimentos. Para fazer isso, chame PutProjectEvents uma vez para cada experimento, usando o mesmo entityId.

Prazo

Depois que a aplicação chama EvaluateFeature, há um período de tempo de uma hora no qual os eventos de métricas de PutProjectEvents são atribuídos com base nessa avaliação. Se mais eventos ocorrerem após esse período de uma hora, não serão atribuídos.

Porém, se o mesmo entityId for usado para uma nova chamada de EvaluateFeature durante a janela de uma hora da chamada inicial, o último resultado de EvaluateFeature será usado no lugar, e o timer de uma hora será zerado. Isso pode acontecer apenas em certas circunstâncias, como quando o tráfego do experimento é chamado entre as duas atribuições, conforme explicado na seção anterior, Avaliações com aderência.

Para um exemplo completo, consulte Tutorial: teste de A/B com a aplicação de exemplo do Evidently.