AWSのサーバレス「AWS Lambda」と「AWS Fargate」の違いとは?:用途に応じたサーバレスの選択肢
「AWS Lambda」と「AWS Fargate」は、アプリケーションのデプロイに特化したAWSのサーバレスサービスだ。それぞれの特徴を比較する。
サーバレスコンピューティングサービスは、アプリケーションの実行に必要なインフラの管理をクラウドベンダー側に任せることで、ユーザーはサーバの構築や運用を意識せずに処理の実行に集中できる仕組みだ。Amazon Web Services(AWS)には、「AWS Lambda」と「AWS Fargate」という2種類のサーバレスコンピューティングサービスがある。それぞれの特徴を比較する。
「AWS Lambda」「AWS Fargate」の違いとは
併せて読みたいお薦め記事
サーバレスをもっと知る
AWS Lambda
AWS Lambdaは、ユーザーがあらかじめ用意したプログラムをアップロードするだけで、指定した条件に応じて自動的に実行できるサービスだ。例えば、ファイルのアップロードやデータベースの更新といったイベントを「トリガー」として定義することで、該当する処理をLambdaが自動で実行してくれる。
このサービスは、内部的にはAWSの仮想マシンサービス「Amazon Elastic Compute Cloud」(Amazon EC2)上で動作する。ただし、ユーザーはEC2のように仮想サーバの構成や運用を意識する必要はない。インフラの管理はすべてAWS側が担うため、利用者はコードの開発と実行条件の設定だけに集中できる。
AWS Fargate
AWS Fargateは、コンテナ化されたアプリケーションをAWS上でデプロイできるサービスだ。開発者は、アプリケーションをコンテナとしてパッケージ化し、必要な設定情報(環境変数など)を用意するだけでよい。Fargateがインフラの構築や、コンテナの管理に必要な「Kubernetes」などのオーケストレーションツールのセットアップを自動化するため、ユーザーは基盤を意識することなくアプリケーションのデプロイに集中できる。
AWS LambdaとAWS Fargateはいずれも、サーバレスコンピューティングの考え方に基づき、アプリケーションを効率よく実行することを目的としたサービスだ。ただし、AWS Lambdaは「関数単位の実行」に特化し、短時間の軽量な処理に向いている一方、AWS Fargateは「コンテナ単位での実行」を前提としており、より複雑で長時間動作するアプリケーションに適している。
これら2つの違いを理解して使い分けることで、用途に合った最適なサーバレス環境を選択できる。
AWS LambdaとAWS Fargateの特徴
AWS LambdaとAWS Fargateの違いや特徴は次の通り。
AWS Lambda
AWS Lambdaは、さまざまな種類のアプリケーションに対応できる汎用(はんよう)的なサーバレスコンピューティングサービスだ。イベント駆動型アーキテクチャを採用しており、特定のイベントや条件(トリガー)が発生すると、あらかじめ登録されたLambda関数が自動的に実行される。
Lambda関数は、従来のコードだけでなく、コンテナイメージから作成することも可能だ。ただし、AWS Lambdaはコンテナベースの実行に特化したサービスではなく、あくまでイベントへの迅速な応答に最適化されている。そのため、AWS Lambdaはファイルの処理、HTTPリクエストへの応答、データベースの変更検知など、短時間かつ軽量なワークロードに適している。
AWS Fargate
AWS Fargateは、コンテナ管理サービス「Amazon Elastic Container Service」(Amazon ECS)や、「Amazon Elastic Kubernetes Service」(Amazon EKS)と連携して、コンテナ化されたアプリケーションを実行するサーバレスコンピューティングサービスだ。
AWS Fargateは、アプリケーションをコンテナとしてパッケージ化してデプロイすることに特化しており、一度デプロイすれば、継続的にワークロードを実行できる。開発者はサーバやクラスタのプロビジョニング(構築・管理)を気にすることなく、アプリケーションに集中できる点が大きな利点だ。
特に、長時間稼働する複雑なワークロードや、高い信頼性とスケーラビリティ(需要に応じた拡張性)が求められるケースにおいて、AWS Fargateは有力な選択肢となる。
応答時間と実行時間
AWS LambdaとAWS Fargateは、それぞれ異なるアーキテクチャに基づいて動作しており、この違いがアプリケーションの応答速度やスケーリング特性に直接影響する。
AWS Lambda
AWS Lambdaでは、関数が一定時間使用されていない状態から再度呼び出されると、「コールドスタート」と呼ばれる初期化処理が発生する。これは実行環境を一から立ち上げるプロセスであり、最初のリクエストの応答に遅延が生じる要因となる。
そのため、リクエスト頻度が低いアプリケーションでは応答時間が不安定になることがある。一方で、頻繁にリクエストを受けるようなアプリケーションでは、すでに実行環境が準備されているケースが多いため、安定したパフォーマンスを発揮できる。
Lambda関数の実行時間には制限があり、1回の実行につき最大15分までと定められている。それを超えると関数は自動的に終了される。
AWS Fargate
AWS Fargateでは、初回のデプロイ時にある程度の準備時間はかかるものの、一度起動すればアプリケーションは常時稼働し続ける。AWS Lambdaのようなコールドスタートによる遅延が発生しないため、常に一定の応答性能が期待できる。
FargateにはLambdaのような実行時間の上限がないため、長時間にわたって稼働するアプリケーションやバッチ処理にも柔軟に対応できる。
翻訳・編集協力:雨輝ITラボ(リーフレイン)
Copyright © ITmedia, Inc. All Rights Reserved.