hero_picture
Cover Image for Amazon ElastiCache ServerlessがGAとなりましたので触ってみた

Amazon ElastiCache ServerlessがGAとなりましたので触ってみた

こんにちは、クラウドソリューション事業部の本田です。AWS re:Invent 2023関連で、GAとなりましたAmazon ElastiCache Serverless関連の記事を書いていきます。

Amazon ElastiCache Serverlessって何

Amazon ElastiCache Serverless は以下のページより引用しますと
https://aws.amazon.com/blogs/aws/amazon-elasticache-serverless-for-redis-and-memcached-now-generally-available/

ElastiCache Serverless を使用すると、キャパシティ プランニングに時間を費やしたり、キャッシュの専門知識を必要とせずに、最も要求の厳しいワークロードに対してもキャッシュを運用できます。ElastiCache Serverless は、アプリケーションのメモリ、CPU、ネットワーク リソースの使用率を常に監視し、サービスを提供するワークロードのアクセス パターンの変更に対応するために即座にスケーリングします。複数のアベイラビリティーゾーンにわたって自動的にレプリケートされたデータと、すべてのワークロードに対して最大 99.99% の可用性サービス レベル アグリーメント (SLA) を備えた高可用性キャッシュを作成できるため、時間とコストを節約できます。

構築をする前に、どれくらいのスペックにするか、マルチAZにするべきかどうかなどの悩み事がなくなります。AWSのインフラとして最適な構成でキャッシュサーバーを構築してくれます。

料金体系

料金体系は以下のページを記載されています。
https://aws.amazon.com/elasticache/pricing/
日本語ページだと12/5現在まだServelessに関しての記載がありますので英語ページをご覧ください。引用しますと以下が課金体系です。

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.

保存されたデータ量に対して課金されます。a minimum of 1 GB of data storedとあり、最低1GB分の課金はかかる模様です。通常のElasticacheサービスと異なる点ですね。

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.

こちらは書き込み、読み取りの処理に対して消費したCPUの分課金されていきます。使った分だけの課金となります。データ量が多ければ多いほど消費するCPUも大きくなります。

料金体系はいわゆる使った分だけの従量課金ですが、データにかかる料金が最低1GB分$90分はかかってしまうようです。

作って触ってみる

とりあえずはどんなものか触っていきます。
コンソールから作ると画像のように、1クリックで作成できました。


デフォルト設定のカスタマイズもできます。

実際作ってみると分かるのですが、作成が完了するまでとても早いです。
Serverlessでないものを作った時に数十分かかっていた印象があるのですが、2,3分で作成が完了します。

EC2から接続してみる


redis-cliをインストールしたEC2から接続してみて、適当にkeyとvalueをセットしてみます。

このあたりは通常のredisとまぁ同じですね。

セットしてしばらくすると、保存されたデータと消費されたECPUが増えていることがわかります。

実際のユースケースを考えてみる

簡単に触ってみたのですが、実際どんなケースで使えそうか考えてみます。

  • 検証環境
    データ容量の課金が最低限かかってしまうので、検証環境など小さいサイズのインスタンスタイプをご利用の場合はServerlessでない方がコストは安く抑えられるかもしれませんが、短期間だけ作る、データを削除するなどの工夫ができれば検証環境でも利用できる可能性はあります。
  • ダウンタイムが許容できない環境
Upgrading engine version – ElastiCache Serverless transparently applies new features, bug fixes, and security updates, including new minor and patch engine versions on your cache. When a new major version is available, ElastiCache Serverless will send you a notification in the console and an event in Amazon EventBridge. ElastiCache Serverless major version upgrades are designed for no disruption to your application.

エンジンのバージョンアップが透過的に行われるとのことで、バージョンアップによる再起動などが許容できないケースはかなり有効そうです。

  • キャパシティが予測できない環境
    リリースしたなど実際どれくらいリソースを必要とするのがわからない環境だとスケーリングをしてくれるので有効だと思います。
  • 一時的にスパイクアクセスがある環境
    どれくらいの速度でスケールアップができるのかというのは検証が必要ですが、ECサイトなどでセールがありその瞬間だけ
    スパイクアクセスがあるなどわかっていければその時だけserverlessに切り替えるというのも使い道としてはあるのかなと思いました。

利用状況によってはコストが増えてしまう可能性もありますが、耐障害性、スケーリング、アップデート時の影響など大きなメリットはありそうです。そういったところにある程度コストを支払って運用を楽にするか否かというところが利用するポイントなりそうです。