こんにちは、池脇です。
前回の記事でRedisからValkeyへの移行について解説しましたが、今回はオンデマンドからサーバレスキャッシュへの変更について試してみたので、その手順を解説したいと思います。
サーバレスキャッシュへの変更を検討する経緯
一言で言うとコストカットのためです。
現在のプロジェクトでのAWSのコストの占める割合を見てみるとRDSに次いでElastiCacheが2番目になっています。
プロジェクトでのキャッシュの利用方法から鑑みてElastiCacheにかかっている費用を下げることは容易そう、かつ大幅に費用削減につながる可能性があるということでサーバレスキャッシュの検討をしています。
サーバレスキャッシュの費用について
ElastiCacheのサーバレスは2023年11月にGAされた機能です。
サーバレスキャッシュの特徴として水平・垂直どちらの方向にもオートスケールし、SLAも99.99%であるため運用において通常の監視は不要になります。
一方で費用については
- ストレージ利用量
- ElastiCache Processing Units(ECPU)1
の2本立てで決まり、容量については最低1GBからとなっていたため小さめのプロジェクトでは採用すると費用が嵩む結果となっていました。
しかしElastiCache Valkeyが発表された2024年10月から費用について
- 前回の記事でも述べたエンジン変更による値下げ(-33%)
- ストレージ最低利用量の引き下げ(1GB→100MB)
上記の改善が入っており、小さめのプロジェクトでもサーバレスキャッシュの利用について検討できるようになりました。
以下が月あたりの費用の比較を行った表です。
費用の比較表 | 月(30日)あたりの料金 |
---|---|
Redisオンデマンド(t4g.micro) | 18.0$ |
Valkeyオンデマンド(t4g.micro) | 14.4$ |
Valkeyサーバレス | 7.272$ + α |
詳しい料金についてはこちらを参照してください。
実際にやってみる
実際にサーバレスキャッシュを作成する手順をご紹介します。
下準備として6379、6380ポートを開けたセキュリティグループの作成が必要となるので作成しておきましょう。
「サーバレス」 を選択、また今回は新規キャッシュとして作成するので 「新しいキャッシュ」 を選択。
「エンジンバージョン」 は最新の8を選択。
今回はデフォルト以外のVPCで作成するため、「デフォルト設定をカスタマイズ」 を選択。
(デフォルトのVPCで作成する場合は「デフォルト設定を使用」でも大丈夫ですが、セキュリティグループもデフォルト指定になるため注意)
「VPC ID」 でキャッシュを作成するVPCを選択。
またオンデマンドと違いサブネットグループの指定ではなく、アベイラビリティーゾーンとして利用するサブネットを複数選択。
「セキュリティ設定をカスタマイズ」 を選択。
下準備で作成したセキュリティグループを指定。
ページ下部の 「作成」 を選択で完了です。
作成したキャッシュのエンドポイントをコピーし、キャッシュを利用したいサービスから接続を試してみてください。
サーバレスキャッシュは転送中の暗号化が必ず有効となります。
TLS設定を行っていない場合は、サービスで利用する際の追記を忘れず行いましょう。
redis.NewClient(&redis.Options{
Addr: addr,
DB: db,
+ TLSConfig: &tls.Config{}, // ← 追記
})
cliでのアクセス時も-tls
オプションが必要です。
redis-cli --tls -h [host] -p 6379
まとめ
Valkeyサポート後のElastiCacheではサーバレスでの運用がどんな環境でも現実的なものになっているように感じましあ。
今回は解説していませんがスケーリングの上限設定等も可能であるため、自分のユースケースに合わせて検討してみてはどうでしょうか?
参考
- 2023年11月にGAされたAmazon Elasticache Serverlessの監視を考える
- Amazon ElastiCacheがサーバーレスになって運用がバチクソ楽になった
- ElastiCache検証:Valkey化でアップデートされた Serverless 導入のポイントとValkey 8.0について