📑

Momento CacheとAmazon ElastiCache Serverlessの性能/機能/特徴について比較してみた。

2023/11/28に公開1

re:Invent 2023のMonday Night LIVEにて発表されたAmazon ElastiCache ServerlessとMomento Cacheの性能、機能についてを検証してみました。

「Amazon ElastiCache Serverless for Redis and Memcached is now available」
https://aws.amazon.com/blogs/aws/amazon-elasticache-serverless-for-redis-and-memcached-now-generally-available/

Amazon ElastiCache Serverless

  • コンソール画面から、Amazon ElastiCacheの画面に移ると、下記のようにRedis キャッシュMemcached キャッシュという項目が表示されていることが分かります。

試しにRedisキャッシュを作成していきます。

  • スクロールしていくと、下記のように「デフォルトの設定」が表示されます。ここで「デフォルト」を選択すると、AWS側がVPC、サブネットを自動で作成しその資源上にElastiCacheのRedisが作成されるようです。

  • 逆に、「デフォルト設定をカスタマイズ」を選択するとVPCAZ、セキュリティ については、デフォルトの設定以外だと暗号化キーと、セキュリティグループを設定しないといけないことが分かります。

  • また、「デフォルト設定をカスタマイズ」を選択した状態だと、下記のように+*使用量の上限+*という項目で、メモリとコンピュートリソースの選択を求められます。

今回はサーバレスを謳っているというのもあるので、「デフォルト」の設定でMomento CacheとAmazon ElastiCache Serverlessを比較していきます。

それぞれを比較

Amazon ElastiCache Serverlessの良いところ

  • 今までElastiCacheが抱えていた問題である、シンプルさ。特に、インスタンスのタイプを選んだり、帯域幅の注意しつつノードのTPS制限を気にするのは開発者にとって悩みの種だったのではないでしょうか。
  • 正直、Serverlessという名前がつくサービスは基本サーバレスではないと思っているので、今回の発表を受けても、まあいつものだろうと思っていました。
  • ただ蓋を開けてみると、ElastiCache Serverlessは、Memcache、Redisをネイティブにサポートし、より開発者が楽にAWSの中でキャッシュを使えるサービスになっておりました。

特徴的な点

  • デフォルトでMulti-AZ
  • HAの設定や追加料金の心配は無し
  • オートスケーリンググループが無くなった

微妙な点

  • VPCがいます。というより必須です。なので、Lambdaなどと組みわせてキャッシュを使いたい場合に、LmabdaをVPC内に立てないといけなくなります。
  • プレスの記事を見るとスケーリングとパフォーマンスについて書かれています。よく読むとローンチ時点では、1秒あたりのリクエスト(RPS)が上昇した際に、スケーリングするのに10分ごととなっている点がローンチ時点での検証でわかっているとのことでした。
    すなわち、スケーリングに関してはまだまだということですね。どういうことかというと、突発的にRPSが2倍以上になったら、10分✖️倍々で待たないと捌けないということですね。

As you can see in the graph above, we were able to double the requests per second (RPS) every 10 minutes up until the test’s target request rate of 1M RPS. During this test, we observed that p50 GET latency remained around 751 microseconds and at all times below 860 microseconds. Similarly, we observed p50 SET latency remained around 1,050 microseconds, not crossing the 1,200 microseconds even during the rapid increase in throughput.

そして一番しんどいのは、コストです。

  • Amazon ElastiCache Serverlessは、従量課金制となります。しかもこの課金の仕組みがキツいものがあります。
  • お客さんはElastiCache Serverlessに保存されたデータに対して、ギガバイト時間(GB-hrs)で課金されます。
  • また、最低料金は$90だが、$90 + 月/GB + 34セント/GBのデータ転送量を支払うことになるので、適切に使わないと痛いめをみますね。
  • ストレージはGB単位で切り上げられるため、1.1GBは月180ドル、0.01GBは月90ドルとなるようです。

Key Terms
Data stored: You pay for data stored in ElastiCache Serverless billed in gigabyte-hours (GB-hrs). ElastiCache Serverless continuously monitors the amount of data stored in your cache, sampling multiple times per minute, and calculates an hourly average to determine the cache’s data storage usage in GB-hrs. Each ElastiCache Serverless cache is metered for a minimum of 1 GB of data stored.
ElastiCache Processing Units (ECPUs): You pay for ElastiCache Serverless requests in ElastiCache Processing Units (ECPUs), a unit that includes both vCPU time and data transferred. Reads and writes require 1 ECPU for each kilobyte (KB) of data transferred. For example, a GET command that transfers 3.2 KB of data will consume 3.2 ECPUs. Commands that require additional vCPU time or transfer more than 1 KB of data will consume proportionally more ECPUs.

https://aws.amazon.com/elasticache/pricing/#Serverless

保存されるデータ:お客様はElastiCache Serverlessに保存されたデータに対して、ギガバイト時間(GB-hrs)で課金されます。ElastiCache Serverlessは、お客様のキャッシュに保存されたデータ量を1分間に複数回サンプリングして継続的に監視し、1時間あたりの平均値を計算してキャッシュのデータストレージ使用量をGB-hrsで決定します。各ElastiCache Serverlessキャッシュは、保存されたデータの最低1GBで測定されます。

Momento Cacheの良いところ

VPCなし。シンプル。コストが安い。さまざまなSDKがあり、高速に稼働。安定感のあるキャッシュサービスというところです。

  • せっかくサーバレスのアーキテクチャのしたのにVPCを使ったり、Serverless風のサービスを使った結果コストが上がるのはみなさん避けたいと思います。

  • 下記のコストを見ても分かるように、Momentoのコストというのは、あくまでデータ転送量にしかかかりません。

  • データの保存量にかかるお金もなければ、オーバプロビジョニングで発生する費用なんてものもありません。

  • また、Momento Cacheが高速と言ったのも嘘ではありません。

  • 下記に記載があるようにMomento Cacheの基盤は本当によく作られており、例えば、キャッシュ特有の問題でもあるホットキーの発生については、独自のアルゴリズムによってルーティング部分で制御されていたり、ホットキーが発生しない仕組みを持っていたりします。また、クライアントからNLBまでの通信にgRPCを使っていたり、あえてNLBを使っていたりとユーザが知らなくても良い世界で相当な技術と工夫がなされ日々アップデートされています。

https://speakerdeck.com/yoshiitaka/deep-dive-into-momento

https://zenn.dev/momentobigfun/articles/94cd7e1f8735da

  • Momentoが打ち出すサーバレスの定義。この定義はMomento社は誇りにしており、Cacheだけではなく、他のMomentoが出しているサービスにも適用されています。
  • ということもあり、Momentoの良いところについては、真のサーバレスは変わらず他のServerlessなサービスが出た時にその違いがより顕著に現れ、改めてMomentoすごいなとなることなのかもしれませんね。

(Momentoが提供するサービス)

最後に

  • 個人としては、Amazon ElastiCache Serverlessがでて、またかと思ったのですが、Aurora Serverlessや、OpenSearch Serverlessとは違い、Momento社が出しているServerlessの定義に近いものを作ってきた印象があります。
  • ただ、まだまだ欠点は多く、その分Momentoの良さが浮き彫りになったニュースリリースでした。

Discussion