Upgrade to Pro — share decks privately, control downloads, hide ads and more …

知らなくても困らないけど、知ると楽しいAWS Lambdaの裏側の世界

119659c28d16f22d01eb48a6f3ee1391?s=47 TomoyaIwata
October 13, 2021

知らなくても困らないけど、知ると楽しいAWS Lambdaの裏側の世界

AWSの代表的なサービスの1つであるAWS Lambda
非常に便利なこのサービスはどのように実現されているのでしょうか?
re:Inventの各種セッションや論文で公開されている情報をかき集めて、Lambdaというサービスの裏側では何が行われているのか解説します

■Youtubeの動画
https://youtu.be/Y8UXki_TQPk

■ご紹介したURL
2019年VPC Lambdaが高速に!! AWS Lambdaの内部構造に迫るセッション 「SRV409 A Serverless Journey: AWS Lambda Under the Hood」 #reinvent
https://dev.classmethod.jp/articles/r...

Lambdaの内部アーキテクチャ教えます!A serverless journey: AWS Lambda under the hood #SVS405 #reinvent
https://dev.classmethod.jp/articles/r...

Lambdaの裏側を知りたい人にオススメ Firecrackerに関する論文「Firecracker: Lightweight Virtualization for Serverless Applications」の紹介
https://dev.classmethod.jp/articles/f...

[セッションレポート]Lambdaのコンテナイメージ管理の裏側に詳しくなれるセッション SVS404 Deep dive into AWS Lambda security: Function isolation #reinvent
https://dev.classmethod.jp/articles/r...

AWS re:Invent 2018: [REPEAT 1] A Serverless Journey: AWS Lambda Under the Hood (SRV409-R1)
https://youtu.be/QdzV04T_kec

AWS re:Invent 2019: [REPEAT 1] A serverless journey: AWS Lambda under the hood (SVS405-R1)
https://youtu.be/xmacMfbrG28

NSDI '20 - Firecracker: Lightweight Virtualization for Serverless Applications
https://youtu.be/cwruf1ERAKM

AWS re:Invent 2020: Deep dive into AWS Lambda security: Function isolation
https://youtu.be/FTwsMYXWGB0

119659c28d16f22d01eb48a6f3ee1391?s=128

TomoyaIwata

October 13, 2021
Tweet

Transcript

  1. 知らなくても困らないけど、知ると楽しい AWS Lambdaの裏側の世界 2021/10/13 CX事業本部 MAD事業部 岩⽥ 智哉

  2. AWS Lambda サーバーやクラスターについて検討することなくコードを実⾏できます。 料⾦は従量課⾦制です。 https://aws.amazon.com/jp/lambda/

  3. サーバーやクラスタが どうなってるか 知りたい….

  4. Lambda実⾏環境のアーキテクチャ ハードウェア ホストOS ハイパーバイザ ゲストOS サンドボックス環境 Lambda ランタイム Lambda関数 Inner

    サンドボックス アカウントを跨いで共有利⽤ Lambda関数ごとに分離
  5. Lambda実⾏環境のアーキテクチャ ハードウェア ホストOS ハイパーバイザ ゲストOS サンドボックス環境 Lambda ランタイム Lambda関数 Firecracker

  6. Firecrackerの概要 • AWSが開発したOSSのVMM • MicroVMを⾼速に起動可能 • 仮想化によるオーバーヘッドは最⼩限

  7. Firecracker開発のモチベーション •環境分離 •ワークロードの集約率 •パフォーマンス ….etc

  8. Firecrackerのロードマップ https://github.com/firecracker-microvm/firecracker/projects/13

  9. やっぱり来ました https://dev.classmethod.jp/articles/lambda-support-graviton2-processor/

  10. AWS Lambdaという サービスを構成する コンポーネントについて 10

  11. 同期実⾏ 11

  12. 同期実⾏時の裏で活躍するコンポーネント郡 • Front End • Counting Service • Worker Manager

    • Worker • Placement Service • MicroManager
  13. Front End • Lambdaのinvoke APIを処理 • 呼び出し元が妥当な場合にLambda関数の実⾏を許可 • Lambda関数のメタデータをロード

  14. Counting Service • Lambda関数の同時実⾏数を制御 • Lambda関数の同時実⾏数をトラッキング • 必要に応じてスロットリングを発⽣させる • 複数のAZに分散配置

  15. Worker Manager • Lambda実⾏環境のアイドル/ビジーをトラッキング • 利⽤可能な実⾏環境に要求をスケジューリング • 環境変数やLambda実⾏ロールを設定 • Placement

    Service経由でWorkerをスケールアップ
  16. Worker • ベアメタルEC2インスタンス(…のはず) • 数百〜数千のMicroVMを実⾏ • Innerサンドボックスを作成/管理

  17. Placement Service • 密度が最⼤化されるようサンドボックスを配置 • WorkerをWorker Managerにリース • Workerの監視も担当 ※図はFirecracker:

    Lightweight Virtualization for Serverless Applicationsより引⽤
  18. Micro Manager 18 • 各Worker上でFirecrackerのプロセスを管理 • Front EndからLambda実⾏環境にペイロードを中継 • ブート済みのMicroVMのプールを管理

    ※「A Serverless Journey: AWS Lambda Under the Hood」ではMicro Managerに関する⾔及無し Micro ManagerについてはFirecrackerの論⽂で解説されている ※図はFirecracker: Lightweight Virtualization for Serverless Applicationsより引⽤
  19. 同期実⾏のシーケンス例 ※画像はre:Invent2018のSRV409 A Serverless Journey: AWS Lambda Under the Hoodより引⽤

    https://www.slideshare.net/AmazonWebServices/a-serverless-journey-aws-lambda-under-the-hood-srv409r1-aws-reinvent-2018
  20. ⾮同期実⾏

  21. ⾮同期実⾏も基本は同期実⾏ • ⾮同期実⾏の裏側も最終的には同期実⾏ • 同期実⾏に⾄るまでのプロセスは微妙に異なる • Asynchronous(イベントソース) • Stream(ストリーミングソース)

  22. ⾮同期実⾏時の裏で活躍するコンポーネント郡 •SQS •Poller •State Manager •Stream Tracker •Leasing Service

  23. Poller • イベントデータを消費して処理するコンポーネント • イベントソースの場合はSQSをポーリング • ストリーミングソースの場合はストリーミングソー スからデータを受信

  24. State Manager • イベントソースの場合にスケーリングを管理 • Leasing Service経由でPollerの割り当てを⾏う • Lambda関数の同時実⾏数に応じてキューを⽣成 •

    状態遷移を監視しメトリクスを作成
  25. Stream Tracker • ストリーミングソースの場合にスケーリングを管理 • シャード数に応じてPollerのリースを⾏う • Lambda関数の設定やストリーミングソースの更新 を定期的にチェック

  26. Leasing Service • Pollerの割当と解放を⾏う • Pollerのヘルスチェックも担当 • Stream Trackerに対してPollerの割当/解放APIを提供

  27. ⾮同期実⾏のシーケンス例 ※画像はre:Invent2019のSVS405 A serverless journey: AWS Lambda under the hoodより引⽤

    https://d1.awsstatic.com/events/reinvent/2019/REPEAT_1_A_serverless_journey_AWS_Lambda_under_the_hood_SVS405-R1.pdf
  28. Pollerのリース状況はDynamoDBで管理︖ 28 ※画像はre:Invent2019のSVS405 A serverless journey: AWS Lambda under the

    hoodより引⽤ https://d1.awsstatic.com/events/reinvent/2019/REPEAT_1_A_serverless_journey_AWS_Lambda_under_the_hood_SVS405-R1.pdf
  29. コンテナイメージの サポート 29

  30. Lambdaのコンテナイメージサポート • re:Invent2020で発表された新機能 • Lambda関数のパッケージとして従来のZIP形式に 加えてコンテナイメージ形式を追加でサポート • Lambdaの内部アーキテクチャにも⼀部変更が

  31. Sparse filesystem • MicroVM専⽤の新しいコンポーネント • ディスクIOを処理するためのレイヤー • イメージのチャンクをオンデマンドでロード ※画像はre:Invent2020のSVS404 Deep

    dive into AWS Lambda security: Function isolationより引⽤ https://d1.awsstatic.com/events/reinvent/2020/Deep_dive_into_AWS_Lambda_security_Function_isolation_SVS404.pdf
  32. 3つのキャッシュでIOを⾼速化 •Dedicated local cache •Shared local cache •Shared AZ-local cache

  33. コンテナイメージのIO ※画像はre:Invent2020のSVS404 Deep dive into AWS Lambda security: Function isolationより引⽤

    https://d1.awsstatic.com/events/reinvent/2020/Deep_dive_into_AWS_Lambda_security_Function_isolation_SVS404.pdf Sparse filesystem Shared local cache Shared AZ-local cache Firecracker KMS Shared, ciphertexts only Dedicated, has plaintexts
  34. まとめ • Lambdaの裏側はre:Invent等で情報公開されている • Marc Brookerさんのセッションを要チェック︕︕ • Lambdaの裏側について妄想するのは楽しい

  35. 今回のセッションの元ネタブログ

  36. 今回のセッションの元ネタブログ、のさらに元ネタ

  37. None