[SVS404-R1] A closer look at AWS Lambda(サーバーレス)
投稿日: 2022/12/09

Lambdaは、サーバーを管理することなくコードを実行できるようにするコンピューティングサービスです。費用は、使用したコンピューティング時間だけミリ秒単位で課金されます。また、さまざまなビルトイン言語とランタイムを使用して複数の言語をサポートしています。Lambdaの関数コードを配布パッケージ内にパッケージ化することができます。

毎月100万人以上の顧客がLambdaを使用し、毎月10兆に達するLambdaがinvokeされるという。顧客は、LambdaによるIT自動化、データ処理、Event-drivenアプリケーション開発、MLなど、さまざまな分野でLambdaを活用しています。

Lambdaが顧客に優れたサービスを提供するために集中したい部分は次のとおりです。
- 可用性:Lambdaは、複数のアベイラビリティーゾーンで関数を実行することで、単一のゾーン内の障害でも継続的にイベントを処理できます。これにより、高可用性を確保できます。
- 利用性:サーバーとオペレーティングシステムのメンテナンス、容量のプロビジョニングと自動サイジング、コードとセキュリティパッチの展開、およびコードの監視とロギングが含まれます。
- スケーラビリティ:コードで処理できる要求の数に制限はなく、自動的にサイズ変更され、イベントの頻度に関係なくパフォーマンスは一貫して維持されます。
- パフォーマンス:Graviton2で実行されるAWS Lambda関数は、AWSが設計したArmベースのプロセッサアーキテクチャを使用して、短いレイテンシ、最大19%の高性能を誇ります。
- セキュリティ:SDKとIAMを統合して、コードアクセスに対するセキュリティを強化できます。また、In VPC設定を使用すると、VPCのセキュリティグループ、ACLを活用して、Lambda関数がVPC内のリソースに安全にアクセスできるようにすることができます。

Lambdaのセキュリティにも、AWS 責任共有モデルが適用されます。

LambdaのInvocationモデルには大きく2つあります。
- Synchronous
- Asynchronous
関数を同期的に呼び出すと、Lambdaは関数を実行して応答を待ちます。関数が完了すると、Lambdaは関数のコードから呼び出された関数のバージョンなどの追加データを含む応答を返します。
関数を非同期で呼び出すと、S3やSNSなどのAWSサービスは関数を非同期的に呼び出してイベントを処理します。非同期的に関数を呼び出すと、関数コードで応答を待ちません。イベントをLambdaに渡すと、Lambdaは残りを処理します。

Lambda アーキテクチャは Control plane と Data plane で構成されています。Control plane このLambdaサービスとの相互作用を担当します。

イベントソースマッピング機能を使用すると、ストリームまたはキューでエントリを処理できます。Kinesis、Amazon DynamoDB ストリームなどから項目を読み込み、Lambda関数を Invoke します。


今回のリインベントで新機能のLambda SnapStartが発表されました。この機能により、追加コストなしでまたは低コストでコードを変更することなく、遅延に敏感なJavaアプリケーションの起動時間を10倍に加速できます。
Lambdaは顧客が様々なケースに適用して使用しているだけに活用度の高いサービスだと思い、今回のセッションを通じてLambdaのアーキテクチャについて理解できて良かったです。