スライド/Python LambdaのSnapStartとAWS Lambda Powertools version 14

2025/02/08 02:31 by sinofseven
  :追加された部分   :削除された部分
(差分が大きい場合、文字単位では表示しません)
スライド/Python LambdaのSnapStartとAWS Lambda Powertools
## 自己紹介
- 夏目 祐樹 (ナツメ ユウタ)
- クラスメソッド
  - 製造ビジネステクノロジー部
- 好きなAWS Service
  - Lambda, DynamoDB, SQS, S3
- 近況
  - FF7 Rebirthを100時間以上プレイするもクリアまで行かず

---

## Cold Start

---

## Cold Start

![[9005460307943389] perf-optimize-figure-1](https://mimemo.s3-ap-northeast-1.amazonaws.com/attachment/8c497cf2-dbeb-4943-9a69-3d9c33375fb9.png)

https://docs.aws.amazon.com/ja_jp/lambda/latest/dg/lambda-runtime-environment.html#cold-start-latency

- AWS公式の考え方ではMicro VMの作成までがコールドスタート
  - 再実行時はハンドラの実行から
  - 広義の考え方ではコードの初期化も含める

---

## Cold Start

- どうしてもコードの初期化で初回の実行は遅くなる
  - Pythonのboto3の読み込みでも1秒くらいかかる
    - Pandasとか重いライブラリを読めばもっとかかる
- GoやRustなどシングルバイナリを生成するような言語ではコールドスタートもウォームスタートも大した差にはならない

---

## ユーザーのくふう (1)

- 手動ウォームアップ
  - 何らかの手段でLambdaを実行させCold Startを回避する
  - ただし
    - 手動ウォームアップの実行中にリクエストが来たらCold Startが起きる
    - 事前に立ち上げた数よりも多いリクエストが来たらCold Startが起きる

---

## ユーザーのくふう (2)

- Lambdalith (Monolithic function)
  - 1つのLambdaで複数のイベントを処理する
  - 例えば、APIで複数のパスを一つのLambdaで処理する
  - ただし、Cold Startを多少抑制できる程度

---

## AWSのくふう (1)

- Provisioned Concurrency
  - AWSによる自動ウォームアップ
  - ただし
    - 設定した実行数よりも多いリクエストが来たらCold Startが起きる
    - ウォームアップしている期間についても課金される

---

## AWSのくふう (2)

- Snap Start (Java)
  - re:Invent 2022で発表された機能
  - Java 11以降で使用可能
  - バージョンを発行する際に①コードのロード②ランタイムの開始③関数コードの初期化、これらを行ったキャッシュを作成する
  - キャッシュから実行することで広義のコールドスタートを高速化する

---

# AWSのくふう (3)
# Pythonと.NETでSnapStartのサポートを開始
Pythonと.NETでSnapStartのサポートを開始
      

自己紹介

  • 夏目 祐樹 (ナツメ ユウタ)
  • クラスメソッド
    • 製造ビジネステクノロジー部
  • 好きなAWS Service
    • Lambda, DynamoDB, SQS, S3
  • 近況
    • FF7 Rebirthを100時間以上プレイするもクリアまで行かず

Cold Start


Cold Start

[9005460307943389] perf-optimize-figure-1

https://docs.aws.amazon.com/ja_jp/lambda/latest/dg/lambda-runtime-environment.html#cold-start-latency

  • AWS公式の考え方ではMicro VMの作成までがコールドスタート
    • 再実行時はハンドラの実行から
    • 広義の考え方ではコードの初期化も含める

Cold Start

  • どうしてもコードの初期化で初回の実行は遅くなる
    • Pythonのboto3の読み込みでも1秒くらいかかる
      • Pandasとか重いライブラリを読めばもっとかかる
  • GoやRustなどシングルバイナリを生成するような言語ではコールドスタートもウォームスタートも大した差にはならない

ユーザーのくふう (1)

  • 手動ウォームアップ
    • 何らかの手段でLambdaを実行させCold Startを回避する
    • ただし
      • 手動ウォームアップの実行中にリクエストが来たらCold Startが起きる
      • 事前に立ち上げた数よりも多いリクエストが来たらCold Startが起きる

ユーザーのくふう (2)

  • Lambdalith (Monolithic function)
    • 1つのLambdaで複数のイベントを処理する
    • 例えば、APIで複数のパスを一つのLambdaで処理する
    • ただし、Cold Startを多少抑制できる程度

AWSのくふう (1)

  • Provisioned Concurrency
    • AWSによる自動ウォームアップ
    • ただし
      • 設定した実行数よりも多いリクエストが来たらCold Startが起きる
      • ウォームアップしている期間についても課金される

AWSのくふう (2)

  • Snap Start (Java)
    • re:Invent 2022で発表された機能
    • Java 11以降で使用可能
    • バージョンを発行する際に①コードのロード②ランタイムの開始③関数コードの初期化、これらを行ったキャッシュを作成する
    • キャッシュから実行することで広義のコールドスタートを高速化する

AWSのくふう (3)

Pythonと.NETでSnapStartのサポートを開始