Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
Lambdaのこと
Search
Sho
March 20, 2024
110
0
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
Lambdaのこと
Sho
March 20, 2024
More Decks by Sho
See All by Sho
Java ランタイムからカスタムランタイムに行き着くまで
ririru0325
1
560
チームでリファクタリングを進めるために
ririru0325
0
140
AWS歴6年のSaaS企業が直面する低凝集マイクロサービスの課題とその解決アプローチ
ririru0325
0
43
エムオーテックスの現場_-_SaaSプロダクトのアーキテクチャ変革と技術負債解消の道のり
ririru0325
0
83
できたこと・やっていきたいこと
ririru0325
0
65
jq を駆使して aws cli の運用を最適化
ririru0325
1
190
サーバーレス SaaS における運用監視の負荷軽減のためのアプローチ
ririru0325
0
440
サーバーレスアプリケーションの観測を適正化し、運用負荷を減らしていってる話
ririru0325
0
79
Featured
See All Featured
Templates, Plugins, & Blocks: Oh My! Creating the theme that thinks of everything
marktimemedia
31
2.9k
How to Create Impact in a Changing Tech Landscape [PerfNow 2023]
tammyeverts
56
3.4k
sira's awesome portfolio website redesign presentation
elsirapls
0
340
Building Applications with DynamoDB
mza
96
7.2k
How to Ace a Technical Interview
jacobian
281
24k
We Have a Design System, Now What?
morganepeng
55
8.3k
Save Time (by Creating Custom Rails Generators)
garrettdimon
PRO
32
4.4k
ピンチをチャンスに:未来をつくるプロダクトロードマップ #pmconf2020
aki_iinuma
128
56k
HTML-Aware ERB: The Path to Reactive Rendering @ RubyCon 2026, Rimini, Italy
marcoroth
3
470
Sharpening the Axe: The Primacy of Toolmaking
bcantrill
46
3k
How Fast Is Fast Enough? [PerfNow 2025]
tammyeverts
3
800
世界の人気アプリ100個を分析して見えたペイウォール設計の心得
akihiro_kokubo
PRO
73
41k
Transcript
Lambdaのコールドスタートのこと
目次 ・自己紹介 ・課題 ・色々調べてみた ・色々やってみた ・まとめ
自己紹介 • 名前: 桑名 翔(クワナ ショウ) • 年齢: 27歳 • 会社: エムオーテックス株式会社
• 趣味: スノーボード、ゲーム
課題 • Lambdaのコールドスタートを何とかしたい ◦ 自分が参画しているプロジェクトではAWS Lambdaがよく使われている ◦ 言語はScalaなので、Java ランタイムで動かしている ◦
Java ランタイムのLambdaは初回起動にとても時間がかかる
色々調べてみた • Javaのこと ◦ JITコンパイラについて ◦ 階層型コンパイルについて ◦ C1とC2とインタプリタについて •
Lambdaのこと ◦ 環境変数にオプションを入れられること ◦ SnapStartのこと ◦ ProvisionedConcurrencyのこと
色々やってみた • DynamoDbからgetItemしてprintするだけのコードをJarにしてデプロイ 1. とりあえずデフォルト実行で動作の時間チェック 2. 階層型コンパイル有効化 ◦ 環境変数に以下をセット ”JAVA_TOOL_OPTIONS”:
”-XX:+TieredCompilation -XX:TieredStopAtLevel=1” 3. ProvisionedConcurrencyを有効化 ◦ Lambdaの設定にある (https://docs.aws.amazon.com/ja_jp/lambda/latest/dg/provisioned-concurrency.html) 4. SnapStartを有効化 ◦ Lambdaの設定にある (https://docs.aws.amazon.com/ja_jp/lambda/latest/dg/snapstart.html)
色々やってみた結果 1. とりあえずデフォルト実行で動作の時間チェック 2. 階層型コンパイルを有効化 3. ProvisionedConcurrencyを有効化 4. SnapStartを有効化 ◦
4a: ダミー実行なし ◦ 4b: ダミー実行あり init duration sum 1. 3955 193 4148 2. 2260 142 2402 3. --- 590 590 4a. 784 15649 16433 4b. 1099 1880 2979 2 + 4b 877 987 1864
最後に 去年でたSnapStartやオプションをうまく活用すれば、簡単な処理であればJavaランタイム のLambdaでも、初回スタートを割と早くできた。 GraalVMのネイティブイメージを使ったカスタムランタイムでの実装は、中々制約が多く、 設定が難しいので、まだ実用レベルまで持っていけてないので、今後調査研究して使え るところでは使っていきたい。