投稿日 2023.02.01
AWS Lambda vs Amazon ECS vs AWS Batch
- AWS
今回は、AWSに関する内容だね!
どういう内容でしょうか?
目次
はじめに
AWSは様々なコンピューティングサービスを提供しています。これは、アプリケーション開発にとってよいことだと思えるが、開発初心者にとっては混乱の元にもなります。そこで本記事では、awsが提供する3つのサービス、AWS Lambda、AWS ECS、AWS Batchについて、1. コストパフォーマンス、2. 柔軟性、3. 機能性の観点から、詳しく解説します。
想定する読者
本記事では、AWSコンピューティングサービスを利用して、アプリケーション開発を行いたいエンジニアやエンジニア志望の方を対象としています。
サーバレスのサービスとは
サーバーレスのサービスとは、サーバーの構築や管理を提供会社が行ってくれるクラウドサービスのことをいいます。このサービスを利用することで、開発者は、インフラストラクチャを気にすることなく、コーディングに専念することができます。
AWS Lambdaとは
AWS Lambdaとは、サーバーレスのコンピューティングサービスのことです。これを利用することで、コーディングのみに専念した効率的な開発を行うことができます。
Amazon ECSとは
Amazon ECSとは、複数のコンテナを一元的に管理するサービスのことです。ECSを用いることで、コンテナを効率的に管理することができます。
AWS Batchとは
AWS ECSやAmazon EC2といった、AWS上の他のサービスをジョブ内容に合わせて利用し、その管理をユーザーが行うことなくバッチ処理を実行できるサービスのことです。
比較
コストパフォーマンス
- AWS Lambdaは、必要なときにしか起動しないため、料金は使用時間のみで決まります。さらに、毎月、リクエスト100万件は無料枠で提供されます。
- Amazon ECSは、EC2インスタンスを起動している時間も課金されます。
- AWS Batchは、ECS、つまりコンピューティングリソース分の料金がかかります。
コストパフォーマンスの観点では、Lambdaの方が良いです。
柔軟性
- Lambdaの実行時間は15分以内に制限され、開発言語も、nodeJS、 Python、 Go、 Java、 Ruby、Net、 C#に制限されます。ただし、開発で必要な言語は基本的にそろっていると考えて良いです。
- ECSやBatchは、必要に応じてサーバーのスペックを自由に選ぶことができます。
柔軟性の観点では、ECSとBatchが優れているといえます。
機能性
- Lambdaは処理時間が15分を過ぎたら強制的に停止されます。
- ECSは15分以上の処理ができます。
- Batchは15分以上の処理ができ、さらにAmazon ECSよりも大規模な処理に適しています。
機能性の観点では、ECSとBatchがおすすめです。
ユースケース
AWS Lambdaは小規模な処理を行うときに、他のサービスと組み合わせて利用されます。具体的には、API Gatewayと組み合わせたAPIシステムやAmazon EventBridgeと組み合わせたcronシステム、SQSと組み合わせた非同期処理に利用されることが多いです。APIシステムは、主にAPIの管理や実行を容易にしてくれる仕組みを指し、Amazon EventBridgeと組み合わせたcronシステムは、1日に1回の夜間のデータベース定期メンテナンスや1時間ごとに売上の集計をコンピュータに自動で行わせるための仕組みです。また、SQSと組み合わせた非同期処理は、ECサイトのクレジットカード決済処理に使われます。
Amazon ECSは長い時間がかかる大規模な処理を行うときに利用されます。具体的には、マイクロサービスやバッチジョブなどに利用されます。マイクロサービスとは、複雑なアプリケーションを単純な複数のサービスに分け、それぞれ独立して開発を進めていく手法であり、バッチジョブとは、事前に定義され、まとめて処理されるタスクの集まりのことをいいます。
AWS Batchは大規模かつECSのサービスクォータを超える数の並列処理を要するバッチ処理を行う場合に利用されます。具体的には、ライフサイエンスや計算化学、臨床モデリングなどの分野や金融サービスにおける取引に関するデータ処理や機密情報の分析に利用されます。Batchは、一般的な企業が扱うにはオーバースペックであるため、主に大企業や研究機関で活躍します。
まとめ
本記事では、AWSが提供するコンピューティングサービスである、AWS Lambda、Amazon ECS、AWS Batchについて解説しました。コストパフォーマンスでは、必要なときにしか起動しないAWS Lambdaが、柔軟性では、実行時間に制限がないECSとBatchが優れています。また、機能性の観点では、ECSあるいはBatchが優れているといえるでしょう。ただし、Batchは一般的な開発ではオーバースペックであるということを頭に入れておいてください。AWSを使った開発が初めての方は、まず初めに、コストパフォーマンスが高いLambdaを使い、慣れてきたら、ECSも使ってみると良いでしょう。
語句の説明
Amazon EC2: 仮想サーバを構築できるサービス。
サービスクォータ: AWSのサービスごとに定められた制限のこと。
インスタンスタイプ: CPUやメモリを始めとしたサーバーのスペックのこと。インスタンスタイプを変えるとCPUやメモリの数値が変わり、サーバーのスペックが変わる。