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 in containers and serverless
Search
Sponsored
·
SiteGround - Reliable hosting with speed, security, and support you can count on.
→
Shigeki Shoji
November 30, 2023
Technology
410
0
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
Java in containers and serverless
Shigeki Shoji
November 30, 2023
More Decks by Shigeki Shoji
See All by Shigeki Shoji
OpenID Connectによるサービス間連携
takesection
1
130
OpenID Connectによるサービス間連携
takesection
0
250
アーティファクト管理でサプライチェーン攻撃を回避!!
takesection
0
150
2025-12-19-LT
takesection
0
170
2025-12-11 nakanoshima.dev LT
takesection
0
190
アジャイルテストで高品質のスプリントレビューを
takesection
0
260
Introduction to kanjava
takesection
0
160
LT Slide 2025-04-22
takesection
0
250
Instructional Designer
takesection
0
230
Other Decks in Technology
See All in Technology
企業の現実世界をグラフで写し取る
sansantech
PRO
0
210
「今盗んで、後で解く」に備える ― AWSのポスト量子暗号入門
yama3133
2
280
Lambda MicroVMsが分からなすぎたので使い所を1から考えてみた
tsukuboshi
1
260
HolmesGPTで始めるSREエージェント入門!プラットフォームの障害調査はAIにお任せ 〜
leveragestech
PRO
0
120
Coil3を内部実装から読み解く~キャッシュ戦略とAVIF画像の描画〜/nikkei-tech-talk50
nikkei_engineer_recruiting
0
180
AIに書かせて、プラットフォームで縛る ― EKSプラットフォームで実践した責任境界と権限設計
elmodev09
1
1.1k
LT:「このままでいいのかな?」から一歩踏み出した私のデータキャリア選択〜社会人3年目に上京を決意したリアル〜Snowflake女子会 vol.8
snowwmn0824
0
120
メルカリにおけるAI時代の高速プロトタイピング基盤「Arca」
ryotarai
18
13k
20260930_Gemma4_Hands-on
tsho
0
170
DORA_Metrics.pdf
wagnerfusca
1
140
Snowflake Horizon Catalog と Apache Iceberg で作る オープンなデータ基盤
kitagawaz
0
340
全社共通データ基盤をつくる。ソニーのDatabricks活用とデータガバナンス設計の裏側
sony
0
250
Featured
See All Featured
The Language of Interfaces
destraynor
162
27k
Sharpening the Axe: The Primacy of Toolmaking
bcantrill
46
3k
Learning to Love Humans: Emotional Interface Design
aarron
275
41k
Optimizing for Happiness
mojombo
378
71k
Cheating the UX When There Is Nothing More to Optimize - PixelPioneers
stephaniewalter
287
14k
I Don’t Have Time: Getting Over the Fear to Launch Your Podcast
jcasabona
35
2.9k
Leadership Guide Workshop - DevTernity 2021
reverentgeek
1
380
How People are Using Generative and Agentic AI to Supercharge Their Products, Projects, Services and Value Streams Today
helenjbeal
1
340
実際に使うSQLの書き方 徹底解説 / pgcon21j-tutorial
soudai
PRO
203
76k
The Curse of the Amulet
leimatthew05
3
15k
Odyssey Design
rkendrick25
PRO
2
840
The Success of Rails: Ensuring Growth for the Next 100 Years
eileencodes
47
8.3k
Transcript
コンテナ・サーバーレス環境に 対応しよう 2023年11月30日 Shigeki Shoji
庄司重樹 受賞歴 AWS 2023 Japan Top Engineers 資格 AWS認定12冠 (All
Certifications) Professional Scrum Product Owner I Professional Scrum Master I Professional Scrum Developer I 翻訳レビュー Sam Newman著「モノリスからマイクロサービスへ」 2020. O’Reilly. コミュニティ AWS Community Builders program、関ジャバ、JJUG、Scala関西、もめんと会他 2
イベントの 宣伝 梅田で「もめんと会」します。よろしくお願いしま す! https://momentocommunity.connpass.com/event/3 02306/ 3
アジェンダ • 進化的アーキテクチャ • Javaの課題 • サイズを小さく • 起動時間を短く •
まとめ 4
進化的 アーキテ クチャ 漸進的 誘導的 多元的 “Monoliths are not dinosaurs”
- @WERNER https://www.allthingsdistributed.com/2023/05 /monoliths-are-not-dinosaurs.html 5
なぜJava? • 漸進的な小さな変更のために、動いているモ ジュールを再利用したい • 言語を変えて漸進的な小さな変更を実現する のは難しいかもしれない。どちらかというと 破壊的変更につながる場合が多そう 6
Javaは進化 を続けて いる JVMは人類の叡智の結晶だ 7
Quiz コンテナ・サーバーレスのアプリケーションで重要なことは? 1. イメージサイズの小ささ 2. 依存ライブラリのロードの俊敏さ 3. 起動の俊敏さ 8
俊敏なス ケール要 求 • 以前はサーバの増設、キャパシティを増やす のに数ヶ月かかることも多かった • 仮想化の進化、クラウドの登場により、今で は1秒以内でサーバのスケールが要求されるこ とも
9
高速な起 動を阻む もの達 • イメージのロードにかかる時間 • クラスファイルの解釈、Just In Timeコンパイ ラがコンパイルする時間
• 必要なリソースへの接続等の初期化 10
イメージ のロード にかかる 時間の短 縮 • コンテナの場合 distroless などの小さく不要 なものを含まないベースイメージを選択しよ
う • jlinkを使って小さく不要なものを含まない Javaランタイムを準備しよう https://learn.microsoft.com/ja- jp/java/openjdk/java-jlink-runtimes 11
jlink • Java 9 以降で使用可能 • 必要なモジュールだけのJREを作れる 12
Nativeイ メージに する • メリット • イメージサイズを大幅に小さくできる • 起動の高速化が期待できる •
デメリット • リフレクションが使えない場合がある等、 使える言語機能に制約があり、コードの修 正が必要になるかもしれない • JITによる最適化が期待できない 13
CRaCを使 う • メリット • プロビジョニングする同時実行数の見積も りが不要 • SnapStart にかかる課金がない
• デメリット • AWS LambdaではArmをサポートしていな い • 初期化時に外部リソース等を保持している 場合、Runtime hooksの実装が必要になる かもしれない • Java 11 以降 (Java 11、Java 17、Java 21) のマネージドランタイムのみサポート • Provisioned Concurrency との併用ができ ない等 14
CRaC があるとき〜 15 https://github.com/takesection-sandbox/aws-lambda-scala
CRaC がないとき〜 16
トレンド InfoQ Java Trends Report - November 2023で は、CRaC がイノベータに
https://www.infoq.com/articles/java-trends- report-2023/ 17
起動した インスタ ンスを保 持する • メリット • Javaランタイムに限らず、また Intel でも
Arm でもどちらにも適用可能 • デメリット • 5分単位での課金 • 必要なインスタンス数を見積もる必要があ る 18
コネク ション プール • RDBなどのリソースに毎回接続すると、認証 等にかかるオーバーヘッドがある。これを回 避するためにあらかじめ一定量の接続を保持 して、必要に応じてこれを払い出すパターン がある。 •
複数スレッドが異なるトランザクションを実 行する、伝統的なサーバアプリケーションで は有用だったが、サーバーレスのように1イ ンスタンス1トランザクションという処理だ と基本的に不要。さらにスケールした場合に 使われない接続が大量に発生することになる が、これはRDB側にとって害となる。 • ただし、接続が切れた時に自動的に再接続す る機能は嬉しいかもしれない。 19
コンポー ネントス キャンに 注意 • Spring Framework等にあるコンポーネントス キャンは依存ライブラリから必要なクラスを 見つけるときzipにアーカイブされたファイル 一覧を読み取り、インジェクションを実行す
る。一般的にこの処理は遅く、起動時間に影 響する。 • クラス数の少ないパッケージをコンポーネン トスキャンの対象に選ぶ。 https://github.com/takesection- sandbox/scan-classpath 20
まとめ • イメージサイズを小さくしよう • 初期化処理はほどほどに • CRaC、初期化済みインスタンスの活用、 Native化のメリット、デメリットを検討して 採用しよう 21
22 ご清聴ありがとうございました