# フィーチャーフラグ

Site [llms.txt](/ja/llms.txt)

---

デモは、異なるシナリオのシミュレーションに使用できるフィーチャーフラグをいくつか提供しています。
これらのフラグは、[OpenFeature](https://openfeature.dev) をサポートするシンプルなフィーチャーフラグサービスの [`flagd`](https://flagd.dev) によって管理されます。

フラグの値は、デモを起動している際に、<http://localhost:8080/feature> で提供されるユーザーインターフェイスを通じて変更できます。
このユーザーインターフェイスを通じて値を変更すると、flagd サービスに反映されます。

ユーザーインターフェイスを通じてフィーチャーフラグを変更する場合、2 つのオプションがあります。

- **ベーシックビュー**: 各フィーチャーフラグに対して、デフォルトのバリエーション（生のファイルで構成するときに変更する必要がある同じオプション）を選択して保存できるユーザーフレンドリーなビュー。 現在、ベーシックビューは割合ベースのターゲティングをサポートしていません。
- **アドバンスドビュー**: 読み込んでブラウザで編集可能な生の JSON 設定ファイルのビュー。 このビューは生の JSON ファイルを編集できるという柔軟性を提供しますが、JSON が有効であり、入力された設定値が正しいかを保証するスキーマチェックも提供します。

## 実装済みフィーチャーフラグ {#implemented-feature-flags}

| フィーチャーフラグ             | サービス                 | 説明                                                                                                                                                                                                                                     |
| ------------------------------ | ------------------------ | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `adFailure`                    | 広告                     | 10分の1の確率で `GetAds` のエラーを生成します                                                                                                                                                                                            |
| `adHighCpu`                    | 広告                     | 広告サービスで CPU を高負荷にします。 CPU スロットリングをデモしたい場合は、CPU リソース制限を設定します                                                                                                                                 |
| `adManualGc`                   | 広告                     | 広告サービスで完全手動のガベージコレクションを引き起こします                                                                                                                                                                             |
| `aiRunawayAgent`               | エージェント             | エージェントが終了せずツールを呼び出し続けるように仕向け、暴走やループするエージェントをシミュレートします。                                                                                                                             |
| `aiSlowResponse`               | エージェント             | エージェントの LLM モデル呼び出しを遅延させ、LLM プロバイダーのレイテンシー劣化をシミュレートします。                                                                                                                                    |
| `cartFailure`                  | カート                   | 選択された割合の `EmptyCart` 呼び出しを、障害が発生するカートストアに送信します                                                                                                                                                          |
| `emailMemoryLeak`              | Eメール                  | `email` サービスでメモリリークをシミュレートします。 バリアントは、各確認メール本文がどの程度パディングされるかを設定します                                                                                                              |
| `failedReadinessProbe`         | カート                   | レディネスプローブを失敗させ、ステータスを異常にし、Pod の "NotReady" 状態を再現します。 Kubernetes デプロイメントにのみ適用されます。                                                                                                   |
| `imageSlowLoad`                | フロントエンド           | Envoy フォールトインジェクションを利用し、フロントエンドでの製品画像の読み込みに遅延を発生させます。 バリアントは遅延時間を設定します。                                                                                                  |
| `intlShippingSlowdown`         | 配送                     | 米国外の配送リクエストを選択された秒数だけ遅延させ、海外配送の遅延をシミュレートします。 米国内の住所は影響を受けません。                                                                                                                |
| `kafkaConsumerDead`            | 不正検知                 | 不正検知サービスが注文コンシューマーグループを離脱します（サブスクライブ解除とポーリング停止）。 チェックアウトは引き続きプロデュースするため、コンシューマーグループが空になりラグが蓄積します。 フラグを切り替えることで元に戻せます。 |
| `kafkaQueueProblems`           | チェックアウト、不正検知 | 不正検知コンシューマーをレコードごとに N ミリ秒スリープさせてスロットリングします。 コンシューマーの処理速度がプロデューサーの書き込み速度を下回り、ラグが増加します。 フラグでレコードごとの遅延をリアルタイムに調整できます。          |
| `loadGeneratorTraffic`         | 負荷生成ツール           | 負荷生成ツールからの合成トラフィックを有効にします。 オフにすると、すべての負荷生成シナリオが一時停止します。                                                                                                                            |
| `loadGeneratorVUs`             | 負荷生成ツール           | 負荷生成ツールの HTTP シナリオを実行する同時仮想ユーザー数です。 変更すると、次回のポーリング時に k6 が再起動されます。                                                                                                                  |
| `paymentFailure`               | 支払い                   | 選択された割合の `charge` 呼び出しに対してエラーを生成します                                                                                                                                                                             |
| `paymentUnreachable`           | チェックアウト           | 支払いサービスを呼び出すときに支払いサービスが利用できないように見せるために、不正アドレスを使用します                                                                                                                                   |
| `productCatalogFailure`        | 商品カタログ             | 商品 ID: `OLJCESPC7Z` の `GetProduct` リクエストに対してエラーを生成します                                                                                                                                                               |
| `productCatalogLockContention` | 商品カタログ             | `catalog.products` テーブルに対して `ACCESS EXCLUSIVE` ロックを保持することでデータベースのロック競合をシミュレートし、他の商品カタログクエリをブロックします。                                                                          |
| `recommendationCacheFailure`   | レコメンデーション       | 指数関数的に増大するキャッシュによりメモリリークが発生します。 リクエストのおよそ半数がその増加を引き起こします                                                                                                                          |

## ガイド付きデバッグシナリオ {#guided-debugging-scenario}

`recommendationCacheFailure` シナリオには、OpenTelemetry を使用してメモリリークをデバッグする方法を理解するのに役立つ[専用のウォークスルードキュメント](recommendation-cache/)があります。

## フィーチャーフラグアーキテクチャ {#feature-flag-architecture}

flagd の動作の詳細については [flagd documentation](https://flagd.dev) を、OpenFeature の動作の詳細については [OpenFeature](https://openfeature.dev) と OpenFeature API を参照してください。

---

Section pages:

- [メトリクスとトレースを使ったメモリリークの診断](/ja/docs/demo/feature-flags/recommendation-cache/)
