On this page

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 Experimentを使用した評価プロキシのアーキテクチャ図

  • サポートされていないプラットフォームでローカル評価を有効にする: リモート評価APISDKを使用して、インフラストラクチャでローカル評価を実行できます。

  • ローカル評価のために露出イベントを自動的に追跡:プロキシは24時間にわたり、同一の露出イベントを重複してカウントしません。

  • 大規模なコホートターゲット設定によるローカル評価の強化: 対象となったコホートは1時間ごとに評価プロキシと同期され、プロキシは評価前にユーザーにコホートを追加します。

設定

評価プロキシは、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データセンターで評価プロキシを使用する場合は、serverUrlおよびcohortServerUrlを設定してEUデータセンターのエンドポイントにアクセスするようにします。

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です。

導入

評価プロキシはステートレスです。ロードバランサーの背後に複数のインスタンスをデプロイすることで、高可用性とスケーラビリティを実現できます。

たとえば、1つより多くのレプリカを持つKubernetesデプロイメントなどです。

Kubernetes

評価プロキシのHelmチャートを使用して、Kubernetesにプロキシサービスをインストールするか、サービスを手動でデプロイするために必要なファイルを生成します。リポジトリには、minikubeを使用してローカルでKubernetes上で評価プロキシを実行する例も含まれています。

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

Docker

Dockerイメージを直接実行することもできます。まず設定ファイルを作成し、そのファイルをボリュームとしてマウントし、コンテナ内の想定ディレクトリに配置した状態でDockerイメージを実行します。

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

Docker Composeの例

evaluation-proxy GitHubリポジトリには、docker composeを使用してローカルのRedisイメージと一緒にプロキシを実行する例も含まれています。

評価

Evaluation プロキシ は、リモートの Evaluation APISDK エンドポイントを公開し、クラスター内でローカル評価を実行します。これは、ローカル評価 SDK でサポートされていないプラットフォームや言語を有効にするときに便利です。 さらなる利点として、評価プロキシへのフェッチリクエストではユーザーのコホートをターゲットにすることができ、割り当てイベントはAmplitudeに自動的にトラッキングされます。

サービスにリクエストするには、ポート3546httpを使用する必要があります。

Kubernetes

Kubernetesのネームスペースmain内で実行されているEvaluation Proxyサービス(名前:evaluation-proxy)には、クラスター内から次のURLでアクセスできます:http://evaluation-proxy.main.svc.cluster.local:3546

ベストプラクティス

本番環境への導入

リソース要件

各ポッドは、1秒あたり約5,000リクエストの処理能力を備えるよう、4つのCPUコアと9GiBのRAMを搭載して構成されます。

  • 最小レプリカ: 高可用性を実現するために、少なくとも 2 つのレプリカをデプロイしてください。
  • 水平方向の拡張: ポッドを追加して容量を増やします。 例えば、4 つのポッドは毎秒約 20,000 件のリクエストを処理します。

大規模なコホート向けのJVMヒープ

ローカル評価を使用し、500 万ユーザーを超える大規模なコホートをダウンロードする場合は、最大 6 GiB の JVM ヒープサイズを設定してください。

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.

推奨スペック:12GiB以上のメモリ、cache.m7g.xlargeまたは同等のメモリ。

オプション2: Redis クラスター (大規模な場合に推奨)

1,000 万以上のユーザーや多数の大規模なコホートが存在する場合には、Redis クラスターを使用してください。

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

推奨スペック:2-3個のシャード、1個のシャードあたり1-2個のレプリカ、1ノードあたり12GiB以上。

クラスターベースのアプローチ

コホートのサイズや数が増えるほど、クラスターベースのアプローチが適しています。実際のデータでテストを行い、設定を最終決定してください。

パフォーマンス特性

レイテンシ

  • 通常:1-5ms。
  • バックグラウンドコホートリフレッシュ時: p95の遅延は最大50msに達することがあります。これは通常、コホートから多数のユーザーを追加または削除した場合や、新しい大規模なコホートをフラグに付加した場合に発生します。

コールドスタート

初期のスタートアップ時間は、対象とするコホートの人数と規模に応じてスケールします。

スタートアップ時にPodが再起動しないように、Readinessプローブに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

トラブルシューティング

容量計画

Was this helpful?