Slide 1

Slide 1 text

サーバーフルコンピューティング? AWS Lambda リテールアプリ共創部 岩田 智哉

Slide 2

Slide 2 text

自己紹介 岩田 智哉 ● 2018年入社 @大阪オフィス ● 好きなAWSサービスはLambda ● DevIOは毎年サーバーレス関連のテーマで登壇 2

Slide 3

Slide 3 text

AWS Lambdaとは? 3

Slide 4

Slide 4 text

AWS Lambdaとは in 2015/5 AWS Lambda is a compute service that makes it easy for you to build applications that respond quickly to new information. AWS Lambda runs your code in response to events such as image uploads, in-app activity, website clicks, or outputs from connected devices. WebArchiveに保存されていたAWS Lambdaデベロッパーガイドより引用 https://web.archive.org/web/20150507135944/http://docs.aws.amazon.com/ja_jp/lambda/latest/dg/welcome.html 4

Slide 5

Slide 5 text

AWS Lambdaとは in 2017/5 AWS Lambda はサーバーをプロビジョニングしたり管理しなくても コードを実行できるコンピューティングサービスです。 …略 イベントによってトリガーされる関数で構成され、AWS CodePipeline と AWS CodeBuild を使用して自動的にそれらをデプロ イするサーバーレスアプリケーションを構築することもできます。 WebArchiveに保存されていたAWS Lambdaデベロッパーガイドより引用 https://web.archive.org/web/20170519060225/http://docs.aws.amazon.com/ja_jp/lambda/latest/dg/welcome.html 5

Slide 6

Slide 6 text

AWS Lambdaとは in 2026/9 AWS Lambda は、 サーバーレスコンピューティングサービス です。Lambda を使用すると、サーバーをプロビジョニングまたは管理しなくてもコ ードを実行できます。Lambda は、基盤となるインフラストラクチャ (サーバーメン テナンス、容量プロビジョニング、スケーリング、パッチ適用など) を自動的に管理 するので、ユーザーはアプリケーションロジックにフォーカスできます。 AWS Lambdaデベロッパーガイドより引用 https://docs.aws.amazon.com/ja_jp/lambda/latest/dg/welcome.html 6

Slide 7

Slide 7 text

サーバーレスコンピューティングサービスとは 利用者がサーバーの存在を意識しなくて良い アーキテクチャ ● マネージドサービス ● 完全従量課金 ● 高可用性 7

Slide 8

Slide 8 text

Lambda = サーバーレス 利用者からサーバーの存在を 隠蔽するサービス

Slide 9

Slide 9 text

Lambda Functionのサイジングはシンプル ● メモリ割り当ての調整が基本 ● メモリの割当に比例してCPUパワーやNW帯域が決 まる ● 指定できる項目が限られているがゆえにシンプル 9

Slide 10

Slide 10 text

Provisioned Concurrencyから見えるLambdaの設計思想 Provisioned Capacityではない Provisioned Rateでもない • キャパシティはハードウェア依存 • RPSという指標はバッチサイズを • 障害に備えた過剰プロビジョニン グが必要 • コード修正による影響 考慮しない • レイテンシも考慮しない • リソースの競合も考慮しない re:invent2019 A serverless journey: AWS Lambda under the hood より https://youtu.be/xmacMfbrG28?si=Ch0K6CqS2q6L69RM 10

Slide 11

Slide 11 text

サーバーの存在が隠蔽されていることのデメリット 実行環境の基盤となるハードウェアを指定できないため 運次第でパフォーマンスがブレる可能性も ● 「AWS LambdaのOS情報を色々見てみる 〜Lambdaのインスタンスガチャを検証する〜」 https://marcy.hatenablog.com/entry/2017/12/21/024523 ● 「Fargate の CPU アーキテクチャと世代別のベンチマークで ECS の実行基盤を選ぶ」 https://developer.hatenastaff.com/entry/2026/07/15/120512 ● 「FargateのCPU性能の違い」 https://speakerdeck.com/mokopoi/fargatenocpuxing-neng-nowei-i 11

Slide 12

Slide 12 text

2025年末以後にLambdaは どう進化してきたのか? 12

Slide 13

Slide 13 text

Lambda関連アップデート(re:Invent2025 ~ その1) 2025-11-26 AWS Lambda announces durable functions for multi-step applications and AI workflows 2025-11-30 Announcing AWS Lambda Managed Instances, a capability to run functions on your Amazon EC2 instances 2025-12-15 AWS Lambda adds support for .NET 10 2026-01-15 AWS Lambda announces cross-account access for DynamoDB Streams 2026-01-29 AWS Lambda launches enhanced observability for Kafka event source mappings 2026-02-11 AWS Lambda Durable Execution SDK for Java now available in Developer Preview 2026-02-27 Amazon CloudWatch Application Signals adds new SLO capabilities 2026-03-02 Accelerate Lambda durable functions development with new Kiro power 2026-03-12 AWS Lambda Managed Instances now supports Rust 2026-03-19 AWS Lambda now supports Availability Zone metadata 2026-03-20 AWS Lambda Durable Execution SDK for Java GA 2026-03-20 AWS Lambda increases the file descriptor limit to 4,096 for functions running on Lambda Managed Instances 2026-03-25 AWS Lambda adds support for Ruby 4.0 2026-03-26 AWS Lambda supports up to 32 GB of memory and 16 vCPUs for Lambda Managed Instances 2026-04-07 AWS Lambda expands response streaming support to all commercial AWS Regions 2026-04-20 AWS Lambda functions can now mount Amazon S3 buckets as file systems with S3 Files 2026-05-11 AWS Lambda supports scheduled scaling for functions on Lambda Managed Instances 2026-05-25 AWS Lambda announces self-managed code storage 2026-06-01 AWS Lambda Managed Instances now supports Tag Propagation for Managed Resources 2026-06-22 AWS Lambda now supports Java 8, 11, and 17 on Amazon Linux 2023 What‘s New with AWSからLambda関連のアップデートを抜粋 ※ただし、サポート対象リージョン追加系のアップデートは除く https://aws.amazon.com/new/ 13

Slide 14

Slide 14 text

Lambda関連アップデート(re:Invent2025 ~ その2) 2026-06-22 AWS Lambda introduces managed runtimes in public preview for Node.js 26 and Python 3.15 2026-06-22 AWS introduces Lambda MicroVMs for isolated execution of user and AI-generated code 2026-07-02 AWS Lambda functions now support full IAM resource-based policies 2026-07-07 AWS Lambda now supports SnapStart for container image functions 2026-07-10 AWS Lambda Provisioned Mode for Amazon SQS event source mappings now supports up to 10,000 event pollers 2026-07-14 AWS Lambda console provides a one-click setup prompt for coding agents 2026-07-22 AWS Lambda now publishes logs for Lambda Managed Instances capacity providers 2026-07-22 AWS Lambda durable functions now supports customer managed key encryption 2026-07-23 AWS Lambda durable execution SDK for .NET is now generally available 2026-08-05 AWS Lambda announces scalable network bandwidth up to 3,000 Mbps for functions outside a VPC 2026-08-06 AWS Lambda console extends console-to-IDE integration to Kiro and Cursor 2026-08-14 AWS Lambda durable functions now supports custom Durable Execution SDK 2026-08-24 AWS Lambda MicroVMs now supports AWS PrivateLink 2026-08-31 AWS Lambda recursive loop detection is now available in all commercial AWS Regions 2026-09-04 AWS MCP Server adds a serverless capability for AWS Lambda functions 2026-09-09 AWS Lambda now supports 90-minute function timeout on Lambda Managed Instances 2026-09-09 AWS Lambda now supports Graviton5-powered EC2 instances on Lambda Managed Instances 2026-09-10 AWS Lambda durable functions integrates with Pydantic AI 2026-09-10 AWS Lambda recursive loop detection is now available in Europe Sovereign Cloud 2026-09-11 AWS Lambda now supports direct read configuration for Amazon S3 Files What‘s New with AWSからLambda関連のアップデートを抜粋 ※ただし、サポート対象リージョン追加系のアップデートは除く https://aws.amazon.com/new/ 14

Slide 15

Slide 15 text

Lambda関連アップデートの個人的要約 ● durable functions ※re:invent 2025 ● Lambda Managed Instances ※re:invent 2025 ● Lambda MicroVMs ● その他の細かな機能追加/改善 15

Slide 16

Slide 16 text

LMI (Lambda Managed Instances) 16

Slide 17

Slide 17 text

サーバーレスなのにサーバーが指定できる? ● 基盤となるEC2インスタンスのインスタンスタイプが指定できる ● EC2インスタンスは自身のAWSアカウントで占有利用できる 17

Slide 18

Slide 18 text

LMIで起動したEC2インスタンス 18

Slide 19

Slide 19 text

通常のLambda Functionにおけるセキュリティ境界 Users ベアメタルEC2インスタンス アカウントA Lambda実行環境 アカウントA User アカウントB Lambda実行環境 アカウントB User アカウントC Lambda実行環境 アカウントC User 19

Slide 20

Slide 20 text

LMIにおけるセキュリティ境界 アカウントA Users EC2インスタンス アカウントA Lambda実行環境 20

Slide 21

Slide 21 text

通常のLambda Functionにおける同時実行モデル 各実行環境が同時に処理するリクエストは1つまで!! Lambda実行環境 1 Lambda実行環境 2 Lambda実行環境 3 21

Slide 22

Slide 22 text

LMIにおける同時実行モデル 実行環境が同時に複数のリクエストを処理 Lambda実行環境 ワーカースレッド ワーカースレッド ワーカースレッド 22

Slide 23

Slide 23 text

LMIにおける実行環境のライフサイクル EC2インスタンス Runtime Init/Extension Initの実行単位 Lambda実行環境 ワーカースレッド /tmp ワーカースレッド Function Initの実行単位 23

Slide 24

Slide 24 text

LMIならではの構成 Users EC2インスタンス Lambda実行環境 コネクションプール ワーカースレッド frontend connection backennd connection ワーカースレッド frontend connection Amazon Relational Database Service (Amazon RDS) 24

Slide 25

Slide 25 text

その他LMIで意識しておきたいポイント抜粋 ● 実行環境は「フリーズ」しない ● /tmpディレクトリ関連のレースコンディション ● コールドスタートは発生しない 25

Slide 26

Slide 26 text

Lambda MicroVMs 26

Slide 27

Slide 27 text

Lambda MicroVMs ● 信頼できないコードを実行するためのサンドボックスを 利用できる機能 ● FirecrackerのMicroVM上にサンドボックス環境を起動 ● DockerfileからMicroVMのイメージをビルド ○ Firecrackerのスナップショット機能を利用して高速に起動・停止 ● 停止/再開で状態(ステート)を保持できる! 27

Slide 28

Slide 28 text

Lambda Functionsとは別のLambdaファミリー https://docs.aws.amazon.com/ja_jp/lambda/latest/dg/welcome.html 28

Slide 29

Slide 29 text

Lambda Functionsとは全く別物といえる AWS CLIにもlambda-microvmsという専用 のサブコマンドが追加 29

Slide 30

Slide 30 text

Lambda Function実行環境との違い ● イメージビルド時のオプションでほぼ全てのLinuxケーパビ リティが利用できる ○ --privilegedオプション付きでdocker runしているような状態 ● eBPFプログラムも実行可能 ○ とはいえCONFIG_DEBUG_INFO_BTFは無効 ○ BPF CO-RE(Compile Once Run Anywhere)は使えない https://dev.classmethod.jp/articles/run-ebpf-on-lambda-micro-vms 30

Slide 31

Slide 31 text

利用例1. GitHub Actionsのセルフホステッドランナー セルフホステッドランナーを登録 Amazon DynamoDB 管理情報登録 ウェブフック Poll & Invoke AWS Lambda 検証 & SendMessage Amazon Simple Queue Service (Amazon SQS) AWS Lambda RunMicroVM https://github.com/schuettc/cdk-github-microvm-runners https://dev.classmethod.jp/articles/github-actions-self-hosted-runner-on-lambda-microvms/ 31

Slide 32

Slide 32 text

セルフホステッドランナーにMicroVMを使うメリット ● CI実行時間が削減できる可能性大 ○ 必要なパッケージ導入済のイメージからCI環境を起動できる ● 同一MicroVMを再利用すればMicroVMのストレージをキ ャッシュ的に利用できる ○ schuettc/cdk-github-microvm-runners は都度 RunMicroVM/TerminateMicroVMする実装なので注意 32

Slide 33

Slide 33 text

利用例2. ClaudeのSelf-hosted sandboxに利用 https://github.com/aws-samples/sample-lambda-microvm-claude-managed-agents https://dev.classmethod.jp/articles/claude-managed-agents-sandbox-on-lambda-micro-vms/ 33

Slide 34

Slide 34 text

Self-hosted sandboxに利用するメリット ● 利用したいToolに合わせて事前に必要なパッケージを導 入できる ● AWSリソースにアクセスしやすい ○ MicroVMのIAMロールを使ってSigV4の認証・認可 ○ VPC内部リソースへの接続 34

Slide 35

Slide 35 text

Lambda MicroVMsが広げる可能性 ● 開発者が使う使い捨ての環境 ○ AIエージェント用サンドボックス、CI/CD環境 ○ 通常のLambda Functionのようにエンドユーザーのリクエストを処 理するような利用形態には向かない ● ハンズオン用の環境 ○ code-serverを実行すればCloud9の代替としても使えそう?※未検証 35

Slide 36

Slide 36 text

その他のアップデート 36

Slide 37

Slide 37 text

NW帯域が最大 3,000 Mbpsまで対応 ● 従来は625Mbpsが上限 ● Service Quotasから申請・承認されると、メモリ割り当 てに比例して最大3,000Mbpsまで利用可能に ○ メモリ2GB… 625Mbps ○ メモリ10GB…3,000Mbps https://dev.classmethod.jp/articles/lambda-network-bandwidth-3000mbps/ 37

Slide 38

Slide 38 text

S3Files関連のアップデート ● S3 Filesをマウント可能に ○ NFSファイルシステムに対する操作でS3バケットの操作が可能 に ● S3 Filesマウントで読み取り経路を指定できるように ○ S3 Filesサポート当初はメモリ512MB以上の関数のみ直接読み 取りを利用できた https://dev.classmethod.jp/articles/2026-04-13-s3-files-lambda/ https://dev.classmethod.jp/articles/lambda-s3files-direct-read/ 38

Slide 39

Slide 39 text

まとめ 39

Slide 40

Slide 40 text

まとめ ● Lambdaは必要に応じてサーバー抽象化のレベルを選べ るように進歩した ● OSの管理・運用責任を負わくて良い点は変わらない ● 単なるイベントドリブンなFaaSではなく、ワークロード に合わせた最適なコンピューティング環境が選べるサー ビスとして進化を続けている 40

Slide 41

Slide 41 text

ご清聴ありがとうございました

Slide 42

Slide 42 text

No content