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
Sponsored
·
Your Podcast. Everywhere. Effortlessly.
Share. Educate. Inspire. Entertain. You do you. We'll handle the rest.
→
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
44
エムオーテックスの現場_-_SaaSプロダクトのアーキテクチャ変革と技術負債解消の道のり
ririru0325
0
89
できたこと・やっていきたいこと
ririru0325
0
65
jq を駆使して aws cli の運用を最適化
ririru0325
1
190
サーバーレス SaaS における運用監視の負荷軽減のためのアプローチ
ririru0325
0
440
サーバーレスアプリケーションの観測を適正化し、運用負荷を減らしていってる話
ririru0325
0
80
Featured
See All Featured
My Coaching Mixtape
mlcsv
0
300
Side Projects
sachag
455
43k
RailsConf & Balkan Ruby 2019: The Past, Present, and Future of Rails at GitHub
eileencodes
141
35k
<Decoding/> the Language of Devs - We Love SEO 2024
nikkihalliwell
1
320
The B2B funnel & how to create a winning content strategy
katarinadahlin
PRO
1
500
Efficient Content Optimization with Google Search Console & Apps Script
katarinadahlin
PRO
1
840
Stewardship and Sustainability of Urban and Community Forests
pwiseman
0
510
[RailsConf 2023] Rails as a piece of cake
palkan
59
7k
Mozcon NYC 2025: Stop Losing SEO Traffic
samtorres
1
520
Highjacked: Video Game Concept Design
rkendrick25
PRO
1
450
So, you think you're a good person
axbom
PRO
2
2.1k
The Cost Of JavaScript in 2023
addyosmani
55
10k
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のネイティブイメージを使ったカスタムランタイムでの実装は、中々制約が多く、 設定が難しいので、まだ実用レベルまで持っていけてないので、今後調査研究して使え るところでは使っていきたい。