実践LESSON 17

この教材で学ぶこと 可用性・コスト・組織設計を比較し、構成を選びます。

AWS — SAA 以上の設計・運用知識

前提知識: VPC・EC2・S3・IAMの基礎。本教材では設計判断・コスト・運用を扱います。


1. SAA を超えた設計判断

ECS vs EKS — 選び方

観点 ECS (Fargate) EKS
学習コスト 低い(AWS 固有) 高い(K8s 知識必要)
運用コスト 低い 高い(コントロールプレーン $0.10/h)
ポータビリティ AWS のみ どのK8sクラスターでも動く
エコシステム AWS 統合が充実 K8s エコシステム(Helm等)
採用基準 AWS に集中・チームが小さい マルチクラウド・K8s 標準化済み

Lambda vs Fargate vs EC2

Lambda:
  ✅ イベント駆動・短時間処理(15分以内)
  ✅ リクエスト数が読めない(ゼロスケール)
  ❌ コールドスタート、ステートレス
  例: S3イベント処理、API Gateway バックエンド

Fargate:
  ✅ 常時稼働のコンテナ、サーバー管理不要
  ✅ 秒単位課金(EC2より柔軟)
  ❌ EC2 より高コスト(同スペックで約2倍)
  例: Web API、バッチ処理

EC2:
  ✅ 最大コントロール、コスト最適化
  ✅ Reserved Instance で大幅割引(最大72%)
  ❌ サーバー管理が必要
  例: 長時間・安定したワークロード、特殊なインスタンスタイプ

2. コスト最適化(SAP でも重要)

Reserved Instance vs Savings Plans

タイプ 割引率 柔軟性 適用対象
Standard RI 最大72% 低(変更不可) 特定インスタンスタイプ
Convertible RI 最大66% 中(変更可) インスタンスタイプ変更可
Compute Savings Plans 最大66% 高 EC2/Lambda/Fargate
EC2 Instance Savings Plans 最大72% 中 特定ファミリー

コスト可視化・削減の実践

# Cost Explorer API で月次コストを取得
aws ce get-cost-and-usage \
  --time-period Start=2026-02-01,End=2026-03-01 \
  --granularity MONTHLY \
  --metrics BlendedCost \
  --group-by Type=DIMENSION,Key=SERVICE

# 未使用リソースの検出
aws ec2 describe-instances \
  --filters "Name=instance-state-name,Values=stopped" \
  --query 'Reservations[].Instances[].[InstanceId,Tags[?Key==`Name`].Value|[0],LaunchTime]' \
  --output table

# Trusted Advisor で推奨確認(Businessサポート以上で全チェック)
aws support describe-trusted-advisor-checks --language ja

3. マルチアカウント設計(Organizations)

Root
├── Management Account(請求・ポリシー管理のみ)
├── Security OU
│   ├── Log Archive Account(CloudTrail, Config logs)
│   └── Security Tooling Account(SecurityHub, GuardDuty)
├── Infrastructure OU
│   └── Shared Services Account(DNS, Directory Service)
└── Workloads OU
    ├── Production Account
    └── Development Account

Service Control Policy (SCP)

// 東京リージョン以外での操作を禁止(Root OUに適用)
{
  "Version": "2012-10-17",
  "Statement": [{
    "Effect": "Deny",
    "Action": "*",
    "Resource": "*",
    "Condition": {
      "StringNotEquals": {
        "aws:RequestedRegion": ["ap-northeast-1"]
      },
      "ArnNotLike": {
        "aws:PrincipalARN": [
          "arn:aws:iam::*:role/OrganizationAccountAccessRole"
        ]
      }
    }
  }]
}

4. 可用性設計パターン

Multi-AZ vs Multi-Region

Multi-AZ(高可用性):
  - 同一リージョン内の別データセンター
  - RDS Multi-AZ: スタンバイへの自動フェイルオーバー(60-120秒)
  - 99.99% SLA が目安
  - ほぼ全てのサービスで推奨

Multi-Region(DR対応):
  - 地域災害・リージョン障害への対応
  - RTO/RPO 要件が厳しい場合
  - コストが大幅増
  - Route53 + CloudFront でトラフィック切り替え

RDS のフェイルオーバーを理解する

Primary (AZ-a)          Standby (AZ-c)
    ↓ 書き込み              ↓ 同期レプリケーション
   DB データ  ─────────>  DB データ(ミラーリング)

フェイルオーバー時:
1. Primary が障害
2. DNS が Standby に切り替わる(同じエンドポイントURL)
3. アプリは再接続するだけ

5. オブザーバビリティ(Observability)三本柱

Metrics(メトリクス)
  └── CloudWatch Metrics, Container Insights
  └── 例: CPU使用率, リクエスト数, エラー率

Logs(ログ)
  └── CloudWatch Logs, OpenSearch
  └── 例: アプリログ, アクセスログ, 監査ログ

Traces(トレース)
  └── X-Ray, OpenTelemetry
  └── 例: マイクロサービス間のレイテンシ追跡
# Lambda での X-Ray トレーシング
from aws_xray_sdk.core import xray_recorder, patch_all
patch_all()  # boto3, requests 等を自動計装

@xray_recorder.capture('process_order')
def process_order(order_id: str):
    # このセグメントがX-Rayのトレースに記録される
    ...

6. よく出る SAP 試験の設計問題

大量データの転送

  • オンプレ → AWS: AWS DataSync(ネットワーク転送)/ Snowball Edge(物理デバイス)
  • 閾値: 10Gbps 以下なら Direct Connect / 100TB 超なら Snowball 検討

Blue/Green デプロイ

Blue(現行):  ALB → Target Group Blue  → EC2/ECS Blue
Green(新版):                           → EC2/ECS Green

切り替え: ALB のリスナールールを Green に変更
ロールバック: Blue に戻すだけ(即時)

イベント駆動アーキテクチャ

S3 Upload
  → S3 Event Notification
  → SQS(バッファリング・デカップリング)
  → Lambda(処理)
  → SNS(通知)
  → DynamoDB(結果保存)

ポイント: SQS でバッファリングすると Lambda の同時実行数を制御できる

🔗 次のステップ