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
Java ランタイムからカスタムランタイムに行き着くまで
Search
Sponsored
·
Your Podcast. Everywhere. Effortlessly.
Share. Educate. Inspire. Entertain. You do you. We'll handle the rest.
→
Sho
February 19, 2026
Technology
1
420
Java ランタイムからカスタムランタイムに行き着くまで
TECH BATON in 東京 〜今 Lamdbaどうやって使ってる? 〜
Sho
February 19, 2026
Tweet
Share
More Decks by Sho
See All by Sho
チームでリファクタリングを進めるために
ririru0325
0
110
AWS歴6年のSaaS企業が直面する低凝集マイクロサービスの課題とその解決アプローチ
ririru0325
0
27
エムオーテックスの現場_-_SaaSプロダクトのアーキテクチャ変革と技術負債解消の道のり
ririru0325
0
56
できたこと・やっていきたいこと
ririru0325
0
55
jq を駆使して aws cli の運用を最適化
ririru0325
1
170
サーバーレス SaaS における運用監視の負荷軽減のためのアプローチ
ririru0325
0
390
サーバーレスアプリケーションの観測を適正化し、運用負荷を減らしていってる話
ririru0325
0
72
Lambdaのこと
ririru0325
0
96
Other Decks in Technology
See All in Technology
【Oracle Cloud ウェビナー】【入門編】はじめてのOracle AI Data Platform - AIのためのデータ準備&自社用AIエージェントをワンストップで実現
oracle4engineer
PRO
1
120
組織全体で実現する標準監視設計
yuobayashi
3
490
20260311 ビジネスSWG活動報告(デジタルアイデンティティ人材育成推進WG Ph2 活動報告会)
oidfj
0
330
AWSの資格って役に立つの?
tk3fftk
2
340
内製AIチャットボットで学んだDatadog LLM Observability活用術
mkdev10
0
110
JAWSDAYS2026_A-6_現場SEが語る 回せるセキュリティ運用~設計で可視化、AIで加速する「楽に回る」運用設計のコツ~
shoki_hata
0
3k
モブプログラミング再入門 ー 基本から見直す、AI時代のチーム開発の選択肢 ー / A Re-introduction of Mob Programming
takaking22
5
1.5k
AIエージェント、 社内展開の前に知っておきたいこと
oracle4engineer
PRO
2
140
OSC仙台プレ勉強会 AlmaLinuxとは
koedoyoshida
0
170
最強のAIエージェントを諦めたら品質が上がった話 / how quality improved after giving up on the strongest AI agent
kt2mikan
0
190
JAWS DAYS 2026 ExaWizards_20260307
exawizards
0
430
フロントエンド刷新 4年間の軌跡
yotahada3
0
410
Featured
See All Featured
How GitHub (no longer) Works
holman
316
140k
Helping Users Find Their Own Way: Creating Modern Search Experiences
danielanewman
31
3.1k
Building Flexible Design Systems
yeseniaperezcruz
330
40k
The Organizational Zoo: Understanding Human Behavior Agility Through Metaphoric Constructive Conversations (based on the works of Arthur Shelley, Ph.D)
kimpetersen
PRO
0
270
Performance Is Good for Brains [We Love Speed 2024]
tammyeverts
12
1.5k
sira's awesome portfolio website redesign presentation
elsirapls
0
190
More Than Pixels: Becoming A User Experience Designer
marktimemedia
3
350
GraphQLの誤解/rethinking-graphql
sonatard
75
11k
The Straight Up "How To Draw Better" Workshop
denniskardys
239
140k
Applied NLP in the Age of Generative AI
inesmontani
PRO
4
2.2k
Creating an realtime collaboration tool: Agile Flush - .NET Oxford
marcduiker
35
2.4k
"I'm Feeling Lucky" - Building Great Search Experiences for Today's Users (#IAC19)
danielanewman
231
22k
Transcript
Java ランタイムからカスタムランタイムに行き着くまで 2026.02.20 TECH BATON 桑名 翔 1
自己紹介 名前:桑名 翔(くわな しょう) 所属:エムオーテックス株式会社 サービス開発1部 関心:サーバーレス、CI/CD、生産性向上 趣味:スノーボード / ゲーム(APEXプレデター・Valorantイモータル)
2
アーキテクチャ概要 Lambdaを中心としたサーバーレス構成 トリガー: API Gateway / SQS 処理: Lambda(Scala) ストレージ:
DynamoDB / S3 サービス間はイベントバス(pub-sub)で非同期連携 Lambda:約1000個運用 3
課題 コールドスタートが遅い + コストが高い コールドスタートが遅い Lambdaのコンテナ準備 + JVMのクラスロード+JITコンパイルが初回に集中して 走るため LambdaはメモリとCPUが比例するため、性能のために多くメモリを割り当てる必要
がある → コストに直結 知ってた解決策: Provisioned Concurrency でも… コストがさらに増える 予約数を超えたら結局コールドスタートが発生する 4
調査を始めた 観点は2つ 性能改善:コールドスタートを速くしたい コスト最適化:メモリ割り当てを減らしたい 選択肢が複数見つかった 階層型コンパイル(環境変数) SnapStart カスタムランタイム 言語変更 5
まずは手軽なやつから:階層型コンパイルの調整 JVMが実行時にコードを最適化する処理のレベルを下げて、起動を速くする設定 JAVA_TOOL_OPTIONS: -XX:+TieredCompilation -XX:TieredStopAtLevel=1 環境変数の追加のみ・実装変更なし → 全体に適用(※ Java 17以降のランタイムはデフォ
ルトで有効) Before After init 3955ms 2260ms duration 193ms 142ms 合計 4148ms 2402ms サンプルでの検証結果 参考: https://docs.aws.amazon.com/ja_jp/lambda/latest/dg/java-customization.html 6
次のステップを考えた カスタムランタイムを調べると... コールドスタートがさらに速くなる メモリも大幅に削減できる ただし実装コストが高い → いきなり全部は無理 7
まずは1つだけ試す 対象: 月10億回以上呼ばれてる関数 呼び出し回数が多い → メモリ削減の効果が金額に直結 試算した結果、コスト削減効果が大きいと判断 目的: コスト削減 GraalVM
Native Imageでネイティブバイナリ化 8
大変だった ビルド編 GraalVM Native Imageのビルドを通すのが難しい リフレクションの設定(reflect-config.json) ビルド時間が長い → 試行錯誤のコストが高い Lambda編
Runtime APIを直接扱う必要がある(今まで意識したことがなかった) カスタムランタイム特有の仕組みを一から理解 初めてだらけで時間がかかった 9
どうなったか 試行錯誤を繰り返してなんとか実装できた Before After コールドスタート 5000ms 800ms 実行時間 140ms 45ms
メモリ 1536MB 256MB 結果として、1つのLambdaだけで 年間 $30,000以上 のコスト削減 メモリ最適化によるコスト削減だけじゃなく コールドスタートも大きく改善 → 実装方法もわかった。モデルケースができた 10
言語変更という選択肢 カスタムランタイムの学習コスト vs 別言語習得コスト、どちらが現実的か考えた Node.js / Python などのマネージドランタイムであれば、JVMのようなコスト・性能 問題が起きにくい カスタムランタイムの深い知識も不要
でも… チームはScala中心 JVM知識が前提 開発文化もScala 結論:言語を変えるより、カスタムランタイムを扱える組織にする 11
まとめ 知見ゼロの状態から ↓ 手軽な改善(環境変数)で成果を出しつつ ↓ 1つのLambdaでカスタムランタイムを検証 ↓ モデルケースをもとに横展開中(API用のLambdaに順次適用) コールドスタート改善 =
レスポンス速度の改善 12
最後に カスタムランタイムを選んだ理由 最速だから → ✗ 最先端だから → ✗ 組織として一番現実的だったから 13
ありがとうございました! X(旧Twitter): @sho987_25 14