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
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
36
エムオーテックスの現場_-_SaaSプロダクトのアーキテクチャ変革と技術負債解消の道のり
ririru0325
0
69
できたこと・やっていきたいこと
ririru0325
0
59
jq を駆使して aws cli の運用を最適化
ririru0325
1
180
サーバーレス SaaS における運用監視の負荷軽減のためのアプローチ
ririru0325
0
420
サーバーレスアプリケーションの観測を適正化し、運用負荷を減らしていってる話
ririru0325
0
77
Lambdaのこと
ririru0325
0
100
Other Decks in Technology
See All in Technology
React、まだ楽しくて草
uhyo
7
4.1k
Agentic Web
dynamis
1
160
Ruby::Boxでできること、Refinementsでできること
joker1007
3
400
「速く作る」から「正しく作る」へ ─ 生成AI時代の開発フロー改革の ロードマップと実行 ─
starfish719
0
8.4k
そのPoC、何を検証したつもりでしたか? AIプロダクトの価値検証で陥った落とし穴
techtekt
PRO
0
150
Rancherの紹介&Update情報(RancherJP Online Meetup #09)
yoshiyuki_kono
0
120
Amazon Bedrock AgentCore ワークショップ JAWS UG TOHOKU / amazon-bedrock-agentcore-workshop-jawsug-tohoku-2026
gawa
8
390
関西に縁あるMicrosoft MVPsが語るCopilotの未来
kasada
0
1.2k
美味しいスイスチーズを作ろう🧀🐭
taigamikami
1
260
コードレビューを制するチームがソフトウェアデリバリーのフローを制す / Beyond Code Review: Distributing Its Responsibilities Across the SDLC
mtx2s
4
1.2k
新規ゲーム開発におけるAI駆動開発のリアル
202409e2
0
2.8k
個人最適 から 全体最適 へ AI情報共有会・AIギルド・AI-DLC で進める カンリーの組織展開
rfdnxbro
0
1.8k
Featured
See All Featured
Visual Storytelling: How to be a Superhuman Communicator
reverentgeek
2
550
Joys of Absence: A Defence of Solitary Play
codingconduct
1
390
Scaling GitHub
holman
464
140k
Mobile First: as difficult as doing things right
swwweet
225
10k
Become a Pro
speakerdeck
PRO
31
6k
How People are Using Generative and Agentic AI to Supercharge Their Products, Projects, Services and Value Streams Today
helenjbeal
1
200
Digital Ethics as a Driver of Design Innovation
axbom
PRO
1
300
How Fast Is Fast Enough? [PerfNow 2025]
tammyeverts
3
600
Improving Core Web Vitals using Speculation Rules API
sergeychernyshev
21
1.5k
Context Engineering - Making Every Token Count
addyosmani
9
950
Exploring the Power of Turbo Streams & Action Cable | RailsConf2023
kevinliebholz
37
6.5k
What’s in a name? Adding method to the madness
productmarketing
PRO
24
4.1k
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