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
Quakrus でシステム開発してみた結果 / 【東京】JJUG ナイトセミナー: ビール片手...
Search
Takaichi00
September 06, 2019
Technology
1
450
Quakrus でシステム開発してみた結果 / 【東京】JJUG ナイトセミナー: ビール片手にLT大会 9/6(金)開催
Takaichi00
September 06, 2019
Tweet
Share
More Decks by Takaichi00
See All by Takaichi00
自分から始めるアジャイルの道 ~内発的動機をきっかけに変わった価値観~
takaichi00
0
340
Java developer introduced to Rust-ADC2022
takaichi00
0
270
野球人・落合博満さんから学ぶ、アジャイルなマインドセット・プラクティス
takaichi00
1
850
【CICD2021】デプロイメントパイプラインの原理原則を再確認する / Confirm Deployment Pipeline Principle
takaichi00
11
4.5k
【JTF2021】SonarQube をより有効活用する / Effective SonarQube
takaichi00
1
2.6k
JJUG CCC 2021 Spring-Resolving OOME with JFR
takaichi00
2
3.5k
【Yahoo! JAPAN Agile 2nd】野球人・落合博満さんから学ぶスクラムマスター / デベロッパー
takaichi00
0
2.7k
【Developers Boost 2020】凡人エンジニアの生存戦略
takaichi00
1
2.9k
【ソフトウェアテスト自動化カンファレンス2020】CI パイプラインでのテスト戦略とその実現方法
takaichi00
3
5.5k
Other Decks in Technology
See All in Technology
入門 FormObject / An Introduction to FormObject #kaigionrails
expajp
2
1.4k
コンテキストエンジニアリングとは? 考え方と応用方法
findy_eventslides
4
810
GopherCon Tour 概略
logica0419
2
160
サプライチェーン攻撃に学ぶModuleの仕組みと セキュリティ対策
kuro_kurorrr
3
780
AI時代に活躍できるエンジニアとは #弁護士ドットコム
bengo4com
0
250
5年間のFintech × Rails実践に学ぶ - 基本に忠実な運用で築く高信頼性システム / 5 Years Fintech Rails Retrospective
ohbarye
9
3.3k
フルカイテン株式会社 エンジニア向け採用資料
fullkaiten
0
9k
PyCon JP 2025 DAY1 「Hello, satellite data! ~Pythonではじめる衛星データ解析~」
ra0kley
0
720
OCI Network Firewall 概要
oracle4engineer
PRO
1
7.7k
いま注目しているデータエンジニアリングの論点
ikkimiyazaki
0
520
PLaMoの事後学習を支える技術 / PFN LLMセミナー
pfn
PRO
7
2.5k
コンパウンドスタートアップにおけるQAの成長戦略
matsu802
4
580
Featured
See All Featured
Stop Working from a Prison Cell
hatefulcrawdad
271
21k
RailsConf & Balkan Ruby 2019: The Past, Present, and Future of Rails at GitHub
eileencodes
140
34k
[Rails World 2023 - Day 1 Closing Keynote] - The Magic of Rails
eileencodes
36
2.5k
It's Worth the Effort
3n
187
28k
Being A Developer After 40
akosma
90
590k
Save Time (by Creating Custom Rails Generators)
garrettdimon
PRO
32
1.6k
How To Stay Up To Date on Web Technology
chriscoyier
791
250k
Scaling GitHub
holman
463
140k
How to train your dragon (web standard)
notwaldorf
96
6.2k
Faster Mobile Websites
deanohume
310
31k
Code Reviewing Like a Champion
maltzj
525
40k
Java REST API Framework Comparison - PWX 2021
mraible
33
8.8k
Transcript
Quarkus でシステム開発してみた結果 髙市 智章 (Tomoaki Takaichi) Sep, 06, 2019【東京】JJUG ナイトセミナー:
ビール片手にLT大会
自己紹介 @Takaichi00 tomoaki.takaichi.5 ・髙市 智章(タカイチ トモアキ) ・Java でのシステム開発 ・アジャイル開発実践 /
社内布教 ・iTunes カード販売システム ・ショップ向けシステム
Quarkus とは GraalVM 内のコンパイラを用いて実行可能なネイティブバイナ リを生成し、コンテナ化できる webフレームワーク。Red Hat がスポンサーのOSSプロジェクト。
Quarkus 採用の背景① 〜クラウド化〜 仮設検証型のシステム開発にあたり、オンプレの開発から迅速に 環境を構築でき拡張や破棄も容易なクラウド環境への移行が必要 だった。当時カンバンツールとしてAzure DevOps を使用して いたため、Azure とAzure
DevOps のツールチェーン構築に踏 み切った。 参考: Microsoft ハックフェスト
Quarkus 採用の背景② 〜Spring Boot の限界〜 開発システムの特性からAKS (Azure Kubernetes Service) を
利用することに決定。しかし今まで、Spring Boot を主に利用 していたが、起動時間の遅さ、コンテナサイズの肥大化が課題 に。 → Quarkus の採用へ
Quarkus のいいところ ❏ JavaEE のAPI を用いて簡単にNative Image 化でき、かつ 高速起動と低容量が実現できる ❏
Quarkus ではCDI 実装として、ビルド時にバイトコードを生 成し、最適化する「arc」を使用している。よってjava -jar での起動も高速。(しかしCDIのすべての機能を実装している わけではない)
Quarkus ではまったところ ❏ 導入検証時、GraalVMのネイティブコンパイルのタイミング でSSL関連のエラーが発生 ❏ その他にも、ネイティブコンパイルにはビルド時に存在しな いクラスをリフレクションできないなどの制約があるため、 jar として起動することに決定。(それでもJavaEE
ランタイ ムのビルド時最適化を実装しているため起動は速い) ❏ DB と連携した自動 IT テスト実装時、 EntityManager を利 用するための設定に苦労
Quarkus ではまったところ pom.xml に設定を加えることで Uber-Jars の作成も可能。しか し、jar の中には署名jar が含まれており、それを除外しないと 起動時にエラーが発生した。
Quarkus コンテナ化の流れ Zulu が提供するAlpine Linuxと、jlink を使ってカスタムJRE をマルチステージビルドしたコンテナイメージの上で、 Qurakus が生成するUber-Jars を起動することでコンテナサイ
ズの削減に成功 zulu openjdk alpine zulu alpine Custom JRE jlink Uber-Jars
Quarkus サンプルコード 実際に開発しているコードを公開したいが、そうはいかないので サンプルを公開 ❏ クリーンアーキテクチャを意識した実装 ❏ @QuarkusTest によるテスト /
Mock / flyway / Wiremock 等を用いたテスト (を目指して実装中) https://github.com/Takaichi00/quarkus-sample
Quarkus で開発してみた感想 ❏ 実行 / テスト 共にSpring Bootに比べて起動速度は速く、容 量も小さい ❏
JavaEE 経験がある開発者との親和性が高い ❏ 既存アプリケーションでも徐々にQuarkus に移行するといっ た方法が選択できるのでは ❏ 使いこなすにはMicroProfile の仕様理解も必要 ❏ SpringのMockMvc みたいな柔軟なテストはできない ❏ 文献が少ない (日本語は特に...)
さいごに みなさんもぜひ Quarkus を使いましょう!! そして情報発信してくれると嬉しいです!!
ご清聴ありがとうございました