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
550
チームでリファクタリングを進めるために
ririru0325
0
140
AWS歴6年のSaaS企業が直面する低凝集マイクロサービスの課題とその解決アプローチ
ririru0325
0
42
エムオーテックスの現場_-_SaaSプロダクトのアーキテクチャ変革と技術負債解消の道のり
ririru0325
0
79
できたこと・やっていきたいこと
ririru0325
0
65
jq を駆使して aws cli の運用を最適化
ririru0325
1
190
サーバーレス SaaS における運用監視の負荷軽減のためのアプローチ
ririru0325
0
430
サーバーレスアプリケーションの観測を適正化し、運用負荷を減らしていってる話
ririru0325
0
77
Featured
See All Featured
Building the Perfect Custom Keyboard
takai
2
820
Distributed Sagas: A Protocol for Coordinating Microservices
caitiem20
333
23k
Discover your Explorer Soul
emna__ayadi
2
1.2k
Designing Dashboards & Data Visualisations in Web Apps
destraynor
231
55k
HU Berlin: Industrial-Strength Natural Language Processing with spaCy and Prodigy
inesmontani
PRO
0
570
Leo the Paperboy
mayatellez
8
1.9k
Exploring anti-patterns in Rails
aemeredith
3
450
Mobile First: as difficult as doing things right
swwweet
225
10k
YesSQL, Process and Tooling at Scale
rocio
174
15k
It's Worth the Effort
3n
188
29k
Producing Creativity
orderedlist
PRO
348
40k
Learning to Love Humans: Emotional Interface Design
aarron
275
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のネイティブイメージを使ったカスタムランタイムでの実装は、中々制約が多く、 設定が難しいので、まだ実用レベルまで持っていけてないので、今後調査研究して使え るところでは使っていきたい。