이 페이지에서

For AI agents: a documentation index is available at /docs/llms.txt. Append .md to any page URL for markdown, or send Accept: text/markdown.

실험 평가 프록시

평가 프록시는 귀하의 인프라 내에서 실행되는 로컬 평가를 활성화, 개선 및 최적화하기 위한 서비스입니다.

Amplitude 실험을 이용한 평가 프록시의 아키텍처 다이어그램

  • 지원되지 않는 플랫폼에서 로컬 평가 활성화: 원격 평가 API 및 SDK를 사용하여 인프라에서 로컬 평가를 실행하십시오.

  • 로컬 평가를 위해 노출 이벤트를 자동으로 추적: 프록시는 동일한 노출 이벤트를 24시간 동안 중복 제거합니다.

  • 대규모 코호트 타겟팅을 통해 로컬 평가를 개선: 타겟팅된 코호트는 매시간 평가 프록시와 동기화되며, 프록시는 평가 전에 사용자에게 코호트를 추가합니다.

구성

평가 프록시는 yaml 파일(권장되며 더 많은 구성 옵션이 있음)을 사용하거나 환경 변수를 사용하여 구성됩니다.

구성 yaml 파일의 기본 위치는 /etc/evaluation-proxy-config.yaml입니다. PROXY_CONFIG_FILE_PATH환경 변수를 사용하여 파일 위치를 구성할 수도 있습니다.

권장 구성

구성의 필드를 사용자의 계정 인프라에 맞는 값으로 바꿉니다.

yaml
projects:
  - apiKey: "YOUR API KEY"
    secretKey: "YOUR SECRET KEY"
    managementKey: "YOUR MANAGEMENT API KEY"
configuration:
  redis:
    uri: "YOUR REDIS URI" # e.g. "redis://localhost:6379"

환경 구성은 단일 프로젝트만 지원합니다. 프록시는 구성 파일을 찾을 수 없는 경우에만 환경 변수 구성을 사용합니다.

  • AMPLITUDE_API_KEY
    • 설명: 프로젝트의 API 키입니다.
  • AMPLITUDE_SECRET_KEY
  • AMPLITUDE_EXPERIMENT_MANAGEMENT_API_KEY
    • 설명: 실험 API 관리 키입니다. 구성된 API 및 암호 키와 동일한 프로젝트에 대해 생성되어야 합니다. 프로젝트에 사용된 배포에 자동으로 액세스하고 업데이트하는 데 사용됩니다.
  • AMPLITUDE_REDIS_URI
    • 설명: 선택 사항입니다. Redis에 연결하기 위한 전체 URI입니다. 프로토콜, 호스트, 포트와 선택 사항인 사용자 이름, 암호, 경로(예: redis://localhost:6379)를 포함합니다.
  • AMPLITUDE_REDIS_PREFIX
    • 설명: 선택 사항입니다. 연결할 접두사
  • AMPLITUDE_REDIS_USE_CLUSTER
    • 설명: 선택 사항입니다. AMPLITUDE_REDIS_URI가 클러스터 URL인 경우 이를 true로 전달하십시오. 기본값은 false입니다.
  • AMPLITUDE_REDIS_READ_FROM
    • 설명: 선택 사항입니다. Redis 클러스터에 대한 라우팅 전략을 읽습니다. 옵션: REPLICA_PREFERRED(기본값, 복제본 선호) 또는 ANY(클러스터의 모든 노드에서 읽기).
  • AMPLITUDE_SERVER_URL
    • 설명: 선택 사항입니다. 플래그를 가져올 서버 URL(프로토콜과 호스트를 포함)입니다.
  • AMPLITUDE_COHORT_SERVER_URL
    • 설명: 선택 사항입니다. 코호트를 다운로드할 서버 URL(프로토콜과 호스트를 포함)입니다.

프로젝트

다음 필드를 포함하는 객체의 필수 배열입니다. 이 필드는 모두 필수입니다.

  • id
    • 설명: 프로젝트의 ID입니다. 프로젝트 설정에서 찾을 수 있습니다.
  • apiKey
    • 설명: 프로젝트의 API 키입니다.
  • secretKey
  • managementKey
    • 설명: 실험 API 관리 키입니다. 구성된 API 및 암호 키와 동일한 프로젝트에 대해 생성되어야 합니다. 프로젝트에 사용된 배포에 자동으로 액세스하고 업데이트하는 데 사용됩니다.

구성

추가 구성의 선택적 객체입니다.

  • redis
    • 설명: 선택 사항(권장됨). redis를 참조하십시오. Redis를 영구 스토리지로 사용하도록 프록시를 구성합니다.
  • flagSyncIntervalMillis
    • 설명: 선택 사항입니다. 플래그 구성을 업데이트하기 위한 폴링 간격(기본값 10000).
  • maxCohortSize
    • 설명: 선택 사항입니다. 프록시가 다운로드할 수 있는 대상 코호트의 최대 크기(기본값 2147483647).
  • serverUrl
    • 설명: 선택 사항입니다. 플래그를 가져올 서버 URL(프로토콜과 호스트를 포함함). (기본값https://api.lab.amplitude.com)
  • cohortServerUrl
    • 설명: 선택 사항입니다. 코호트를 다운로드할 서버 URL(프로토콜과 호스트를 포함함)(기본값https://cohort.lab.amplitude.com)

EU 데이터 레지던시

EU 데이터 센터에서 평가 프록시를 사용하려면 EU 데이터 센터 엔드포인트에 도달하도록 serverUrl 및 cohortServerUrl 구성을 설정하십시오.

yaml
configuration:
  # Other configurations...
  serverUrl: "https://api.lab.eu.amplitude.com"
  cohortServerUrl: "https://cohort.lab.eu.amplitude.com"

Redis

Redis를 영구 스토리지로 사용하도록 평가 프록시를 구성합니다. 평가 프록시를 효율적으로 실행할 수 있도록 활성화하는 것을 적극 권장합니다.

  • uri
    • 설명: 필수입니다. Redis에 연결할 때 사용할 전체 URI입니다. 프로토콜, 호스트, 포트 및 선택적 사용자 이름, 암호 및 경로를 포함하십시오.
  • readOnlyUri
    • 설명: 선택 사항입니다. Redis 읽기 복제본에 대한 고확장성 대용량 읽기를 위해 읽기 전용 복제본에 연결하기 위한 선택적 URI입니다.
  • useCluster
    • 설명: 선택 사항입니다. uri가 클러스터 URL인 경우 이 값을 true로 설정하십시오. 기본값은 false입니다.
  • readFrom
    • 설명: 선택 사항입니다. 클러스터 모드에만 해당하는 읽기 라우팅 전략: REPLICA_PREFERRED (기본값, 복제본 선호) 또는 ANY (클러스터의 임의 노드에서 읽기).
  • prefix
    • 설명: 선택 사항입니다. 평가 프록시에서 저장된 모든 키에 대한 접두어입니다. 기본값은 amplitude입니다.

배포

평가 프록시는 상태가 없습니다. 고가용성과 확장성을 위해 로드 밸런서 뒤에 여러 인스턴스를 배포하십시오.

예를 들어 하나 이상의 복제본을 사용하는 쿠버네티스 배포가 있습니다.

쿠버네티스

평가 프록시 Helm 차트를 사용하여 쿠버네티스에 프록시 서비스를 설치하거나 서비스를 수동으로 배포하는 데 필요한 파일을 생성하십시오. 이 저장소에는 minikube를 사용하여 쿠버네티스에서 평가 프록시를 로컬로 실행하는 예도 포함되어 있습니다.

Helm

Helm 저장소 추가
bash
helm repo add \
    evaluation-proxy-helm https://amplitude.github.io/evaluation-proxy-helm
구성 values.yaml

차트 값을 구성합니다. Helm 차트를 구성하고 설치하는 데 권장되는 방법은 values.yaml 구성 파일을 사용하는 것입니다.

차트의 evaluationProxy 값 내용은 평가 프록시의 구성 파일 필드와 정확히 일치합니다.

yaml
evaluationProxy:
  # At least one project is required.
  projects:
    - apiKey: "YOUR API KEY"
      secretKey: "YOUR SECRET KEY"
      managementKey: "YOUR MANAGEMENT API KEY"
  configuration: {}
#    redis:
#      uri: "redis://redis-master.default.svc.cluster.local:6379"
Helm 차트 설치
bash
helm install -f values.yaml \
    evaluation-proxy evaluation-proxy-helm/evaluation-proxy

도커

도커 이미지를 직접 실행할 수도 있습니다. 먼저 구성 파일을 생성한 다음 해당 파일을 컨테이너의 예상 디렉토리에 볼륨으로 마운트하는 도커 이미지를 실행하십시오.

bash
docker run \
    -v CONFIG_FILE_PATH:/etc/evaluation-proxy-config.yaml \
    amplitudeinc/evaluation-proxy

Docker compose 예제

evaluation-proxy GitHub 저장소에는 docker compose를 사용하여 로컬 Redis 이미지와 함께 프록시를 실행하는 예제도 포함되어 있습니다.

평가

평가 프록시는 원격 평가 API 및 SDK 엔드포인트를 노출시켜 클러스터 첫 사용 후 로컬 평가를 실행합니다. 이 기능은 로컬 평가 SDK에서 지원하지 않는 플랫폼과 언어를 활성화하는 데 유용합니다. 추가적인 이점으로, 평가 프록시에 대한 가져오기 요청은 사용자 코호트를 대상으로 할 수 있으며 할당 이벤트가 Amplitude로 자동 추적됩니다.

포트 3546의 http를 사용하여 서비스에 요청을 전송해야 합니다.

쿠버네티스

쿠버네티스 네임스페이스 main 내에서 실행되는 쿠버네티스 배포 평가 프록시 서비스(이름: evaluation-proxy)는 클러스터 내부의 http://evaluation-proxy.main.svc.cluster.local:3546
에서 액세스할 수 있습니다.

모범 사례

프로덕션 배포

자원 요구 사항

각 파드는 4개의 CPU 코어와 9GiB RAM으로 구성되어 초당 약 5,000개의 요청을 처리할 수 있습니다.

  • 최소 복제본: 고가용성을 위해 최소 2개의 복제본을 배포하십시오.
  • 수평 확장: 파드를 추가하여 용량을 늘립니다. 예를 들어 4개의 파드는 초당 약 20,000개의 요청을 처리합니다.

대규모 코호트를 위한 JVM 힙

로컬 평가를 사용하고 500만 명 이상의 사용자가 있는 대규모 코호트를 다운로드하는 경우 최대 JVM 힙 크기를 6GiB로 설정하십시오.

yaml
- name: JAVA_TOOL_OPTIONS
  value: "-Xms128m -Xmx6144m"

Redis 구성

옵션 1: 복제본을 사용하는 독립형

소규모 배포에 사용하십시오.

yaml
configuration:
  redis:
    uri: "rediss://primary:6379"
    readOnlyUri: "rediss://replica:6379"  # Optional, for high-volume read scaling.

권장 사양: 12 GiB 이상의 메모리, cache.m7g.xlarge 또는 동급.

옵션 2: Redis 클러스터(대규모 환경에 권장됨)

1천만 명 이상의 사용자 또는 많은 대규모 코호트가 있는 경우 Redis 클러스터를 사용하십시오.

yaml
configuration:
  redis:
    uri: "rediss://cluster:6379"
    useCluster: true

권장 사양: 샤드 2~3개, 샤드당 1~2개의 복제본, 노드당 12GiB 이상.

클러스터 기반 접근법

코호트 규모와 개수가 증가함에 따라 클러스터 기반 접근법을 권장합니다. 데이터를 사용하여 테스트를 거쳐 구성을 완료하십시오.

성능 특성

지연 시간

  • 일반: 1-5ms.
  • 백그라운드 코호트 새로 고침 중: p95 지연 시간은 최대 50ms에 달할 수 있습니다. 이 문제는 일반적으로 코호트에서 상당수의 사용자를 추가 또는 제거하거나 새 대규모 코호트를 플래그에 연결할 때 발생합니다.

콜드 스타트

초기 스타트업 시간은 대상 코호트의 수와 규모에 따라 달라집니다.

시작 시 파드 재시작을 방지하려면 준비 상태 프로브를 initialDelaySeconds: 600로 설정하십시오.

모니터링 및 경고

프록시는 http://proxy:9090/metrics에 메트릭을 노출합니다.

다음과 같은 중요한 경고를 구성합니다.

promql
# Error rate > 1%
rate(http_requests_total{status=~"5.."}[5m]) > 0.01
# P95 latency > 100ms sustained (ignore during cohort refresh spikes)
histogram_quantile(0.95, rate(http_request_duration_seconds_bucket[5m])) > 0.1
# Memory > 85%
container_memory_usage_bytes / container_spec_memory_limit_bytes > 0.85
# Redis errors
rate(redis_errors_total[5m]) > 0

문제 해결

용량 계획

이 내용이 도움이 되었나요?