2.2 コンピュート
AWS Compute Services
AWSのコンピュートサービスは、仮想サーバー(EC2)からサーバーレス(Lambda)、コンテナ(ECS/EKS)まで多様な選択肢を提供する。ワークロードの特性に応じた適切な選択が重要である。
EC2(Elastic Compute Cloud)
@startuml
skinparam backgroundColor #FEFEFE
rectangle "VPC" as VPC #F3F4F6 {
rectangle "サブネット" as Subnet #E5E7EB {
rectangle "EC2インスタンス" as EC2 #DBEAFE {
rectangle "AMI\n(OS + アプリ)" as AMI #93C5FD
rectangle "インスタンスタイプ\n(CPU, メモリ)" as Type #93C5FD
rectangle "EBSボリューム\n(ストレージ)" as EBS #60A5FA
rectangle "セキュリティグループ\n(ファイアウォール)" as SG #FCA5A5
}
}
}
rectangle "Elastic IP" as EIP #FEF3C7
rectangle "IAMロール" as IAM #D1FAE5
EIP --> EC2 : 固定IP付与
IAM --> EC2 : 権限付与
note bottom of EC2
起動時に選択:
- AMI
- インスタンスタイプ
- ネットワーク設定
- ストレージ
- セキュリティグループ
end note
@enduml
図1: EC2インスタンスの構成要素
| インスタンスファミリー | 用途 | 例 |
|---|---|---|
| 汎用(M, T) | バランス型、Webサーバー | t3.medium, m6i.large |
| コンピュート最適化(C) | CPU集約型、バッチ処理 | c6i.xlarge |
| メモリ最適化(R, X) | インメモリDB、キャッシュ | r6i.large |
| GPU(P, G) | 機械学習、グラフィック | p4d.24xlarge |
Lambda(サーバーレス)
@startuml
skinparam backgroundColor #FEFEFE
actor "イベントソース" as Event
rectangle "AWS Lambda" as Lambda #D1FAE5 {
rectangle "関数コード" as Code #6EE7B7
rectangle "ランタイム\n(Python, Node.js等)" as Runtime #6EE7B7
rectangle "実行環境\n(自動スケール)" as Env #34D399
}
database "DynamoDB" as DDB
storage "S3" as S3
queue "SQS" as SQS
Event --> Lambda : トリガー
Lambda --> DDB : 読み書き
Lambda --> S3 : ファイル操作
Lambda --> SQS : メッセージ送信
note bottom of Lambda
特徴:
- サーバー管理不要
- 自動スケーリング
- ミリ秒単位課金
- 最大15分実行
end note
@enduml
図2: Lambda実行モデル
Lambdaはイベント駆動型のサーバーレスコンピューティングサービスである。コードをアップロードするだけで実行環境が自動的にプロビジョニングされ、リクエストに応じてスケールする [1]。
Lambda vs EC2の選択基準
Lambda: 短時間処理、イベント駆動、変動負荷
EC2: 長時間処理、常時稼働、カスタム環境必要
Lambda: 短時間処理、イベント駆動、変動負荷
EC2: 長時間処理、常時稼働、カスタム環境必要
コンテナサービス
@startmindmap skinparam backgroundColor #FEFEFE * AWSコンテナ ** ECS *** AWS独自オーケストレーション *** シンプルな設定 *** AWS統合が容易 ** EKS *** マネージドKubernetes *** K8s互換 *** マルチクラウド移植性 ** 起動タイプ *** EC2 **** 自前でインスタンス管理 **** コスト最適化可能 *** Fargate **** サーバーレスコンテナ **** インフラ管理不要 **** タスク単位課金 @endmindmap
図3: AWSコンテナサービスの選択肢
| サービス | 特徴 | 選択基準 |
|---|---|---|
| ECS + EC2 | AWS独自、フル制御 | AWS中心、コスト最適化 |
| ECS + Fargate | AWS独自、サーバーレス | 運用負荷軽減、変動負荷 |
| EKS + EC2 | K8s互換、フル制御 | K8sスキル活用、移植性 |
| EKS + Fargate | K8s互換、サーバーレス | K8s + 運用負荷軽減 |
出典
[1] AWS. AWS Lambda Documentation. https://docs.aws.amazon.com/lambda/
[2] AWS. Amazon EC2 Instance Types. https://aws.amazon.com/ec2/instance-types/
[2] AWS. Amazon EC2 Instance Types. https://aws.amazon.com/ec2/instance-types/
発展学習
→ EC2 Auto Scaling
→ Lambda Best Practices
→ EC2 Auto Scaling
→ Lambda Best Practices