PMする上で必要になってきたのでおさらい
AWS Lambdaとは?
AWS Lambdaは、コードを実行するためのサービス。
- 目的: イベント駆動型の処理を行う。
-
特徴:
- コードの実行: 特定のイベントが発生したときに、登録されたコードを実行します(例: S3にファイルがアップロードされたら画像をリサイズ)。
- サーバーレス: サーバーを用意する必要がなく、AWSが自動でリソースを管理。
- 短時間の処理: 最大15分の処理を実行。
ユースケース
- ファイル処理(画像のリサイズ、動画の変換)。
- APIのバックエンドロジック。
- 定期的なバッチ処理。
Terraformとは?
Terraformは、インフラをコードとして管理するツール(IaC: Infrastructure as Code)。
- 目的: クラウドリソース(サーバー、データベース、ネットワークなど)の作成、更新、削除をコードで管理する。
-
特徴:
- インフラ管理: AWS、GCP、Azure、オンプレミスなどのインフラを統一されたコードで管理可能。
- 状態管理: 作成済みのリソースを追跡し、変更や削除を容易に管理。
- 宣言的アプローチ: 「この状態にしたい」というゴールを記述し、Terraformがその状態にする。
ユースケース
- AWSリソース(EC2、RDS、S3など)のセットアップ。
- マルチクラウド環境の一括管理。
- インフラ環境のバージョン管理。
AWS LambdaとTerraformの主な違い
項目 | AWS Lambda | Terraform |
---|---|---|
目的 | イベント駆動でコードを実行 | クラウドインフラのコード化と管理 |
対象 | プログラムロジック(Python、Node.jsなど) | AWSリソースやクラウドインフラ全般 |
利用場面 | 短時間の処理やAPIのバックエンド | サーバー、ネットワーク、サービスのセットアップ |
操作の種類 | 関数の実行(処理) | リソースの作成、変更、削除 |
スコープ | アプリケーションレベル | インフラ全体 |
コードの役割 | 実際の処理ロジック | インフラ状態の宣言 |
具体的な例
AWS Lambdaの役割
- シナリオ: S3に画像がアップロードされたら、その画像をリサイズする。
-
Lambdaの動作:
- S3にアップロードイベントが発生。
- Lambdaがトリガーされ、リサイズ処理を実行。
- リサイズされた画像を別のS3バケットに保存。
Terraformの役割
- シナリオ: S3バケットを作成し、そのバケットをLambdaで利用するよう設定する。
-
Terraformの動作:
- S3バケットの構造をコードで記述。
- TerraformがAWSにAPIリクエストを送り、S3バケットを作成。
- バケットが作成され、Lambdaと連携するための設定が完了。
AWS LambdaとTerraformの補完的な使い方
これら2つのツールは対立するものではなく、補完的なもの。
-
Terraformでインフラを構築
- Lambda関数、S3バケット、API Gatewayをコードでセットアップ。
- 必要なAWSリソースを自動的に作成。
-
Lambdaでロジックを実行
- Terraformで構築したリソースを活用し、Lambdaが実際の処理(例: 画像リサイズ、APIレスポンス生成)を行う。
感想
一年前に先輩エンジニアがテラフォームを使っていたのを見ていたので、違いについて気になったからすっきりした。