😎

Trusted Advisor を使って DynamoDB のコストを削減する

に公開

AWS Trusted Advisor は、AWS リソースの最適化に関する推奨事項を提供する便利なツールです。今回は DynamoDB のコストダウンに関する通知に対応した時のことについてまとめました。

Trusted Advisor からの推奨内容

AWS Trusted Advisor から以下の推奨を受け取りました。

リージョン: us-west-2
アクション: PurchaseReservedInstances
内容: 300 write capacity units を3年契約(PartialUpfront)で購入
削減見込み: 月額$98.20 → $65.46(月額$32.74削減)

割合で見るとそこそこの削減額です。Capacity Unitをリザーブドすることで割引を得られるということでしょう。しかしこれを利用しているSaaSの性質上、「そんなにWriteが走ることがあるか?」と不審に感じました。

CloudWatch メトリクスで現状を確認する

まず、CloudWatch で主要なメトリクスを確認しました。ProvisionedWriteCapacityUnits メトリクスでは、各テーブルに設定されている WCU (Write Capacity Units) を確認できます。統計値を Average に設定して確認したところ、各テーブルで5-10 WCU 程度、合計約300 WCU がプロビジョニングされていることがわかりました。

次に、ConsumedWriteCapacityUnits メトリクスで実際に消費されている WCU を確認しました。統計値を Average、期間を1日単位に設定して確認した結果、平均0.65 WCU/秒という値が得られました。

この時点で実際に消費されている量が非常に少ないため、リザーブドキャパシティを選ぶべきではないケースであると判断しました。どうやらプロビジョンドキャパシティユニットを不必要に使用している可能性があります。

DynamoDBの設定をチェックする

ということでDynamoDBの各テーブルをチェックすると、 WCUが各テーブルに 5 割り当てられていました。

平均0.65 WCU/秒であれば、オンデマンドモードで十分です。生成 AI に試算させても、Reserved Capacity では削減額は$42.2/月なのに対して、オンデマンドモードであれば$138.29/月まで削減できます。

オンデマンドモードへの移行手順

オンデマンドモードへの切り替えは非常にシンプルで、ダウンタイムも発生しません。DynamoDB コンソールにアクセスし、対象テーブルを選択して Additional settings タブを開きます。Read/write capacity セクションの Edit をクリックし、Capacity mode を On-demand に変更して Save changes をクリックするだけです。

まとめ

AWS Trusted Advisor からの DynamoDB Reserved Capacity 購入推奨を受け、詳細な調査を行った結果、オンデマンドモードへの切り替えという異なる解決策により、98%のコスト削減を実現できました。この経験は、AWS コスト最適化において、推奨内容の背景にある実態を正確に把握することの重要性を示しています。

同様の Trusted Advisor 推奨を受け取った際には、まず CloudWatch メトリクスで実際の使用量を確認し、使用パターン(常時使用かスパイク型か)を分析することから始めましょう。その上で複数のシナリオでコストを比較し、柔軟性とリスクを考慮して判断することをお勧めします。

皆様の AWS コスト最適化の参考になれば幸いです。

参考資料

Amazon DynamoDB Reserved Capacity
https://aws.amazon.com/dynamodb/reserved-capacity/

Amazon DynamoDB reservations - Amazon EC2 Reserved Instances and Other AWS Reservation Models
https://docs.aws.amazon.com/whitepapers/latest/cost-optimization-reservation-models/amazon-dynamodb-reservations.html

Amazon DynamoDB pricing for provisioned capacity
https://aws.amazon.com/dynamodb/pricing/provisioned/

DynamoDB reserved capacity - Amazon DynamoDB
https://docs.aws.amazon.com/amazondynamodb/latest/developerguide/reserved-capacity.html

https://dev.classmethod.jp/articles/aws-cost-optimize-cheat-sheet-202307/#Amazon%2520DynamoDB

デジタルキューブ

Discussion