コスト最適化

AWS のクラウドコストを削減しながら、必要なパフォーマンスと可用性を維持する取り組み

AWS運用
コスト最適化」の技術書を見る (10 冊) →

コスト最適化とは

コスト最適化は、AWS のクラウドコストを削減しながら、必要なパフォーマンスと可用性を維持する取り組みである。AWS Well-Architected Framework の 5 本柱の 1 つ。詳細は「FinOps」を参照。

サーバーレスのコスト特性

サーバーレスのコスト特性を図で示す。

Lambda: リクエスト数 × 実行時間 × メモリ
  トラフィック 0 → コスト 0
  トラフィック増加 → 比例して増加

EC2: 時間課金 (常時稼働)
  トラフィック 0 → コストは変わらない
  → 小〜中規模はサーバーレスが安い

コスト削減の手法

コスト削減の手法を以下にまとめる。

手法対象削減率
未使用リソースの削除EBS, EIP, NAT GW100%
適切なサイズ選択Lambda メモリ, EC220〜50%
Savings PlansEC2, Lambda, Fargate30〜72%
S3 ライフサイクル古いデータ50〜80%
DynamoDB オンデマンド予測不能なトラフィック変動

Lambda のコスト最適化

Lambda はメモリサイズを適切に設定し (過剰に大きくしない)、タイムアウトを短く設定する。esbuild でバンドルサイズを削減し、@aws-sdk/* を外部化するとコールドスタートも改善する。

S3 ライフサイクル

S3 ライフサイクルルールで、古いデータを Glacier に移行し、一定期間後に自動削除する。90 日で Glacier 移行、365 日で削除が一般的な設定だ。

DynamoDB のコスト

DynamoDB のコストを以下にまとめる。

モード適用
オンデマンドトラフィックが予測不能
プロビジョンドトラフィックが安定
プロビジョンド + Auto Scalingトラフィックにパターンがある

コスト監視

AWS Budgets で月額予算を設定し、閾値 (80% など) を超えたらメール通知を送る。Cost Explorer で未使用リソースを定期的に確認する。

コスト最適化のチェックリスト

定期的に以下を確認する。Cost Explorer で未使用リソース (アタッチされていない EBS ボリューム、未使用の Elastic IP、不要な NAT Gateway) がないか確認し、発見次第削除する。開発環境は夜間・休日にスケジュール停止する。CloudWatch Logs の保持期間 (TTL) を適切に設定し、不要なログが蓄積しないようにする。VPC 内の Lambda は NAT Gateway 経由で外部通信するため、NAT Gateway のコストが Lambda 自体より高くなることがある点に注意する。

コスト最適化の理解を深めるには関連書籍が参考になる。

この記事は役に立ちましたか?

関連用語

関連する記事