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.
実験評価プロキシ
評価プロキシは、お客様のインフラストラクチャ内で実行されるローカル評価を有効化、拡張、最適化するためのサービスです。
サポートされていないプラットフォームでローカル評価を有効にする: リモート評価APIとSDKを使用して、インフラストラクチャでローカル評価を実行できます。
ローカル評価のために露出イベントを自動的に追跡:プロキシは24時間にわたり、同一の露出イベントを重複してカウントしません。
大規模なコホートターゲット設定によるローカル評価の強化: 対象となったコホートは1時間ごとに評価プロキシと同期され、プロキシは評価前にユーザーにコホートを追加します。
設定
評価プロキシは、yamlファイルを使用して設定するか(推奨、設定オプションが豊富)、環境変数を使用して設定します。
設定yamlファイルのデフォルトの場所は/etc/evaluation-proxy-config.yamlです。PROXY_CONFIG_FILE_PATH環境変数を使用することで、ファイルの場所を設定することもできます。
projects(必須)configuration(オプション)。
推奨される構成
設定内のフィールドを、お客様のアカウント/インフラストラクチャに固有の値に置き換えてください。
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)を含めます。
- 説明: オプションです。 Redis に接続するための URI 全体です。 プロトコル、ホスト、ポート、およびオプションでユーザー名、パスワード、パス(例:
AMPLITUDE_REDIS_PREFIX- 説明: オプションです。 接続するプレフィクス
AMPLITUDE_REDIS_USE_CLUSTER- 説明: オプションです。
AMPLITUDE_REDIS_URIがクラスターURLの場合は、これをtrueとして渡します。デフォルト設定はfalseです。
- 説明: オプションです。
AMPLITUDE_REDIS_READ_FROM- 説明: オプションです。 Redis クラスターのルーティング戦略を読みます。 オプション:
REPLICA_PREFERRED(デフォルト、レプリカを優先)またはANY(クラスタ内の任意のノードから読み取り)。
- 説明: オプションです。 Redis クラスターのルーティング戦略を読みます。 オプション:
AMPLITUDE_SERVER_URL- 説明: オプションです。 フラグを取得するためのサーバ URL(プロトコルとホストを含む)。
AMPLITUDE_COHORT_SERVER_URL- 説明: オプションです。 コホートをダウンロードするためのサーバ URL(プロトコルとホストを含む)。
| フィールド | タイプ | 概要 |
|---|---|---|
projects | 配列 | 必須です。 projectsを参照してください。 |
configuration | オブジェクト | オプションです。configurationを参照してください |
プロジェクト
以下のフィールドを含むオブジェクトの必須配列です。これらのフィールドはすべて必須です。
id- 説明: プロジェクトの ID。 プロジェクト設定で見つかります。
apiKey- 説明:プロジェクトのAPIキーです。
secretKey- 説明:プロジェクトのシークレットキーです。
managementKey- 説明:実験管理APIキーです。設定済みの API と秘密鍵と同じプロジェクト用に作成する必要があります。 プロジェクトに使用されるデプロイメントに自動的にアクセスおよび更新するために使用されます。
設定
追加設定のオプションオブジェクトです。
redis- 説明:オプション(推奨)。
redisを参照してください。Redisを永続ストレージとして使用するようにプロキシを設定します。
- 説明:オプション(推奨)。
flagSyncIntervalMillis- 説明: オプションです。 フラグ設定を更新するためのポーリング間隔(デフォルトは
10000)。
- 説明: オプションです。 フラグ設定を更新するためのポーリング間隔(デフォルトは
maxCohortSize- 説明: オプションです。 プロキシがダウンロードできるターゲットコホートの最大サイズ(デフォルトは
2147483647)。
- 説明: オプションです。 プロキシがダウンロードできるターゲットコホートの最大サイズ(デフォルトは
serverUrl- 説明: オプションです。 プロトコルとホストを含む、フラグの取得元となるサーバーURL(デフォルトは
https://api.lab.amplitude.com)。
- 説明: オプションです。 プロトコルとホストを含む、フラグの取得元となるサーバーURL(デフォルトは
cohortServerUrl- 説明: オプションです。 プロトコルとホストを含む、コホートのダウンロード元となるサーバーURL(デフォルトは
https://cohort.lab.amplitude.com)。
- 説明: オプションです。 プロトコルとホストを含む、コホートのダウンロード元となるサーバーURL(デフォルトは
EUデータレジデンシー
EUデータセンターで評価プロキシを使用する場合は、serverUrlおよびcohortServerUrlを設定してEUデータセンターのエンドポイントにアクセスするようにします。
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 リポジトリの追加
helm repo add \
evaluation-proxy-helm https://amplitude.github.io/evaluation-proxy-helm
values.yamlの設定
チャートの値を設定します。helm チャートの設定とインストールに推奨される方法は、values.yaml 設定ファイルを使用することです。
このチャートのevaluationProxy値が、評価プロキシの設定ファイルフィールドと正確に一致しています。
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 チャートのインストール
helm install -f values.yaml \
evaluation-proxy evaluation-proxy-helm/evaluation-proxy
Docker
Dockerイメージを直接実行することもできます。まず設定ファイルを作成し、そのファイルをボリュームとしてマウントし、コンテナ内の想定ディレクトリに配置した状態でDockerイメージを実行します。
docker run \
-v CONFIG_FILE_PATH:/etc/evaluation-proxy-config.yaml \
amplitudeinc/evaluation-proxy
Docker Composeの例
:evaluation-proxy GitHubリポジトリには、docker composeを使用してローカルのRedisイメージと一緒にプロキシを実行する例も含まれています。
評価
Evaluation プロキシ は、リモートの Evaluation API と SDK エンドポイントを公開し、クラスター内でローカル評価を実行します。これは、ローカル評価 SDK でサポートされていないプラットフォームや言語を有効にするときに便利です。 さらなる利点として、評価プロキシへのフェッチリクエストではユーザーのコホートをターゲットにすることができ、割り当てイベントはAmplitudeに自動的にトラッキングされます。
サービスにリクエストするには、ポート3546でhttpを使用する必要があります。
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 ヒープサイズを設定してください。
- name: JAVA_TOOL_OPTIONS
value: "-Xms128m -Xmx6144m"
Redis の設定
オプション1:レプリカを使用したスタンドアロン
小規模な導入に最適です。
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 クラスターを使用してください。
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でメトリクスを公開します。
次の重大なアラートを設定します:
# 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
トラブルシューティング
| 問題点 | 解決策 |
|---|---|
| 高いレイテンシ(100msを超える持続時間) | Redisのレイテンシーをチェックします:redis-cli --latency -h <host> |
| コホートが読み込まれていません | managementKeyを検証し、同期エラーがないかログを確認します。 |
| プロキシが起動しません | Redis接続を確認し、すべてのAPIキーを確認します。 |
| コールドスタートに時間がかかりすぎる | 大規模なコホート(5〜10分)の場合には通常の動作です。ReadinessのinitialDelaySecondsを増やしてください。 |
容量計画
| ロード | ポッド | Redis |
|---|---|---|
| 10,000 件未満のリクエスト/秒 | 2 | スタンドアロンとレプリカ |
| 10,000〜20,000リクエスト/秒 | 3-4 | スタンドアロンまたは2シャードクラスタ |
| 20,000を超えるリクエスト/秒 | 5 | 2〜3個のシャードクラスター |
Was this helpful?