Skip to content

課題17: ニュースメディアのCMS基盤

難易度: 🟡 中級


1. 分類情報

項目内容
難易度中級
カテゴリコンテナ
処理タイプリアルタイム
使用IaCTerraform
想定所要時間5-6時間

2. シナリオ

企業プロフィール

〇〇株式会社は、政治・経済・スポーツなど幅広いジャンルのニュースを配信するオンラインメディアです。月間PVは1,000万を超え、速報ニュース配信時には瞬間的に10倍以上のアクセスが発生します。

現状の課題

オンプレミスのCMSサーバーでは、急激なトラフィック増加に対応できていません:

  1. スパイク対応の遅れ:速報時にサーバーがダウンし、機会損失が発生
  2. コンテンツ配信の遅延:画像・動画が重く、ページ読み込みが遅い
  3. 可用性の問題:単一障害点があり、メンテナンス時にサービス停止
  4. 運用負荷:サーバーの手動管理に工数を取られている

数値で見る問題

  • 速報時のダウン回数:月 3回
  • ページ読み込み時間:平均 4秒
  • 可用性(SLA):99.0%(目標99.9%)
  • サーバー管理工数:月 40時間

成功指標(KPI)

指標現状目標
スパイク時ダウン3回/月0回
ページ読み込み時間4秒1秒以下
可用性99.0%99.9%
運用工数40時間/月10時間/月

3. 学習目標

主要な学習成果

  1. ECS Fargateによるコンテナベースアプリケーションの構築
  2. CloudFrontとS3を組み合わせたコンテンツ配信最適化
  3. Aurora Serverlessによるスケーラブルなデータベース構築
  4. Application Auto Scalingによる自動スケーリング

習得するスキル

  • ECS タスク定義とサービス設計
  • CloudFront Cache Policy の設定
  • S3 への静的アセット保存
  • Auto Scaling ポリシーの設計

4. 使用するAWSサービス

コアサービス

サービス用途重要度
ECS FargateCMS アプリケーション実行
Aurora Serverless v2コンテンツデータベース
CloudFrontCDN・コンテンツ配信
S3画像・動画ストレージ
ALBロードバランシング

補助サービス

サービス用途
ElastiCache (Redis)セッション・キャッシュ
ECRコンテナイメージ保存
CloudWatchログ・メトリクス
WAFセキュリティ
Route 53DNS管理

5. 最終構成図

コンポーネント役割
Userユーザー(コンテンツにアクセス)
CloudFrontCDN(コンテンツ配信・キャッシュ)
S3 Static静的アセット(画像・CSS・JS)の保存
WAFWebアプリケーションファイアウォール
ALBApplication Load Balancer
ECS FargateCMSアプリケーションのコンテナ実行
AuroraAurora Serverless v2(データベース)
ElastiCacheRedis(セッション・キャッシュ)

6. 前提条件

必要な知識

  • Dockerの基本操作
  • HTTPの基本(キャッシュ、ヘッダー)
  • CDNの概念

事前準備

  1. AWSアカウント
  2. AWS CLI v2
  3. Docker Desktop
  4. Terraform CLI

7. トラブルシューティング課題

Challenge 1: CloudFront でキャッシュが効かない

状況: 記事ページが毎回オリジンに到達している

調査ポイント:

  1. Cache-Control ヘッダーの確認
  2. Cookie の影響確認
  3. CloudFront Cache Policy の設定確認

Challenge 2: ECS タスクが頻繁に再起動

状況: ヘルスチェックに失敗してタスクが再起動

調査ポイント:

  1. ヘルスチェックの設定(interval, timeout)
  2. アプリケーションの起動時間
  3. メモリ使用量の確認

Challenge 3: 速報時のスケールアウトが間に合わない

状況: トラフィック急増時にスケールアウトが遅い

調査ポイント:

  1. スケーリングポリシーのクールダウン設定
  2. 予測スケーリングの導入検討
  3. Scheduled Scaling の活用

8. 設計考慮ポイント

ディスカッション1: CDN キャッシュ戦略

テーマ: キャッシュTTLの最適化

コンテンツ推奨TTL理由
静的アセット1年バージョン管理で無効化
画像1日-1週間更新頻度が低い
記事ページ5-15分リアルタイム性とのバランス
トップページ1-5分新着記事の反映

ディスカッション2: FARGATE vs FARGATE_SPOT

テーマ: コスト最適化とリスク

観点FARGATEFARGATE_SPOT
コスト100%約30%OFF
可用性中断リスクあり
ユースケース常時必要なタスクスケールアウト分

ディスカッション3: キャッシュ無効化戦略

テーマ: コンテンツ更新時の反映

選択肢:

  1. TTL ベース(シンプルだが遅延あり)
  2. 明示的な無効化(即時だが複雑)
  3. バージョン付きURL(キャッシュ永続化)

9. 発展課題

Advanced 1: Lambda@Edge による動的コンテンツ

課題: エッジでのA/Bテストやパーソナライゼーション実装

Advanced 2: 予測スケーリング

課題: CloudWatch の予測スケーリングを有効化し、計画的なイベントに対応

Advanced 3: マルチリージョン展開

課題: 災害対策として別リージョンにスタンバイ環境を構築


10. 想定コストと削減方法

月額コスト概算

サービス構成月額コスト
ECS Fargate0.5vCPU/1GB × 2-20タスク$70-350
Aurora Serverless v22-8 ACU$170-700
CloudFront10TB転送 + 1億リクエスト$150
S3100GB$2
ElastiCachecache.t3.medium$50
ALB1$16
NAT Gateway1$32

合計: 約 $490-1,300/月(約74,000-195,000円)


11. 学習のポイント

重要な概念の整理

  1. CDN キャッシング

    • エッジロケーションでのコンテンツ配信
    • Cache-Control ヘッダーの重要性
    • ETag による条件付きリクエスト
  2. コンテナオーケストレーション

    • タスク定義とサービス
    • Auto Scaling ポリシー
    • ヘルスチェックとローリングアップデート
  3. サーバーレスデータベース

    • Aurora Serverless の自動スケーリング
    • ACU(Aurora Capacity Units)
    • 一時停止機能(開発環境向け)

GCPとの比較

概念AWSGCP
CDNCloudFrontCloud CDN
コンテナ実行ECS FargateCloud Run
オブジェクトストレージS3Cloud Storage
サーバーレスDBAurora ServerlessCloud SQL
キャッシュElastiCacheMemorystore

次のステップ

  1. WAF ルールの高度な設定
  2. リアルタイムログ分析(Kinesis + Athena)
  3. 画像最適化(Lambda@Edge)