捨てるものの選び方を変えても、当たり率の差は4.1ポイントでした。
同じ条件で大きさを50倍にすると36.5ポイント動きます。手を入れる先が違います。
大きさを増やすほど当たります。ただし初回は必ず取りに行くので、100%には届きません。
Amazon ElastiCacheは、記憶の上に置く手前の入れ物です。公式は配られた形の記憶上の置き場、あるいは手前の入れ物を、クラウドで用意し、管理し、大きさを変えることを容易にするサービスであると述べています。
大きさを増やせばどこまで当たるのか。実際に引いて数えました。
鍵 100,000種・引く回数 500,000回。引かれ方は偏らせてある 手前の入れ物から返すと 0.2ms、元のところまで行くと 4ms 入れ物の大きさ 当たった割合 平均の応答 元のところへの回数 100件 15.6% 3.41ms 422,030回 1,000件 34.2% 2.70ms 328,754回 10,000件 60.1% 1.71ms 199,268回 50,000件 82.1% 0.88ms 89,701回 100,000件 84.9% 0.77ms 75,430回
鍵の全部にあたる10万件ぶんを入れても84.9%です。100%にはなりません。
初回は必ず取りに行くからです。種類の数だけは、どうやっても元へ行きます。
1,000件から10,000件では25.9ポイント伸びます。50,000件から100,000件では2.8ポイントです。
大きさは10倍でも2倍でも費用としては効きます。後半は、払った分の見返りが小さくなります。
この頭打ちはRedisの記事でも扱っていて、偏りの強さが上限を決めます。
大きさを増やすほど伸びが鈍り、全部入れても84.9%で止まる。
Amazon ElastiCache is a web service that makes it easy to set up, manage, and scale a distributed in-memory data store or cache environment in the cloud.原文AWS ドキュメント「What is Amazon ElastiCache?」 この内容の有効期限2027-02-18
決めるべきは大きさです。捨てるものの選び方は、大きさの前では小さな差にしかなりません。
Amazon ElastiCacheでは、節を選ぶのは使う側の役目です。公式は節に基づくまとまりを作る場合、必要な容量を満たすように節の種類と数を正しく選ぶ責任は利用者にあると述べています。
容量のほかに、捨て方も選べます。どちらが効くのか同じ条件で並べて比べました。
鍵 100,000種・引く回数 500,000回。引かれ方は偏らせてある 入れ物がいっぱいのときに何を捨てるかを変えて、当たった割合を比べる 入れ物の大きさ いちばん長く使われていないものを捨てる 入れた順に捨てる でたらめに捨てる 1,000件 50.6% 46.5% 46.5% 10,000件 73.2% 69.8% 70.0% 50,000件 87.1% 85.9% 86.6%
いちばん差が出た1,000件でも、4.1ポイントです。50,000件では1.2ポイントまで縮みます。
同じ表を縦に見ると、1,000件から50,000件で36.5ポイント動いています。桁が違います。
捨て方が効いてくるのは、入れ物が小さくて偏りが強い場合だけでした。大きくすれば、どの方式も同じところに集まります。
似た形の判断はクラウドコスト最適化の記事でも扱っていて、細かい設定より量の見積もりが先に来ます。
When creating a node-based cluster, you are responsible for choosing the type and number of nodes correctly to ensure that your cache has enough capacity as required by your application.原文AWS ドキュメント「What is Amazon ElastiCache?」 この内容の有効期限2027-02-18
容量の計画を任せられても、入れ替え直後の落ち込みは残ります。元への負荷が跳ねます。
Amazon ElastiCacheには、容量の計画を任せられる形もあります。公式はサーバーレスの形は、手前の入れ物の容量を計画し管理する必要をなくすと述べています。
それでも、空から始めれば当たりません。落ち着くまでどれだけかかるのか区間ごとに数えました。
空の入れ物(50,000件ぶん)から始めて、2,000,000回引く
区間ごとの当たった割合を見る。落ち着くまでにどれだけかかるか
ここまでの回数 その区間の当たり率 通しての当たり率 入れ物の埋まり具合
10,000回 57.2% 57.2% 8.6%
50,000回 73.7% 70.4% 29.6%
100,000回 80.9% 75.6% 48.7%
500,000回 89.9% 87.0% 100.0%
1,000,000回 91.8% 89.4% 100.0%
2,000,000回 91.8% 90.6% 100.0%
最初の1万回は57.2%です。落ち着いた91.8%とは34.6ポイントの差があります。
落ち着くまでに50万回かかりました。その間ずっと、元のところへの問い合わせが多いままです。
この落ち込みは、節を入れ替えたときや設定を変えたときに起きます。手前が空になれば、後ろが全部受けます。
だから入れ替えは、元が余力のある時間に行うことになります。一度に全部を入れ替えず、少しずつ移すという手もあります。
3つの計測はいずれも手元で書いた模型で、実際のAmazon ElastiCacheを叩いたものではありません。0.2msと4msは置いた値です。引かれ方は順位の逆数に比例する形に偏らせており、この偏りが弱ければ当たり率はもっと低く、強ければ高く出ます。鍵の種類は10万で固定しています。ここで見せているのは、捨て方より大きさのほうが桁違いに効くという点と、空から始めた直後は当たらないという点の2つです。
ElastiCache Serverless also removes the need to plan and manage caching capacity.原文AWS ドキュメント「What is Amazon ElastiCache?」 この内容の有効期限2027-02-18
同じ課題を持つ会社にとって、動いている設定は「作る時間」を買えるということです。ServiceDockは自作のワークフローやテンプレートを出品できるマーケットプレイスです。手数料や出品の流れは出品者向けページにまとまっています。
出品の仕組みを見る