type
status
date
slug
summary
tags
category
icon
password
理論
1. AWS Lambdaとその制約
AWS Lambdaはサーバーレスコンピューティングサービスで、コードを実行するためにインフラを管理する必要がありません。Lambdaは、短期間のタスクに非常に適しており、最大15分の実行時間制限があります。したがって、実行時間が20分に及ぶアプリケーションには不向きです。Lambdaの主な利点は、リソースのスケーリングが自動的に行われること、つまり高トラフィックや多くのリクエストにも柔軟に対応できる点です。
適用ケース
- ショートライフサイクルの処理(例:データの変換や小規模なAPI呼び出し)。
- イベントドリブンなアプリケーション(例:SNSトピックやS3バケットの変更をトリガーにする処理)。
2. AWS Batchとバッチ処理
AWS Batchは、大規模なバッチ処理を管理するためのサービスで、特に長時間の計算集約的なジョブに適しています。AWS Batchでは、コンピュータリソース(EC2インスタンスやFargate)を動的にスケールし、バッチジョブの管理を行います。ただし、非常に軽量で短期間の実行が要求されるアプリケーションに対しては、AWS Batchはオーバーヘッドが大きく、コストがかさむ可能性があります。
適用ケース
- 高度な計算リソースを必要とするジョブ(例:シミュレーションやデータ分析)。
- 定期的なバッチジョブ(例:データベースのバックアップやデータ集計)。
3. AWS Fargateとコンテナ化アプリケーション
AWS Fargateは、コンテナ化されたアプリケーションをサーバーレスで実行するためのサービスです。Fargateは、コンテナの管理やインフラの設定なしで、アプリケーションをスケーラブルに実行できます。シングルスレッドのCPU集中的なアプリケーションには最適で、リソース(CPUやメモリ)を細かく指定して実行できます。また、Amazon EventBridgeを使用して、指定したスケジュールでコンテナを起動することができます。
適用ケース
- 短時間でのコンテナ実行(例:軽量なETLジョブやAPIバックエンド)。
- イベント駆動型のタスク(例:定期的なジョブ実行や通知処理)。
4. EC2スポットインスタンスとコスト効率
Amazon EC2スポットインスタンスは、余剰容量を利用して提供されるインスタンスです。通常のオンデマンドインスタンスよりもコストが安く、長期間の計算処理を行うのに最適ですが、インスタンスは予告なく停止する可能性があるため、信頼性が低くなります。特に高い可用性や一貫性が求められるアプリケーションには不向きです。
適用ケース
- コストを最適化したいが、ジョブが停止しても問題ない場合(例:バックグラウンドの非重要な計算)。
- 高い可用性が不要な長時間実行するバッチ処理。
5. Amazon EventBridge(CloudWatch Events)によるスケジューリング
Amazon EventBridge(旧CloudWatch Events)は、AWSサービスを使ったイベントドリブンアーキテクチャの構築を簡単にするサービスです。スケジュールされたタスクを設定することで、定期的にアクションを実行できます。例えば、FargateタスクやLambda関数を4時間ごとに起動することができます。
適用ケース
- 定期的なタスクの実行(例:データ転送、ETL処理)。
- イベントに基づくトリガー(例:特定の時間やAWSリソースの変更に応じたアクション)。
ETL処理
ETL処理とは、Extract(抽出)、Transform(変換)、Load(ロード) の3つのプロセスから成るデータ処理の一連の流れを指します。主に、異なるソースからのデータを統合し、分析や報告のために整形してデータベースやデータウェアハウスにロードするために使用されます。ETL処理は、データウェアハウスやデータ分析システムの構築において重要な役割を果たします。
実践
略
一問道場
質問 #134
トピック 1
ある会社は、Amazon EC2 Linuxインスタンス上でプロプライエタリなステートレスETLアプリケーションを実行しています。このアプリケーションはLinuxバイナリで、ソースコードは変更できません。アプリケーションはシングルスレッドで、2GBのRAMを使用し、CPU集中的です。アプリケーションは4時間ごとに実行され、最大20分間実行されます。ソリューションアーキテクトは、ソリューションのアーキテクチャを見直したいと考えています。
ソリューションアーキテクトはどの戦略を使用すべきですか?
A. AWS Lambdaを使用してアプリケーションを実行します。Amazon CloudWatch Logsを使用してLambda関数を4時間ごとに呼び出します。
B. AWS Batchを使用してアプリケーションを実行します。AWS Step Functionsステートマシンを使用して、AWS Batchジョブを4時間ごとに呼び出します。
C. AWS Fargateを使用してアプリケーションを実行します。Amazon EventBridge(Amazon CloudWatch Events)を使用してFargateタスクを4時間ごとに呼び出します。
D. Amazon EC2スポットインスタンスを使用してアプリケーションを実行します。AWS CodeDeployを使用して、4時間ごとにアプリケーションをデプロイして実行します。
解説
この質問では、あるETLアプリケーションの実行環境を最適化するために、適切なAWSサービスを選択する必要があります。アプリケーションの特徴としては、シングルスレッドでCPU集中的な処理を行い、2GBのRAMを使用し、最大20分間の実行時間を持つことが挙げられます。また、4時間ごとに実行されるという条件も重要です。
各選択肢を評価してみましょう。
A. AWS Lambdaを使用してアプリケーションを実行します。Amazon CloudWatch Logsを使用してLambda関数を4時間ごとに呼び出します。
- 問題点: AWS Lambdaは短期間のタスクを処理するのに適しており、最大実行時間が15分に制限されています。このアプリケーションは最大20分間実行されるため、Lambdaでは処理できません。このため、この選択肢は適切ではありません。
B. AWS Batchを使用してアプリケーションを実行します。AWS Step Functionsステートマシンを使用して、AWS Batchジョブを4時間ごとに呼び出します。
- 問題点: AWS Batchはバッチ処理に適したサービスであり、長時間の実行やリソース管理に適しています。しかし、このアプリケーションは非常に軽量で、最大20分間の処理時間のため、AWS Batchのオーバーヘッドを引き起こす可能性があり、コストやパフォーマンス面で効率的とは言えません。このため、最適な選択肢ではありません。
C. AWS Fargateを使用してアプリケーションを実行します。Amazon EventBridge(Amazon CloudWatch Events)を使用してFargateタスクを4時間ごとに呼び出します。
- 適切な選択肢: AWS Fargateは、コンテナ化されたアプリケーションをサーバーレスで実行するためのサービスです。シングルスレッドのアプリケーションであっても、Fargateは適切にリソースを管理できます。また、4時間ごとに実行するためのスケジューリングを、Amazon EventBridge(以前のCloudWatch Events)で行うことができます。これにより、アプリケーションを効率的に実行することができます。
D. Amazon EC2スポットインスタンスを使用してアプリケーションを実行します。AWS CodeDeployを使用して、4時間ごとにアプリケーションをデプロイして実行します。
- 問題点: EC2スポットインスタンスはコスト効率的ですが、突然停止する可能性があり、信頼性が低くなります。さらに、CodeDeployを使用して4時間ごとにデプロイするのは過剰な管理を必要とし、他の方法に比べて手間がかかります。このため、Fargateの方がより簡単で効率的です。
結論:
最適な選択肢は C です。AWS Fargateを使用してアプリケーションを実行し、Amazon EventBridgeを使用してスケジュールされたタスクを効率的に実行する方法が、最も適しています。FargateはシングルスレッドでCPU集中的なアプリケーションに適しており、リソース管理が簡単で、スケジュール設定も容易です。
- 作者:みなみ
- 链接:https://tangly1024.com/資格勉強/16ed7ae8-88e2-8051-a027-c511c0486d04
- 声明:本文采用 CC BY-NC-SA 4.0 许可协议,转载请注明出处。
相关文章