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

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

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

TomoyaIwata

October 13, 2021
Tweet

More Decks by TomoyaIwata

Other Decks in Programming

Transcript

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

  11. 同期実⾏
    11

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

  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より引⽤

    View Slide

  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

    View Slide

  20. ⾮同期実⾏

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

  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

    View Slide

  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

    View Slide

  29. コンテナイメージの
    サポート
    29

    View Slide

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

    View Slide

  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

    View Slide

  32. 3つのキャッシュでIOを⾼速化
    •Dedicated local cache
    •Shared local cache
    •Shared AZ-local cache

    View Slide

  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

    View Slide

  34. まとめ
    • Lambdaの裏側はre:Invent等で情報公開されている
    • Marc Brookerさんのセッションを要チェック︕︕
    • Lambdaの裏側について妄想するのは楽しい

    View Slide

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

    View Slide

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

    View Slide

  37. View Slide