🌍 AWSグローバルアーキテクチャ

テーマパークで学ぶ!CloudFront + Lambda@Edge + ALB + Auto Scaling

🎡 世界最大級のテーマパークの運営に例えると超わかりやすい!

AWSのグローバルアーキテクチャ = 世界中にあるテーマパーク

東京、ニューヨーク、ロンドン、シンガポール...世界中からお客様が来場します。
どうすれば 全員に最速で、快適な体験 を提供できるでしょうか?

4つの重要な仕組みを、テーマパークの運営に例えて理解しましょう✨
CloudFront・Lambda@Edge・ALB・Auto Scaling の役割が一目瞭然!

🏗️ 4層アーキテクチャの全体像

1
🌐
CloudFront
世界中の入口ゲート(エッジロケーション)
🎡 テーマパークの例え
世界中に分散配置された「入口ゲート」

東京のお客様 → 東京ゲートから入場(1ms)
ニューヨークのお客様 → NYゲートから入場(1ms)
ロンドンのお客様 → ロンドンゲートから入場(1ms)

📍 どこにいても、最寄りのゲートから入場できる!
わざわざ本部(オリジンサーバー)まで行く必要なし。
よく見られる地図やパンフレット(静的コンテンツ)は、
各ゲートにキャッシュしてあるのですぐ渡せる!
💻 技術的な説明
CloudFront = CDN(Content Delivery Network)

• 世界450以上のエッジロケーションに配置
• ユーザーに最も近い場所からコンテンツ配信
• 画像・CSS・JSなどの静的ファイルをキャッシュ
• レイテンシーを10ms以下に削減可能
• DDoS攻撃からの保護機能も標準装備
• HTTPSによる安全な通信をエッジで終端

⚡ 超高速配信

最寄りのエッジから配信するため、レイテンシーが劇的に改善

🔒 セキュリティ

AWS Shield StandardによるDDoS保護が標準で有効

💰 コスト削減

オリジンへのリクエスト数を90%削減してコスト最適化

⬇️
2
🎯
Lambda@Edge
入口での賢い振り分けスタッフ
🎡 テーマパークの例え
入口ゲートにいる「スーパー案内スタッフ」

お客様の属性を瞬時に判断:
👑 VIP会員 → 専用エントランスへ案内
📱 モバイルユーザー → 軽量版の地図を提供
🌍 海外からの観光客 → 多言語対応ルートへ
🤖 ボット・クローラー → 特別な対応

💡 重要:各ゲート(エッジ)で判断するから超高速!
本部に問い合わせる前に、その場で最適なルートを決定。
ユーザーのクッキー、デバイス、位置情報などを見て、
リクエストを書き換えたり、最適な体験を提供します。
💻 技術的な説明
Lambda@Edge = エッジでのサーバーレス処理

• CloudFrontのエッジロケーションで実行される関数
• 4つのタイミングでカスタム処理が可能:
1. Viewer Request(リクエスト受信時)
2. Origin Request(オリジン転送前)
3. Origin Response(オリジン応答後)
4. Viewer Response(ユーザーへ返答前)
• A/Bテスト、認証、ヘッダー操作などが可能
• レスポンスタイムへの影響は1-5ms程度
• Node.jsまたはPythonで実装

🎭 A/Bテスト

エッジでユーザーを振り分けて異なるバージョンを表示

🔐 認証処理

オリジンに到達する前にJWT検証などを実行

📱 デバイス最適化

モバイル/PC/タブレットに最適なコンテンツを自動配信

⬇️
3
🚏
Application Load Balancer
パーク内の総合案内所(パスベースルーティング)
🎡 テーマパークの例え
パーク本部の「総合案内所」

お客様のリクエストに応じて、適切なエリアへ案内:

🎢 /attractions → アトラクションエリアへ
🍔 /restaurants → レストランエリアへ
🎁 /shop → ショップエリアへ
📸 /photos → 写真サービスエリアへ

⚖️ さらに負荷分散も担当!
各エリアに複数のスタッフ(EC2インスタンス)がいる場合、
混雑していないスタッフに優先的に案内。
健康チェックを定期的に行い、調子が悪いスタッフには
お客様を案内しません。
💻 技術的な説明
ALB = Layer 7(アプリケーション層)のロードバランサー

• URLパス、ホスト名、HTTPヘッダーで振り分け
• 例:/api/* → APIサーバー、/images/* → 画像サーバー
• WebSocketやHTTP/2に対応
• ヘルスチェックで正常なターゲットのみに転送
• SSL/TLS終端でバックエンドの負荷を軽減
• スティッキーセッションでセッション維持
• マイクロサービスアーキテクチャに最適
• Cross-Zone Load Balancingで複数AZ対応

🎯 パスベースルーティング

URLパスに応じて異なるマイクロサービスに振り分け

💚 ヘルスチェック

異常なインスタンスを自動検出して除外

🔄 自動復旧

障害発生時も正常なターゲットへ自動フェイルオーバー

⬇️
4
📈
EC2 Auto Scaling
混雑に応じた自動スタッフ増減
🎡 テーマパークの例え
来場者数に応じた「スタッフの自動増減システム」

平日午前(閑散期):
👥 最小2名のスタッフで対応

休日午後(繁忙期):
👥👥👥👥👥👥 最大10名まで自動でスタッフ追加

🎯 3つの賢い増減方法:

1️⃣ スケジュールベース
「毎週土日は朝9時に8名体制にする」

2️⃣ メトリクスベース
「CPU使用率70%超えたらスタッフ追加」

3️⃣ 予測スケーリング
「過去のパターンから来週末の混雑を予測」
💻 技術的な説明
Auto Scaling = EC2インスタンスの自動増減

• 需要に応じてインスタンス数を自動調整
• CPU・メモリ・ネットワークなどのメトリクスで判断
• 最小・最大・希望容量を設定可能
• スケールアウト(増加)は数分で完了
• スケールイン(削減)は段階的に実行
• CloudWatchアラームと連携
• 複数のAZにまたがって分散配置
• ヘルスチェックで異常インスタンスを自動置換
• コスト最適化:必要な時だけリソース確保

📊 動的スケーリング

リアルタイムの負荷に応じて自動でインスタンス増減

🔮 予測スケーリング

機械学習で需要を予測して事前にスケール

💰 コスト最適化

不要な時はインスタンスを削減して課金を削減

🔄 リクエストの流れを比較

❌ 従来型アーキテクチャ

🇯🇵
東京のユーザー
東京 → 米国本社サーバー(150ms)
遠い!遅い!
🚫
単一サーバー
1台のサーバーで全世界に対応
負荷が集中してダウンリスク大
💸
固定コスト
閑散期も大型サーバーを維持
無駄なコストが発生
⏱️
レスポンスタイム
平均:150-300ms
ユーザー体験が悪い

✅ AWS 4層アーキテクチャ

🌏
東京のユーザー
東京 → 東京エッジ(5ms)
最寄りから超高速配信!
🎯
インテリジェント処理
Lambda@Edgeで最適化
ユーザーごとにパーソナライズ
⚖️
負荷分散
ALBが複数サーバーに分散
高可用性を実現
📈
自動スケーリング
需要に応じて自動増減
コスト最適化と性能を両立
レスポンスタイム
平均:5-20ms
劇的に高速化!

💼 実際のユースケース

🛒

ECサイト

課題: セール時のアクセス集中

解決策:
• CloudFront:商品画像を世界中にキャッシュ
• Lambda@Edge:地域別の価格表示
• ALB:/products、/cart、/checkoutで振り分け
• Auto Scaling:セール開始30分前に自動増強

結果: 通常の10倍トラフィックでも安定稼働
📱

動画配信サービス

課題: グローバルユーザーへの高画質配信

解決策:
• CloudFront:動画をエッジでキャッシュ
• Lambda@Edge:デバイスに応じた画質選択
• ALB:ストリーミングとAPI処理を分離
• Auto Scaling:夜間の視聴ピークに対応

結果: バッファリングなしの快適視聴を実現
🎮

オンラインゲーム

課題: 低レイテンシーが必須

解決策:
• CloudFront:静的アセットを高速配信
• Lambda@Edge:最寄りのゲームサーバーへ誘導
• ALB:ゲームロジックとチャットを分離
• Auto Scaling:同時接続数でスケール

結果: レイテンシー10ms以下を維持
📰

ニュースメディア

課題: 速報時のアクセス急増

解決策:
• CloudFront:記事と画像を広域配信
• Lambda@Edge:有料会員の認証処理
• ALB:記事配信とコメント機能を分離
• Auto Scaling:アクセス数に応じて段階的増加

結果: 速報時も記事表示が1秒以内

✨ この4層アーキテクチャのメリット

超高速レスポンス
グローバルユーザーに5-20msで応答。従来の10分の1以下のレイテンシー。
🌍
グローバル対応
世界中どこからでも同じ高速体験を提供。地域ごとの最適化も可能。
💪
高可用性
複数AZ配置とAuto Scalingで99.99%の可用性を実現。
📈
弾力性
急激なトラフィック増加にも自動対応。人手による対応不要。
💰
コスト最適化
従量課金とAuto Scalingで、使った分だけの支払い。無駄なし。
🔒
セキュリティ
DDoS保護、WAF統合、SSL/TLS終端でセキュアな通信を確保。
🎯
パーソナライズ
Lambda@Edgeでユーザーごとに最適化されたコンテンツを配信。
🔧
簡単運用
マネージドサービスでインフラ管理の手間を大幅削減。
📊
可観測性
CloudWatchで各層のメトリクスを詳細に監視・分析可能。
🏗️ 基本的な構成例(CloudFormation)
# CloudFrontディストリビューション
CloudFrontDistribution:
  Type: AWS::CloudFront::Distribution
  Properties:
    DistributionConfig:
      Origins:
        - Id: ALBOrigin
          DomainName: my-alb-123456789.ap-northeast-1.elb.amazonaws.com
          CustomOriginConfig:
            OriginProtocolPolicy: https-only
      
      DefaultCacheBehavior:
        TargetOriginId: ALBOrigin
        ViewerProtocolPolicy: redirect-to-https
        Compress: true
        LambdaFunctionAssociations:
          - EventType: viewer-request
            LambdaFunctionARN: arn:aws:lambda:us-east-1:123456789012:function:edge-auth

# Application Load Balancer
ApplicationLoadBalancer:
  Type: AWS::ElasticLoadBalancingV2::LoadBalancer
  Properties:
    Subnets: [subnet-12345, subnet-67890]
    SecurityGroups: [sg-12345678]

# ALBターゲットグループ(パスベースルーティング用)
ApiTargetGroup:
  Type: AWS::ElasticLoadBalancingV2::TargetGroup
  Properties:
    HealthCheckPath: /api/health
    Port: 80
    Protocol: HTTP

WebTargetGroup:
  Type: AWS::ElasticLoadBalancingV2::TargetGroup
  Properties:
    HealthCheckPath: /health
    Port: 80

# Auto Scaling Group
AutoScalingGroup:
  Type: AWS::AutoScaling::AutoScalingGroup
  Properties:
    MinSize: 2
    MaxSize: 10
    DesiredCapacity: 4
    TargetGroupARNs: [!Ref ApiTargetGroup]
    LaunchTemplate:
      LaunchTemplateId: !Ref LaunchTemplate

# スケーリングポリシー
ScalingPolicy:
  Type: AWS::AutoScaling::ScalingPolicy
  Properties:
    PolicyType: TargetTrackingScaling
    TargetTrackingConfiguration:
      PredefinedMetricSpecification:
        PredefinedMetricType: ASGAverageCPUUtilization
      TargetValue: 70.0
💡 構築時のベストプラクティス
1. CloudFrontのキャッシュ戦略を最適化:
• 静的コンテンツ(画像・CSS・JS):TTL 1日以上
• 動的コンテンツ:TTL 0秒でも、圧縮とHTTP/2で高速化
• Cache-Controlヘッダーを適切に設定

2. Lambda@Edgeは軽量に保つ:
• 実行時間は5秒以内に抑える(理想は1秒以内)
• 重い処理はオリジン側で実行
• メモリサイズは128MBから始めて必要に応じて増やす

3. ALBのヘルスチェックを適切に設定:
• 間隔:30秒(トラフィックが多い場合は15秒)
• タイムアウト:5秒
• 正常しきい値:2回連続成功
• 異常しきい値:2回連続失敗

4. Auto Scalingのスケール速度を調整:
• スケールアウト:素早く(1-3分)
• スケールイン:慎重に(10-15分)
• ウォームアップ時間を考慮(アプリ起動時間 + 30秒)

5. 複数AZ配置は必須:
• 最低2つのAZにリソースを配置
• 本番環境は3つのAZ推奨
• Cross-Zone Load Balancingを有効化

6. モニタリングとアラート設定:
• CloudWatch Dashboardで全体を可視化
• レイテンシー、エラー率、スケーリングメトリクスを監視
• SNS通知で異常を即座に検知

7. コスト最適化のポイント:
• CloudFront:Reserved Capacityで最大25%削減
• EC2:Savings PlansやSpot Instancesの活用
• 不要なログやメトリクスは保存期間を短縮

8. セキュリティ強化:
• AWS WAFをCloudFrontに統合
• AWS Shieldでレイヤー3/4のDDoS対策
• セキュリティグループは最小権限の原則で設定

🎓 まとめ

🎡 テーマパーク = AWSグローバルアーキテクチャ

世界中のお客様に最高の体験を提供するには、
4つの層を組み合わせたアーキテクチャが最適解!

🌐
CloudFront

世界中の入口ゲート
最寄りから超高速配信
🎯
Lambda@Edge

賢い振り分けスタッフ
エッジで最適化処理
🚏
ALB

総合案内所
パスベースで振り分け
📈
Auto Scaling

スタッフ自動増減
需要に応じて最適化

🎯 この構成の威力:

⚡ レスポンスタイム: 150ms → 5ms (30倍高速化)
🌍 グローバル対応: 450+拠点 から配信
💪 可用性: 99.99% を実現
💰 コスト削減: 最大70% のトラフィックコスト削減
📈 スケーラビリティ: 10倍のトラフィック も自動対応

テーマパークの運営と同じように、
「お客様を待たせない」「どこからでも快適」「混雑時も安定」
この3つを実現するのがAWSグローバルアーキテクチャ!🎉

さあ、あなたのサービスも世界規模で展開しよう!🚀

Created by SSuzuki1063

AWS SAP Learning Resources