投稿日 2023.02.05

AWS でサーバーレスのサービスを使うなら? AWS Lambda vs AWS Fargate

  • AWS
  • サーバーレス

今回は、AWS のサーバーレスサービスに関する内容だね!

この記事を読めば、どのサーバーレスのサービスを使えば良いかわかりますね!

本記事で学べること

・Lambda、Fargateの概要
・サーバーレスの概念
・各種サービスの長所・短所やユースケース

はじめに

AWSは様々なコンピューティングサービスを提供しています。これは、アプリケーション開発にとってよいことだと思えますが、開発初心者にとっては混乱の元になってしまうでしょう。
そこで、本記事では、AWSが提供する2つのサーバーレスのサービス、AWS LambdaとAWS Fargateについて、

1. コストパフォーマンス

2. 柔軟性

3. 学習コスト

の観点から、詳しく解説していきます。

本記事の内容を理解するには、サーバーレスに関する知識が必要となるので、まず、サーバーレスのサービスがどのようなものなのかを説明しようと思います。

サーバーレスサービスとは、サーバーハードウェアやインフラの管理をサービスプロバイダーが行ってくれるクラウドコンピューティングサービスです。ユーザーは、サーバーインスタンスやストレージ容量などのリソースを必要に応じて使用し、使用した分だけ課金されます。
サーバレスサービスには、以下のメリットがあります。

・インフラの管理が不要で、コストを削減できます。

・開発に集中でき、生産性を向上させることができます。

・スケーラビリティに優れており、急激なトラフィックの増加にも対応できます。

サーバレスサービスは、Webアプリケーション開発、モバイルアプリケーション開発、データ分析、IoTなど、さまざまな用途に使用されています。

AWS Lambda とは

AWS Lambdaは、AWSが提供するサーバーレスコンピューティングサービスです。サーバーやクラスターについて心配することなく、コードを実行できます。AWS Lambda は、イベントが発生したときにコードを実行する環境を提供します。イベントには、HTTP リクエスト、メッセージキュー、データベースの変更など、さまざまなものがあります。AWS Lambda は、ウェブアプリケーション、バックエンドサービス、データ分析など、さまざまな目的に使用できます。
AWS Lambda のメリットは、次のとおりです。

・サーバーやクラスターを管理する必要がない

・スケーラブルで、イベントが発生するたびに自動的にコードを実行できる

AWS Lambda を使えば、サーバーやクラスターを管理する必要がなく、サーバへの負荷対策も容易に行えます。

Amazon Fargateとは

AWS Fargate は、コンテナを実行するために必要なインフラストラクチャを管理する必要がないように設計されたサーバーレスコンピューティングサービスです。コンテナを実行するために必要なインフラストラクチャをAWSが管理するので、ユーザーはコンテナの作成と管理のみに集中することができます。
Fargate は、Amazon ECS1 と統合されており、ECS を使用してコンテナを作成、デプロイ、スケーリング、管理することができます。ウェブアプリケーション、バックエンドサービス、データ分析など、さまざまな目的で使用されています。
AWS Fargate のメリットは、次のとおりです。

・コンテナを実行するために必要なインフラストラクチャを管理する必要がない

・スケーラブルで、負荷に応じてコンテナの数を自動的に調整できる

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 は大規模な処理を行うときに利用されます。具体的には、大規模なウェブアプリケーションを開発するときやコンテナワークロードの実行とスケーリングを行うとき、Pass2 などのプラットフォーム向けのマイクロサービスバックエンドを利用するときなどに使われます。また、先述したように、Docker を使う場合にも利用されます。

まとめ

本記事では、AWS が提供するサーバーレスサービス、AWS Lambda と AWS Fargate について解説しました。
コストパフォーマンスでは、必要なときにしか起動しない Lambda が、柔軟性では、実行時間に制限がない Fargate が優れています。また、学習コストの観点ではLambda の方が低いといえます。
AWS を使った開発に自信がない方は、まず初めに、コストパフォーマンスが高く、学習コストが低い Lambda を使ってみると良いでしょう。そのあとで、Fargate にも挑戦してみてください。

語句の説明

  1. Dockerを管理するサービスのこと。Amazon ECSを使うと、クラスターインフラストラクチャのインストール、運用などが不要になる。
  2. Platform as a service の略で、サービスとしてのプラットフォーム。クラウド内の完全な開発及びデプロイの環境であり、単純なクラウドベースのアプリから高度なクラウド対応型エンタープライズアプリケーションまで、あらゆるものを実現できるリソースがそろっている。