Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Sign up for free
Menu
Search
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Pricing
Search
Sign in
Sign up for free
Java ランタイムからカスタムランタイムに行き着くまで
Search
Sho
February 19, 2026
Technology
570
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
150
AWS歴6年のSaaS企業が直面する低凝集マイクロサービスの課題とその解決アプローチ
ririru0325
0
47
エムオーテックスの現場_-_SaaSプロダクトのアーキテクチャ変革と技術負債解消の道のり
ririru0325
0
90
できたこと・やっていきたいこと
ririru0325
0
66
jq を駆使して aws cli の運用を最適化
ririru0325
1
200
サーバーレス SaaS における運用監視の負荷軽減のためのアプローチ
ririru0325
0
450
サーバーレスアプリケーションの観測を適正化し、運用負荷を減らしていってる話
ririru0325
0
84
Lambdaのこと
ririru0325
0
110
Other Decks in Technology
See All in Technology
AI駆動開発で仕様はどこまで書くべきか? ― 人とAIの責務境界から考える開発プロセスの実践
takahiromatsui
1
290
Claude起点の仕様駆動開発
tanakaseiya
0
280
インバスケット試験対策アプリを 作って見えたAIエージェント構築 ナレッジ2選
shichijoyuhi
1
110
営業オントロジーの作り方と、エージェントからの辿り方 ── ナレッジワークの現場から
kworkdev
PRO
1
230
形式手法を使って仕様をコーディングしよう
mikanichinose
0
160
Account Factory for Terraformによる 標準化されたアカウント発行の自動化
pensuke628
0
120
【データ横丁主催】AI Agentがコンテキストを使って仕事をした後、何が残るのか― 組織の経験を次の判断に引き継ぐ「Agent Memory」
shisyu_gaku
2
310
顧客の成果創出とプロダクトの成長を 両立するためのFDE
sansantech
PRO
0
610
The seven pitfalls of AI (revised version)
ufried
0
180
AIは爆速なのに、私が詰まっていた話 ― 音声入力と鳴くマスコットでボトルネックを削る
yama3133
0
260
Claude Designがめちゃくちゃ便利なので使ってほしい
diggymo
0
190
Oracle Base Database Service 技術詳細
oracle4engineer
PRO
16
120k
Featured
See All Featured
Getting science done with accelerated Python computing platforms
jacobtomlinson
2
500
VelocityConf: Rendering Performance Case Studies
addyosmani
331
25k
Become a Pro
speakerdeck
PRO
31
6.3k
Leveraging Curiosity to Care for An Aging Population
cassininazir
1
520
A Soul's Torment
seathinner
8
3.7k
Making Projects Easy
brettharned
120
6.8k
Bootstrapping a Software Product
garrettdimon
PRO
306
120k
GraphQLの誤解/rethinking-graphql
sonatard
75
12k
Data-driven link building: lessons from a $708K investment (BrightonSEO talk)
szymonslowik
1
1.3k
The MySQL Ecosystem @ GitHub 2015
samlambert
251
13k
How to audit for AI Accessibility on your Front & Back End
davetheseo
0
560
The SEO Collaboration Effect
kristinabergwall1
1
580
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