DEVELOPER’s BLOG
技術ブログ
5分で分かる。Amazon CloudFrontによるAWSコスト削減術
- はじめに
- 1. EC2 × ALB × CloudFront でインフラコストを削減
- 2. API Gateway × Lambda × CloudFront で動的コンテンツでもコスト最適化
- 3. 単一リージョン × CloudFront でグローバル配信をシンプルに
- まとめ:CloudFrontは単なる「CDN」ではない!
はじめに
AWSでシステムを構築する時、「とりあえずEC2インスタンスを建てて終わり」としていませんか?もしかするとコストやパフォーマンス、セキュリティで損をしてしまっているかもしれません。特にWebサイトやAPIを外部に公開しているケースでは、Amazon CloudFront(CDN※1)を導入するだけで、AWSコストを削減できる可能性があります。
本記事では、CloudFrontを活用できていない典型的なアンチパターンをもとに、推奨アーキテクチャをご紹介いたします。また、AWSセキュリティ関連サービス(WAF等)やDNS周り(Route53等)は扱わないものとします。
※1 : CDN = Contents Delivery Network(コンテンツ配信ネットワーク)
1. EC2 × ALB × CloudFront でインフラコストを削減
「ALBとEC2で稼働する一見シンプルな構成なのに、なぜかAWSコストが高い...」このようなお悩みは意外と多いのではないでしょうか?
アンチパターン
- EC2インスタンスをターゲットに持つALBをインターネットに直接公開
- API等の動的処理だけではなく、画像等の静的コンテンツも全てALBを経由してEC2インスタンスが処理
- 結果としてALBのデータ処理料金が高騰&EC2インスタンスのCPU使用率が増大
図1-1
推奨アーキテクチャ
- ALBより前段にCloudFrontディストリビューションを配置
- 画像等の静的コンテンツはCloudFrontディストリビューションでキャッシュ
- API等の動的処理は短めにTTLを設定してキャッシュ
図1-2
導入効果
-
キャッシュによりALBとEC2が受けるリクエスト総数が減少
- ALBのデータ処理料金が削減可能!
-
EC2インスタンスのCPU使用率が緩和
- スケールダウンが可能になり、固定費も削減可能!
-
キャッシュによりEC2インスタンスのCPU使用率が安定
- システム全体でパフォーマンスが軽快に!
2. API Gateway × Lambda × CloudFront で動的コンテンツでもコスト最適化
「なんとなくAPI GatewayとLambdaでサーバレスを構成しているけど、なんだかAWSコストが高いな...」そのようなお悩みはございませんか?
アンチパターン
- Lambda関数をターゲットに持つAPI Gatewayをインターネットに直接公開
- 全リクエストがAPI Gatewayを経由してLambda関数を都度起動
- 結果としてAPI Gateway・Lambdaそれぞれの利用料金が高騰
図2-1
推奨アーキテクチャ
- API Gatewayより前段にCloudFrontディストリビューションを配置
- API等の動的処理は短めにTTLを設定してキャッシュ
図2-2
導入効果
-
キャッシュによりAPI GatewayとLambdaが受けるリクエスト総数が減少
- API Gateway・Lambdaそれぞれの利用料金が削減可能!
-
キャッシュによりバックエンドへの到達回数を最小化
- システム全体でパフォーマンスが軽快に!
3. 単一リージョン × CloudFront でグローバル配信をシンプルに
「支社が海外にあるから、なんとなく複数リージョンにデプロイしてみたけど、管理が大変でAWSコストもかさむな...」そのような状況、ございませんか?
アンチパターン
- 海外に支店があるから等の理由で、特に意図せず複数リージョンに同一システムをデプロイ
- 各リージョンにてAWSインフラ環境を個別で運用
- 結果として運用コストが増大&リソース重複によるインフラ費用が高騰
図3-1
推奨アーキテクチャ
- マルチリージョンではなく単一リージョンにシステムを集約
- 前段にCloudFrontディストリビューションを配置して、世界中にコンテンツを高速配信
- 1システムにアクセスが集中するが、こちらはキャッシュで吸収
図3-2
導入効果
-
単一リージョンに統一することでAWSリソースの無駄な重複を大幅に低減
- 運用コストおよびインフラ費用が約半分まで削減可能!
-
キャッシュによりバックエンドへの負荷を抑制
- 今までと変わらないユーザ体験を提供!
まとめ:CloudFrontは単なる「CDN」ではない!
本記事で紹介しましたように、CloudFrontは単なる「CDN」ではなく、パフォーマンスやセキュリティを最適化しつつコストを削減する強力なツールです。AWSでシステムを設計する際は、まず「前段にCloudFrontを配置できないか?」を検討してみてください。
それだけで、アンチパターンから脱却し「費用対効果が高いアーキテクチャ」への第一歩を踏み出せるでしょう。