Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Quarkus Technical Deep Dive - Japanese

Chihiro Ito
August 18, 2020

Quarkus Technical Deep Dive - Japanese

現在システムに求められる要件は必要に応じて 0 からスケールアウトするなど可用性や性能といった面で大きく変化しています。それらの要件を実現するため、サーバレスやクラウドネイティブという技術が必要となっています。それらの技術を容易に導入できる Quarkus の内部はどの様に動作しているのかを簡単に紹介します。

Chihiro Ito

August 18, 2020
Tweet

More Decks by Chihiro Ito

Other Decks in Technology

Transcript

  1. “歴史的な” Enterprise Java スタック ハードウェア 仮想マシン アプリケーションサーバ 動的アプリフレームワーク アーキテクチャ モノリス

    デプロイメント 複数アプリ ライフサイクル 数ヶ月 メモリ      以上 起動時間     数 秒
  2. メリット No. 1: コンテナ・ファースト 私たちは 1 分 の起動時間が 400 ミリ秒になった

    Quarkus + Native 12 MB Quarkus + JVM 73 MB Traditional Cloud-Native Stack 136 MB メモリ使用量を削減 Quarkus + Native (.016 secs) Quarkus + JVM (0.943 secs) Traditional Cloud-Native Stack (4.3 secs) 速い起動時間 小さなディスク使用量
  3. 開発者の喜びを最適化するため凝縮した基盤 : • 基準などに基づいて • 統一された設定 • ライブコーディング • の一般的な使用法のための合理化されたコード、

    のための柔軟性 • 手間のかからないネイティブ実行ファイル生成 メリット No. 2: Developer Joy 私たちの開発者は、自分たちの変更を見るために 〜 分待っていました。 ライブコーディングではこれがなくなりました。 待って。保存するだけでコードが実行されるの? Javaで?! そうでしょう?勝利のための超音速 Java!
  4. メリット No. 3: 命令型とリアクティブ型を統合 • 命令型とリアクティブの開発の両方を つのアプリケーションに統合 • イベントバスまたは コンテキストを注入

    • ユースケースに適した技術を使用 • イベント駆動アプリを基盤としたリアクティブシステムの重要性 @Inject SayService say; @GET @Produces(MediaType.TEXT_PLAIN) public String hello() { return say.hello(); } @Inject @Stream(”kafka”) Publisher<String> reactiveSay; @GET @Produces(MediaType.SERVER_SENT_EVENTS) public Publisher<String> stream() { return reactiveSay; }
  5. Supersonic, Subatomic Java Quarkus + ネイティブ (GraalVM) 0.016 秒 Quarkus

    + JVM (OpenJDK) 0.943 秒 Quarkus + ネイティブ (GraalVM) 0.042 秒 Quarkus + JVM (OpenJDK) 2.033 秒 伝統的なクラウドネイティブスタック 9.5 秒 伝統的なクラウドネイティブ・スタック 4.3 秒 最初の応答までの時間
  6. Supersonic, Subatomic Java メモリ を 単位で表示、シングルコアマシンでテスト済み Quarkus + ネイティブ (GraalVM)

    12 MB Quarkus + JVM (OpenJDK) 73 MB 伝統的な クラウドネイティブスタック 136 MB
  7. Quarkus + ネイティブ (GraalVM) 28 MB Quarkus + JVM (OpenJDK)

    145 MB 伝統的な クラウドネイティブスタック 209 MB メモリ を 単位で表示、シングルコアマシンでテスト済み Supersonic, Subatomic Java
  8. クラウドネイティブ Java スタック + コンテナ コンテナ・オーケストレーション ノード ノード ノード ノード

    上の 上の 上の 上の 上の 上の 上の ノード ネイティブ ネイティブ ネイティブ ネイティブ ネイティブ ネイティブ ネイティブ ネイティブ ネイティブ ネイティブ ネイティブ ネイティブ ネイティブ ネイティブ ネイティブ ネイティブ ネイティブ ネイティブ ネイティブ ネイティブ ネイティブ サービスの可用性 と 応答時間 を犠牲にすることなく、 3倍 の密度の高いデプロイを実行できます。
  9. パッケージング (maven, gradle…) ビルド時 稼働時 ファイルシステムから 設定ファイルを 読む それを解析 クラスパスを調査し

    アノテーションされたクラ スを検索 機能を有効/無効にするた めにクラスをロードしようと 試みる モデルを構築 管理を開始 (スレッド, プール …) フレームワークはどの様に開始するのか?
  10. 24 ahead-of-time, ビルド時, ランタイム コンパイル 準備 収集 結合と 組み立て 補強

    ネイティブ コンパイラ で稼働できるイメージ ネイティブ 実行イメージ フレームワー ク 実行可能 アプリ ネイティブ アプリ
  11. JIT (OpenJDK HotSpot) 正しいデプロイメントに適したVM 高いメモリ密度の要件 高いリクエスト/秒/MB 高速な起動時間 最高の生の性能 (CPU) 最高のガベージコレクタ

    より高いヒープサイズの使用率 良く知られた監視ツール 一度コンパイルして、どこでも実行 標準JDKでのみ動作するライブラリ AOT (GraalVM native image) 最高のメモリ密度要件 最高のリクエスト/s/MB ヒープサイズが小さい場合 起動時間の短縮 サーバーレスの場合は数 10ms
  12. Quarkus ツール - ビルド mvn io.quarkus:quarkus-maven-plugin:1.3.2.Final-redhat-00001:create \ -DprojectGroupId=org.acme \ -DprojectArtifactId=getting-started

    \ -DplatformGroupId=com.redhat.quarkus \ -DplatformVersion=1.3.2.Final-redhat-00001 \ -DclassName="org.acme.quickstart.GreetingResource" \ -Dpath="/hello" cd getting-started *コミュニティサポート *
  13. あなたの依存関係を追加 独自の依存関係を追加できますか? • JVM上で動作 (OpenJDK) • AOT上でもたぶん動作 (GraalVM) 独自の拡張機能を書く •

    依存関係を追加するように … • ビルド時間の起動とメモリの改善 • より良いデッドコードの排除 • 開発者の喜び YES
  14. 使用事例 "Quarkusは理想的なランタイム ” 低メモリフットプリント+高速起動時間+小 ディスクフットプリント=Kubernetesネイティ ブのマイクロサービスに理想的なランタイム です Quarkusは、既存のモノリシックアプリケー ションをより小さく、疎結合のマイクロサービ スに分割して近代化するのに最適な選択肢

    です Quarkusでは、非同期のリアクティブイベント ループを利用して、リアクティブなアプリケー ションを簡単に作成できます Quarkusでは、スケールアップやスケールダ ウン (0まで) が非常に高速であるため、サー バーレスアプリケーションを作成するための 理想的なランタイムです
  15. クラウド上でのクラウドネイティブアプ リ開発を促進: ✓クラウド上での開発を促進 ✓ コンテナの開発を簡素化 ✓ DevOpsを自動化 ✓ ツールとプロセスの標準化 ✓

    完全にサポートされたJDK サービスを立ち上げ JAVA WEB JBOSS WS JAVA/JAKARTA EE JBOSS EAP JAVA SE OPENJDK SERVERLESS Coming* SPRING SPRING BOOT JAVASCRIPT NODE.JS DISTRIBUTED DATA DATA GRID MESSAGING AMQ BROKER MICROPROFILE THORNTAIL, OPEN LIBERTY REACTIVE VERT.X SSO 認証 Red Hat Runtimes* JAVA.NEXT QUARKUS "既存のアプリ、未来のアプリ、そしてその間の変革をサポート" *Red Hat build of Quarkus は Red Hat Runtimes に含まれており、利用可能です。
  16. Red Hat でのアプリケーション環境 "Quarkusはハイブリッドクラウドアプリのための次世代の Red Hatスタックを強化” Kogito Camel K AMQ

    Streams (Kafka) 3Scale API Registry CodeReady Workspaces Quarkus Data Grid SSO OpenShift Extensions (OpenShift, Kubernetes, container build)
  17. 追加の資料 顧客 資料 入門 コーディングを開始 コミュニティ Quarkus.io ガイド Blogs 開発者

    対話形式のチュートリアル ビデオ Tips & Tricks (QTips) ブログと記事 ユーザの話