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
·
Ship Features Fearlessly
Turn features on and off without deploys. Used by thousands of Ruby developers.
→
Sho
February 19, 2026
Technology
520
1
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
Java ランタイムからカスタムランタイムに行き着くまで
TECH BATON in 東京 〜今 Lamdbaどうやって使ってる? 〜
Sho
February 19, 2026
More Decks by Sho
See All by Sho
チームでリファクタリングを進めるために
ririru0325
0
130
AWS歴6年のSaaS企業が直面する低凝集マイクロサービスの課題とその解決アプローチ
ririru0325
0
37
エムオーテックスの現場_-_SaaSプロダクトのアーキテクチャ変革と技術負債解消の道のり
ririru0325
0
72
できたこと・やっていきたいこと
ririru0325
0
60
jq を駆使して aws cli の運用を最適化
ririru0325
1
190
サーバーレス SaaS における運用監視の負荷軽減のためのアプローチ
ririru0325
0
430
サーバーレスアプリケーションの観測を適正化し、運用負荷を減らしていってる話
ririru0325
0
77
Lambdaのこと
ririru0325
0
100
Other Decks in Technology
See All in Technology
OTel × Datadog で 「AI活用」を計測し、改善に繋げる
shihochan
1
420
2026TECHFRESH畢業分享會 - Lightning Talk - 資料也要 CI/CD? 用 Airbyte 自動化資料同步
line_developers_tw
PRO
0
1.3k
手塩にかけりゃいいってもんじゃない
ming_ayami
0
610
あなたの知らないPDFのアクセシビリティ
lycorptech_jp
PRO
0
220
SONiCで構築・運用する生成AI向けパブリッククラウドネットワーク ~実装編~
sonic
0
280
AIチャット検索改善の3週間
kworkdev
PRO
2
140
LayerX コーポレートエンジニアリング室におけるサプライチェーンセキュリティへの取り組み / Supply Chain Security at LayerX Corporate Engineering
yuyatakeyama
2
680
AWS Security Agent といっしょに脅威モデリングをやってみよう
amarelo_n24
1
180
iAEONの段階的リアーキテクト戦略 / iAEON's_Gradual_Re-architecture_Strategy
aeonpeople
0
230
自分が詳しくない領域でAIを使う #プロヒス2026
konifar
13
5.1k
【Cyber-sec+】経営層を"動かす"ための考え方
hssh2_bin
0
200
Flow 不死:AI 時代 DevOps 的不變本質
cheng_wei_chen
2
320
Featured
See All Featured
How to train your dragon (web standard)
notwaldorf
97
6.7k
Building AI with AI
inesmontani
PRO
1
1.1k
Navigating Team Friction
lara
192
16k
SEO for Brand Visibility & Recognition
aleyda
0
4.6k
The Curious Case for Waylosing
cassininazir
1
390
Tips & Tricks on How to Get Your First Job In Tech
honzajavorek
1
540
Templates, Plugins, & Blocks: Oh My! Creating the theme that thinks of everything
marktimemedia
31
2.8k
The Hidden Cost of Media on the Web [PixelPalooza 2025]
tammyeverts
2
330
How to Talk to Developers About Accessibility
jct
2
240
Testing 201, or: Great Expectations
jmmastey
46
8.2k
sira's awesome portfolio website redesign presentation
elsirapls
0
280
Test your architecture with Archunit
thirion
1
2.3k
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