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

クラウド解体シリーズ2 サーバーレス解体ショー

Avatar for yosimitu yosimitu
October 25, 2024
9

クラウド解体シリーズ2 サーバーレス解体ショー

Avatar for yosimitu

yosimitu

October 25, 2024
Tweet

Transcript

  1. © NEC Corporation 2024 NEC Group Internal Use Only 2

    自己紹介 好光 泰章 Yasuaki Yoshimitsu 所属・役職 経歴 NECソリューションイノベータ ソリューションサービス事業ライン 第三PFSI事業部 直属 シニアプロフェッショナル ミドルウェア開発 CLUSTERPRO開発(出向) インフラエンジニア 出身と居住地 趣味・好きなもの 性格・自己分析 DiSCスタイル「Di」 16Personalities 「主人公 ENFJ-A」 兵庫県 加古川市 東京都 府中市 神奈川県 川崎市 2013年から 兵庫県 神戸市 愛媛県 出身 ⚫ ブログ お酒飲みながら書いてます ⚫ カメラ プロフィール撮影中心 ⚫ 映画鑑賞 コナン聖地めぐり ⚫ ディズニー ファンタジースプリングス最高! ⚫ ランニング 週末5kmラン ⚫ 英語 ELSAで発音矯正中 ⚫ JAWS-UG横浜支部 運営 武蔵小杉まで チャリで20分 AWS認定 2021-2024 Japan AWS Top Engineer 2022-2024 Japan AWS All Certifications Engineer NES コーポレートブログ 「高い志を持つ仲間を増やしたい」AWSの表彰を受けた5人が語るエンジニアとAWSの未来」 re:Invent 2024 行ってきます!
  2. © NEC Corporation 2024 NEC Group Internal Use Only 3

    サーバー解体って楽しかったですよね? コンピュータといわれるものがどのようなパーツで構成され なんのために配置され、それぞれがどう連携して動くか 正しく本質を理解しておくことこそ 我々ITエンジニアにとって非常に重要です
  3. © NEC Corporation 2024 NEC Group Internal Use Only 4

    今日お話するのは? サーバー”レス” 第一弾はこれ
  4. © NEC Corporation 2024 NEC Group Internal Use Only 5

    今日お話するのは? Lambdaの中身解体ショー
  5. © NEC Corporation 2024 NEC Group Internal Use Only 7

    Lambdaとは? AWS Lambda はイベント発生時に お客様のコードを実行し、 基盤となるコンピューティングリソースを お客様に代わって管理する サーバーレスコンピューティングサービス
  6. © NEC Corporation 2024 NEC Group Internal Use Only 8

    Lambdaとは? AWS Lambda はイベント発生時に お客様のコードを実行し、 基盤となるコンピューティングリソースを お客様に代わって管理する サーバーレスコンピューティングサービス コンピューティングリソースは 意識しなくてよいですよ コード開発や実行を意識してください
  7. © NEC Corporation 2024 NEC Group Internal Use Only 9

    Lambdaの歴史 2014/11/13 Lambda 発表
  8. © NEC Corporation 2024 NEC Group Internal Use Only 11

    EC2モデル 1インスタンスで 1AWSアカウントを対象とし 1MicroVMが起動 という構成 AWSアカウント境界 関数 関数 ランタイム ランタイム 実行環境 実行環境 MicroVM ホストOS EC2インスタンス Lambda関数の境界
  9. © NEC Corporation 2024 NEC Group Internal Use Only 12

    EC2モデル ここで問題です! このアーキテクチャーって なにか気がつきませんか? AWSアカウント境界 関数 関数 ランタイム ランタイム 実行環境 実行環境 MicroVM ホストOS EC2インスタンス Lambda関数の境界
  10. © NEC Corporation 2024 NEC Group Internal Use Only 13

    EC2モデル 答えわせ セキュリティを重視するために 環境を分離 1アカウントで1つのEC2を使う =集積度が悪い(無駄が多い) AWSアカウント境界 関数 関数 ランタイム ランタイム 実行環境 実行環境 MicroVM ホストOS EC2インスタンス Lambda関数の境界
  11. © NEC Corporation 2024 NEC Group Internal Use Only 14

    Lambdaの歴史 2014 Lambda 発表 2018年になにかが起こった・・・
  12. © NEC Corporation 2024 NEC Group Internal Use Only 15

    高セキュアなコンテナ実行環境 Firecracker(VMM) の登場
  13. © NEC Corporation 2024 NEC Group Internal Use Only 16

    コンテナ実行環境 Firecracker(VMM) の登場 Firecrackerと MicroVMは AWSアカウント ごとに専有割当 わずか125msで 関数を起動 AWSアカウント境界&Lambda関数の境界 関数 ランタイム 実行環境 MicroVM (プロセス) ホストカーネルKVM ホストOS EC2ベアメタルインスタンス (例 m5.metal) AWSアカウント境界 関数 関数 ランタイム ランタイム 実行環境 実行環境 MicroVM ホストOS EC2インスタンス Lambda関数の境界 Firecracker MicroVM (プロセス) Firecracker 関数 ランタイム 実行環境 OS仮想化技術 (オーバヘッド大) コンテナ仮想化技術 (オーバヘッド最小) 集積度アップによって 値下げが実現
  14. © NEC Corporation 2024 NEC Group Internal Use Only 18

    コンテナ実行環境 Firecracker(マイクロVM) の登場 Firecracker論文(Lightweight virtualization for serverless applications - Amazon Science https://www.amazon.science/publications/firecracker-lightweight-virtualization-for-serverless-applications
  15. © NEC Corporation 2024 NEC Group Internal Use Only 19

    コンテナ実行環境 Firecracker(マイクロVM) の登場 Firecracker論文(Lightweight virtualization for serverless applications - Amazon Science https://www.amazon.science/publications/firecracker-lightweight-virtualization-for-serverless-applications データプレーン イベントデータを 関数コードに引き渡すため の各コンポーネント コントロールプレーン Lambdaサービスの リソース管理
  16. © NEC Corporation 2024 NEC Group Internal Use Only 20

    コンテナ実行環境 Firecracker(マイクロVM) の登場 Firecracker論文(Lightweight virtualization for serverless applications - Amazon Science https://www.amazon.science/publications/firecracker-lightweight-virtualization-for-serverless-applications
  17. © NEC Corporation 2024 NEC Group Internal Use Only 21

    Lambda関数を呼び出したら、、、 Firecracker論文(Lightweight virtualization for serverless applications - Amazon Science https://www.amazon.science/publications/firecracker-lightweight-virtualization-for-serverless-applications 実行環境の作成 デプロイPKG のロード デプロイPKG の展開 ランタイム 起動・初期化 関数の実行 コンテナの 破棄 ランタイムの実行環境の作成(=コンテナ) インスタンス化 関数やライブラリを圧縮した ZIP形式のファイルをS3からダウンロード ZIPファイルの解凍・展開 ハンドラメソッド起動 APIへのリクエストが同時に100来た場合は、 バックエンドとなるLambda関数のインスタンスが100個生成されて処理される 1インスタンス(=コンテナ)で複数のイベントは処理しません!
  18. © NEC Corporation 2024 NEC Group Internal Use Only 22

    Lambda関数を呼び出したら、、、 Firecracker論文(Lightweight virtualization for serverless applications - Amazon Science https://www.amazon.science/publications/firecracker-lightweight-virtualization-for-serverless-applications 実行環境の作成 デプロイPKG のロード デプロイPKG の展開 ランタイム 起動・初期化 関数の実行 コンテナの 破棄 ランタイムの実行環境の作成(=コンテナ) インスタンス化 関数やライブラリを圧縮した ZIP形式のファイルをS3からダウンロード ZIPファイルの解凍・展開 ハンドラメソッド起動 関数の設定やコードが変わらない限り 毎回同じ処理
  19. © NEC Corporation 2024 NEC Group Internal Use Only 23

    Lambda関数を呼び出したら、、、 Firecracker論文(Lightweight virtualization for serverless applications - Amazon Science https://www.amazon.science/publications/firecracker-lightweight-virtualization-for-serverless-applications 実行環境の作成 デプロイPKG のロード デプロイPKG の展開 ランタイム 起動・初期化 関数の実行 コンテナの 破棄 ランタイムの実行環境の作成(=コンテナ) インスタンス化 関数やライブラリを圧縮した ZIP形式のファイルをS3からダウンロード ZIPファイルの解凍・展開 ハンドラメソッド起動 関数の設定やコードが変わらない限り 毎回同じ処理 コールドスタート
  20. © NEC Corporation 2024 NEC Group Internal Use Only 24

    Lambda関数を呼び出したら、、、 Firecracker論文(Lightweight virtualization for serverless applications - Amazon Science https://www.amazon.science/publications/firecracker-lightweight-virtualization-for-serverless-applications 実行環境の作成 デプロイPKG のロード デプロイPKG の展開 ランタイム 起動・初期化 関数の実行 コンテナの 破棄 ランタイムの実行環境の作成(=コンテナ) インスタンス化 関数やライブラリを圧縮した ZIP形式のファイルをS3からダウンロード ZIPファイルの解凍・展開 ハンドラメソッド起動 関数の設定やコードが変わらない限り 毎回同じ処理 起動コスト効率化の 仕組み 『ウォームスタート』 作成すみの 実行環境 をそのまま利用
  21. © NEC Corporation 2024 NEC Group Internal Use Only 25

    Lambda関数を呼び出したら、、、 Firecracker論文(Lightweight virtualization for serverless applications - Amazon Science https://www.amazon.science/publications/firecracker-lightweight-virtualization-for-serverless-applications 実行環境の作成 デプロイPKG のロード デプロイPKG の展開 ランタイム 起動・初期化 関数の実行 コンテナの 破棄 ランタイムの実行環境の作成(=コンテナ) インスタンス化 関数やライブラリを圧縮した ZIP形式のファイルをS3からダウンロード ZIPファイルの解凍・展開 ハンドラメソッド起動 関数の設定やコードが変わらない限り 毎回同じ処理 起動コスト効率化の 仕組み 『ウォームスタート』 作成すみの 実行環境 をそのまま利用 ウォームスタートの条件に マッチしないとコールドスタートに
  22. © NEC Corporation 2024 NEC Group Internal Use Only 26

    Lambdaの歴史 2014 Lambda 発表 2022になにかが起こった・・・
  23. © NEC Corporation 2024 NEC Group Internal Use Only 27

    さらなる高速化のために、、、 Firecracker論文(Lightweight virtualization for serverless applications - Amazon Science https://www.amazon.science/publications/firecracker-lightweight-virtualization-for-serverless-applications 実行環境の作成 デプロイPKG のロード デプロイPKG の展開 ランタイム 起動・初期化 関数の実行 コンテナの 破棄 ランタイムの実行環境の作成(=コンテナ) インスタンス化 関数やライブラリを圧縮した ZIP形式のファイルをS3からダウンロード ZIPファイルの解凍・展開 ハンドラメソッド起動 関数の設定やコードが変わらない限り 毎回同じ処理 わずか5msで起動 コールドスタートの レイテンシを改善 =SnapStart 初期化終了後の スナップショット 起動
  24. © NEC Corporation 2024 NEC Group Internal Use Only 28

    • vCPU停止と状態を保存可能な状態に変換 • 内部データ構造をシリアライズして保存 • 仮想デバイスのシリアライズ • ゲストOSメモリをメモリマップに書き込み • スナップショット取得後、MicroVM停止 • vCPUの再開 • Firecrackerとデバイス状態を復元 • vCPUの再作成 • メモリマップからOSメモリを復元 • スナップショットの妥当性チェック スナップショット取得 スナップショットからの復元 Firecrackerのコアは必要機能のみであり、 保存復元する対象が少ないことが高速化の要因
  25. © NEC Corporation 2024 NEC Group Internal Use Only 29

    まとめ 「本来 コンピューティングリソースは 意識しなくてよいですよ」 ただ、アーキテクチャーや仕組みを知った上で 設計やお客様との会話をしていく これこそエンジニアとしての面白さ お客様から信頼されるエンジニア