web-dev-qa-db-ja.com

Fargate対Lambda、どちらを使用するのか?

私はサーバーレス環境全体にかなり慣れていないので、Fargate vs Lambdaを使用する場合に頭を包み込もうとしています。

FargateはECSのサーバーレスサブセットであり、Lambdaもサーバーレスですが、イベントによって駆動されることを認識しています。しかし、コンテナに精通しているがAWSやサーバーレスにはあまり慣れていない他の人々に、2つのパラダイムを簡単な言葉で説明したいと思います。

現在、テキストファイルの受信、解析、複数のdbテーブルへの結果の入力を担当する物理サーバーがいくつかあります。私の理解に基づいて、テキストファイルを解析するプロセスはスケジュールによってトリガーされ、長時間実行されず、使用されていないときにランプダウンするため、これはLambdaにより適したユースケースになると思います。

ただし、API呼び出しを受信するサーバーの1つに移植する場合は、常にイメージのインスタンスを少なくとも1つ実行して実行する必要があるため、Fargateを使用することをお勧めします。

コンテナの観点から、そして非常に一般的な観点から言えば、コンテナが次のように設計されている場合は安全です。

docker run <some_input>

それはLambdaの仕事です。

しかし、コンテナが次のようなことを行うように設計されている場合:

docker run --expose 80

それはFargateの仕事です。

これは良い例えですか?

17
janDro

それが良いアナロジーの始まりです。ただし、Lambdaには使用可能なCPUとRAMの点でも制限があり、呼び出しごとの最大実行時間は15分です。したがって、より多くのリソースを必要とするもの、または15分以上実行する必要があるものは、Fargateにより適しています。

また、「常に少なくとも1つのインスタンスを実行する必要がある」ため、Fargateに適していると言う理由がわかりません。 Lambda + API GatewayはAPI呼び出しに最適です。APIGatewayは常にAPI呼び出しを受信する準備ができており、Lambda関数を呼び出して処理します(応答がまだキャッシュされていない場合)。

13
Mark B

Lambdaでは、コンテナを構築、セキュリティ保護、または保守する必要がないことに注意することが重要です。コードを心配するだけです。既に述べたように、Lambdaには最大実行時間制限と3GBのメモリ制限があります(CPUは比例して増加します)。また、散発的に使用される場合は、パフォーマンスを向上させるために事前に(スケジュールに基づいて)暖める必要があります。

Fargateは、定義、保守、およびセキュリティ保護が必要なdockerコンテナを管理します。コードを実行する環境で利用可能なものをさらに制御する必要がある場合は、コンテナ(またはサーバー)を使用する可能性がありますが、これには管理機能が付属しています。また、メモリ/ CPUサイズと実行にかかる時間の長さに関するオプションもあります。

前述のAPIサーバーの場合でも、APIゲートウェイを前に置いてLambdaを呼び出すことができます。

10
Pedro Graber

Markが既に述べたように、Lambda + API Gatewayを使用してラムダ関数をAPIとして公開できます。ただし、ラムダには、関数の実行に関して大きな制限があります。サポートされているプログラミング言語、メモリ消費、実行時間には制限があります(以前の5分から最近15分に増加しました)。これは、AWS Fargateがコンテナの世界とサーバーレス(FaaS)の世界の両方の利点を提供することで支援できる場所です。ここでは、コンテナ(CPU、メモリ要件、IAMポリシーなど)のみを心配し、Fargate起動タイプを選択して残りをAmazon ECSに任せます。 ECSは、適切なインスタンスタイプを選択し、クラスターを管理し、自動スケーリング、最適な使用率を実現します。

3
vkumars

これは正しい例えですが、2つのパラダイムを説明できる包括的なリストではありません。

一般に、Lambdaはサーバーレスアプリケーションにより適しています。その性質は、サービスとしての機能(FaaS)です。単純なタスクを実行するだけで、それだけです。あまり期待しないでください。

サーバーレスモジュールの最初のオプションとして検討する必要があります。しかし、これにはさらに制限と制限があります。モジュールアーキテクチャは、機能的要件と非機能的要件、インフラストラクチャおよびその他の多くの要素から詳細に作成されました。

決定を最小限にするには、次のような制限のリストを確認する必要があります。

  1. 移植性
  2. 環境制御
  3. トリガータイプ
  4. 反応時間
  5. 応答サイズ
  6. 処理時間
  7. メモリ使用量

これらが主な要因です。しかし、このリストには、これらのサーバーレステクノロジー間で考慮すべきすべての要因と制限が含まれていません。

詳細については、この記事をお勧めします https://medium.com/greenm/aws-lambda-or-aws-fargate-the-step-by-step-guide-to-choosing-the-right- technology-925ebcf89b7c

0
okiri