投稿日 2023.02.05
AWS Lambda vs AWS Fargate
- AWS
今回は、AWSに関する内容だね!
どういう内容でしょうか?
目次
はじめに
AWSは様々なコンピューティングサービスを提供しています。これは、アプリケーション開発にとってよいことだと思えますが、開発初心者にとっては混乱の元になってしまうでしょう。そこで、本記事では、AWSが提供する2つのサーバーレスのサービス、AWS LambdaとAWS Fargateについて、1. コストパフォーマンス、2. 柔軟性、3. 学習コストの観点から、詳しく解説していきます。
想定する読者
本記事では、AWSコンピューティングサービスを利用して、アプリケーション開発を行いたいエンジニアやエンジニア志望の方を対象としています。
サーバレスのサービスとは
サーバーレスのサービスとは、サーバーの構築や管理を提供会社が行ってくれるクラウドサービスのことをいいます。このサービスを利用することで、開発者は、インフラストラクチャを気にすることなく、コーディングに専念することができます。
AWS Lambdaとは
AWS Lambdaとは、サーバーレスのコンピューティングサービスのことです。これを利用することで、コーディングのみに専念した効率的な開発を行うことができます。
Amazon Fargateとは
AWS Fargateとは、Amazon ECSやAmazon EKSで使うことのできる、コンテナ向けサーバーレスコンピューティングサービスのことです。AWS Lambdaと同様、AWS Fargateを利用することで、インフラストラクチャを気にする必要がなくなります。
比較
コストパフォーマンス
- AWS Lambdaは、必要なときにしか起動しないため、料金は使用時間のみで決まります。さらに、毎月、リクエスト100万件は無料枠で提供されます。
- AWS Fargateは、最低実行数を設定するため、実行に対して料金が発生します。
コストパフォーマンスの観点では、Lambdaの方が良いです。
柔軟性
- Lambdaの実行時間は15分以内に制限され、開発言語も、nodeJS、 Python、 Go、 Java、 Ruby、Net、 C#に制限されます。ただし、開発で必要な言語は基本的にそろっていると考えて良いです。
- Fargateの実行時間には制限がありません。また、コンテナを使用するため自由度が
高く、開発言語にも制限がありません。
柔軟性を重視するなら、Fargateがおすすめです。
学習コスト
- Lambdaを使う上では、実行するOSや制約のみを理解すれば大丈夫です。
- Fargateは、ECS、Dockerについての理解が必要となります。しかし、アプリケー
ションのアーキテクチャが把握しやすいというメリットはあります。
学習コストは、Lambdaの方が低いといえます。
ユースケース
AWS Lambdaは小規模な処理を行うときに、他のサービスと組み合わせて利用されます。具体的には、API Gatewayと組み合わせたAPIシステムやAmazon EventBridgeと組み合わせたcronシステム、SQSと組み合わせた非同期処理に利用されることが多いです。APIシステムは、主にAPIの管理や実行を容易にしてくれる仕組みを指し、Amazon EventBridgeと組み合わせたcronシステムは、1日に1回の夜間のデータベース定期メンテナンスや1時間ごとに売上の集計をコンピュータに自動で行わせるための仕組みです。また、SQSと組み合わせた非同期処理は、ECサイトのクレジットカード決済処理に使われます。
一方、AWS Fargateは大規模な処理を行うときに利用されます。具体的には、大規模なウェブアプリケーションを開発するときやコンテナワークロードの実行とスケーリングを行うとき、Passなどのプラットフォーム向けのマイクロサービスバックエンドを利用するときなどに使われます。また、先述したように、Dockerを使う場合にも利用されます。
まとめ
本記事では、AWSが提供するサーバーレスサービス、AWS LambdaとAWS Fargateについて解説しました。コストパフォーマンスでは、必要なときにしか起動しないLambdaが、柔軟性では、実行時間に制限がないFargateが優れています。また、学習コストの観点ではLambdaの方が低いといえます。AWSを使った開発に自信がない方は、まず初めに、コストパフォーマンスが高く、学習コストが低いLambdaを使ってみると良いでしょう。そのあとで、Fargateにも挑戦してみてください。
語句の説明
Amazon ECS: Dockerを管理するサービスのこと。Amazon ECSを使うと、クラスターインフラストラクチャのインストール、運用などが不要になる。
Docker: コンテナサービスのこと。
Pass(Platform as a service): サービスとしてのプラットフォーム。クラウド内の完全な開発及びデプロイの環境であり、単純なクラウドベースのアプリから高度なクラウド対応型エンタープライズアプリケーションまで、あらゆるものを実現できるリソースがそろっている。