mcpField
O
opensearch-personalize-caching-strategies

opensearch-personalize-caching-strategies

github.com/pproenca開発218120 回インストール11 週間前に更新
リポジトリ

opensearch-personalize-caching-strategies について

OpenSearch と Personalize を使う AWS マーケットプレイスの検索・推薦サービス向けキャッシュ設計リファレンスです。キャッシュ判断やキー設計から鮮度、障害対策、計測、階層化まで、コード例と出典付きで整理しています。

主な機能

  1. 01キャッシュ効果とトラフィックの評価
  2. 02キー正規化とパーソナライズ境界
  3. 03戦略・TTL・無効化の設計
  4. 04同時ミスと障害への対策
  5. 05ヒット率・遅延・コストの観測
  6. 06ネガティブキャッシュと階層化

活用シーン

  1. 01検索や推薦へのキャッシュ適用を判断
  2. 02低ヒット率やキー数増加の原因調査
  3. 03Personalizeのスロットリングや再構築集中への対策
  4. 04ログに基づくキャッシュ戦略とTTLのシミュレーション

インストール

コマンドをコピーしてターミナルで実行します。

$npx skills add https://github.com/pproenca/dot-skills --skill opensearch-personalize-caching-strategies

インストール後、Claude Code で/opensearch-personalize-caching-strategiesを入力して読み込まれたか確認します。

同梱ファイル

SKILL.md と一緒にインストールされる参考資料やスクリプト。

AGENTS.md
metadata.json
assets/templates/
_template.md
references/
_sections.md
decide-amplification-multiplier.md
decide-cache-roi-calculation.md
decide-cardinality-floor.md
decide-hot-key-distribution.md
decide-latency-budget.md
decide-personalize-quota-budget.md
decide-search-vs-personalize-asymmetry.md
key-bucket-numerical-ranges.md
key-canonicalize-query.md
key-locale-currency-explicit.md
key-segment-not-user.md
key-stable-hash-algorithm.md
key-strip-volatile-params.md
key-version-the-model.md
neg-bloom-filter-against-misses.md
neg-cache-empty-results.md
neg-cache-throttled-personalize.md
neg-poison-pill-detection.md
obs-cache-simulation-from-logs.md
obs-cost-attribution.md
obs-hit-rate-by-key-class.md
obs-key-cardinality-tracking.md
obs-latency-histograms-with-without.md
obs-stale-served-ratio.md
pers-anonymous-vs-logged-split.md
pers-cohort-precomputation.md

詳細

マーケットプレイスのリサーチ:OpenSearch と Personalize のキャッシュのベストプラクティス

AWS OpenSearch(検索)と AWS Personalize(マイクロサービス経由のレコメンデーション)を運用する両面マーケットプレイス向けの、キャッシュ戦略をまとめたリファレンスです。9 カテゴリにわたる 52 のルールを、カスケード効果の順に並べています。上流の「キャッシュするかどうか」という判断から、キー設計、パーソナライズの境界、戦略の選択、TTL 設計、スタンピード対策、可観測性、そしてカスケードの下流にあたるネガティブキャッシュと階層構成までを扱います。各ルールでは、理由(コスト、レイテンシ、または正確性に関わる仕組み)を説明し、不適切なコードと適切なコードの例を示します(マイクロサービスレイヤーは TypeScript/Node、バッチ処理と分析は Python、OS 固有のクエリは OpenSearch JSON、CDN/Kubernetes は YAML)。さらに、標準的な出典として、AWS Personalize/OpenSearch/ElastiCache のドキュメント、XFetch の論文(Vattani et al. VLDB 2015)、RFC 5861(stale-while-revalidate)、キャッシュインフラストラクチャチームの技術ブログ(Netflix EVCache、Pinterest Cachelib、Twitter Twemcache、Cloudflare)を引用します。

これは opensearch-function-scoring-algorithms を補完するものです。あちらのスキルが「ランキングでは何を計算すべきか?」に答えるのに対し、このスキルでは「OpenSearch や Personalize に過度な負荷をかけることなく、本番トラフィックに対応するにはどうスケールすればよいか?」に答えます。

適用するタイミング

次のような場合に、このスキルを活用してください:

キャッシュパイプライン

カテゴリは、リクエスト時のキャッシュパイプラインに基づいています。前段のステージは後続のステージに連鎖的に影響します。「キャッシュするかどうか」の判断を誤ると、その後のすべてが無駄になります。キーを正規化しなければ、ヒット率は達成可能な上限の一部にとどまります。可観測性がなければ、どのルールが役立ったのかを判断できません。

Request → [1] Decide → [2] Key construction → [3] Personalisation boundary
        → [4] Strategy (read/write path) → [5] TTL/freshness → [6] Stampede protection
        → [8] Negative/defensive → [9] Tier composition (L1/L2/CDN/OS-internal) → Response
                                                ↑
                                [7] Observability (meta-layer applied to all stages:
                                    hit rate by key class, latency-with-and-without,
                                    cost-per-1k, cardinality, staleness, log-replay)

優先度別のルールカテゴリ

優先度カテゴリ影響プレフィックスルール数
1判断とコストの計算CRITICALdecide-7
2キャッシュキーの設計CRITICALkey-7
3パーソナライズの境界HIGHpers-6
4戦略と書き込みパスHIGHstrat-6
5TTL と鮮度HIGHttl-6
6スタンピード対策HIGHstamp-5
7可観測性と実測HIGHobs-6
8ネガティブキャッシュと防御的キャッシュMEDIUM-HIGHneg-4
9階層型キャッシュとエッジキャッシュMEDIUM-HIGHtier-5

クイックリファレンス

1. 判断とコストの計算(CRITICAL)
2. キャッシュキーの設計(CRITICAL)
3. パーソナライズの境界(高)
4. 戦略と書き込みパス(高)
  • strat-cache-aside-default — 読み取り中心のパスでは、デフォルトの戦略としてキャッシュアサイドを使用する
  • strat-refresh-ahead-hot-keys — 人気キーの上位1%に限り、リフレッシュアヘッドを使用する
  • strat-write-through-mutations — ユーザーの変更が直後に再読み込みされる場合は、ライトスルーを使用する
  • strat-precompute-batch — 人気の高い割合のデータをバッチジョブで事前計算する
  • strat-tiered-promotion — L2 でヒットしたら、L1 のプロセス内キャッシュに昇格させる
  • strat-async-warm-up — デプロイ、再起動、モデルの再トレーニング後に非同期でウォームアップする
5. TTL と鮮度(高)
6. スタンピード対策(高)
7. オブザーバビリティと実測(HIGH)
8. ネガティブキャッシュと防御的キャッシュ(MEDIUM-HIGH)
9. 階層型キャッシュとエッジキャッシュ(MEDIUM-HIGH)
  • tier-l1-in-process — ミリ秒未満の読み取りを実現するため、プロセス内 LRU を L1 として使用します
  • tier-l2-elasticache-redis — インスタンス間のワーキングセットに合わせて L2 ElastiCache のサイズを決定します
  • tier-cdn-for-anonymous — 匿名トラフィックには CDN を使用し、Cookie がある場合はバイパスします
  • tier-opensearch-request-cache — 集計中心のクエリで OpenSearch リクエストキャッシュを有効にします
  • tier-opensearch-filter-context — 再利用可能な述語をフィルターコンテキストに配置し、セグメントレベルでキャッシュします

使い方

「これはキャッシュすべきですか?」「ヒット率が低いのはなぜですか?」「Personalize のスロットリングをどう乗り切ればよいですか?」といった明確な質問がある場合は、該当するルールに直接進んでください。それぞれに、理由、コード、引用が含まれています。

新しいサーフェスや問題を抱えているサーフェスについて、キャッシュ設計全体をレビューする場合は、カテゴリを上から順に確認してください。このカスケードは実際に影響します。decide-cache-roi-calculation を誤ると、採算の取れないキャッシュにエンジニアリングの労力を費やすことになります。key-canonicalize-query に漏れがあると、達成可能なヒット率に上限が生じます。pers-cohort-precomputation がないと、Personalize の請求額は MAU に比例したままです。ヒット率が 90% を超えたら、スタンピード対策とオブザーバビリティは必須です。サンダリングハードで残りの 10% のミスがオリジンをダウンさせます。また、キーのクラスごとのヒット率ダッシュボードがなければ、状況を把握できません。

既存のキャッシュを実測値に基づいて調整する場合は、まず obs-cache-simulation-from-logs(ログを What-if 設定で再生)を確認し、ダッシュボード用に obs-hit-rate-by-key-class、obs-cost-attribution、obs-stale-served-ratio と組み合わせてください。この 3 つで、キャッシュが役割を果たしているか、コストはいくらか、ユーザーに古いデータが表示されているかがわかります。

特に複数レコメンダーを使うホームページの問題(Personalize のコストが急増する最も一般的なパターン)では、優先順位は次のとおりです。decide-amplification-multiplier → pers-cohort-precomputation → pers-recommender-fan-out-coalescing → pers-anonymous-vs-logged-split。これら 4 つにより、コンシューマー向けマーケットプレイスでは、通常 Personalize の支出を 70~90% 削減できます。

「負荷がかかると Personalize でスロットリングが発生する」インシデントでは、優先順位は次のとおりです。stamp-circuit-breaker-on-origin-error → neg-cache-throttled-personalize → decide-personalize-quota-budget。最初の 2 つでユーザーへの影響を抑えます。3 つ目で minProvisionedTPS を適正化し、再発を防ぎます。

関連スキルとの相互参照については、opensearch-function-scoring-algorithms を参照してください。このスキルでは、OpenSearch で何を計算するか(function_score、kNN、RRF、rank_feature、decay、LTR、MMR、評価)を扱います。このスキルでは、本番トラフィックにクラスターが耐えられるよう、それをどうキャッシュするかを扱います。

カスケードによる影響の根拠についてはセクションの定義を、新しいルールを追加する際はルールのテンプレートを参照してください。

関連スキル

  • opensearch-function-scoring-algorithms — OpenSearch 向けの、調査に裏付けられたランキング、検索、評価のルールです。「何を計算するか」を扱い、このスキルは「それをどうスケールさせるか」を扱います。

参考ファイル

ファイル説明
references/_sections.mdカテゴリの定義と、カスケードへの影響に基づく順序
AGENTS.md簡潔な目次ナビゲーション(自動生成。手動で編集しないでください)
assets/templates/_template.md新しいルールを作成するためのテンプレート
metadata.jsonバージョンと正式な参考 URL

コメント