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

Quarkus Technical Deep Dive - Japanese

Quarkus Technical Deep Dive - Japanese

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

484571ccba0db66b69dc11761afdd0c4?s=128

Chihiro Ito

August 18, 2020
Tweet

Transcript

  1. Quarkus Technical Deep Dive 日本語 テクニカルセールス本部

  2. モノリス Kubernetes-Native Java クラウド ネイティブ マイクロ サービス サーバレス イベントドリブン アーキテクチャ

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

    デプロイメント 複数アプリ ライフサイクル 数ヶ月 メモリ      以上 起動時間     数 秒
  4. 仮想マシン アプリケーションサーバ 動的アプリフレームワーク アーキテクチャ マイクロサービス デプロイメント 単一アプリ ライフサイクル 数日 メモリ

         数 以上 起動時間     数秒 変化無し “近代的な” Enterprise Java スタック
  5. コンテナ・プラットフォーム ノード ノード ノード ヒープ ヒープ ヒープ ヒープ Java +

    コンテナに隠された事実
  6. クラウドネイティブと サーバーレスのための 新しい スタックが必要

  7. 音速のように超高速な 素粒子のように超小さい

  8. とは何か QUARK 素粒子 US コンピュータ科学で最も難しいこと

  9. クラウドネイティブJava OS プロジェクトの エキスパートたち

  10. 差別化要素 開発者の喜び ライブ・コーディング 統一された設定 最高の組み合わせの標準とライブラリ 90以上の拡張機能 “Quarkusを搭載した” アプリケーション コンテナ・ファースト HotSpotとGraalVM用にアプリを仕立てる

    高速起動時間と低 RSSメモリ サーバーレスに合う 命令型と反応型の統合 ブロッキングとノンブロッキングの統合 イベントバスを内蔵
  11. メリット 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) 速い起動時間 小さなディスク使用量
  12. 開発者の喜びを最適化するため凝縮した基盤 : • 基準などに基づいて • 統一された設定 • ライブコーディング • の一般的な使用法のための合理化されたコード、

    のための柔軟性 • 手間のかからないネイティブ実行ファイル生成 メリット No. 2: Developer Joy 私たちの開発者は、自分たちの変更を見るために 〜 分待っていました。 ライブコーディングではこれがなくなりました。 待って。保存するだけでコードが実行されるの? Javaで?! そうでしょう?勝利のための超音速 Java!
  13. メリット 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; }
  14. メリット No. 4: 最高の組み合わせのフレームワークと標準 "Quarkusを導入すると、新しい技術を学ぶ必要がないので、初日から生産性が上がります。"

  15. Supersonic, Subatomic 速い 燃えるような速さでスタート ミリ秒の速さ!

  16. 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 秒 最初の応答までの時間
  17. Supersonic, Subatomic メモリ消費量を改善 展開密度を向上

  18. Supersonic, Subatomic Java メモリ を 単位で表示、シングルコアマシンでテスト済み Quarkus + ネイティブ (GraalVM)

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

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

    上の 上の 上の 上の 上の 上の 上の ノード ネイティブ ネイティブ ネイティブ ネイティブ ネイティブ ネイティブ ネイティブ ネイティブ ネイティブ ネイティブ ネイティブ ネイティブ ネイティブ ネイティブ ネイティブ ネイティブ ネイティブ ネイティブ ネイティブ ネイティブ ネイティブ サービスの可用性 と 応答時間 を犠牲にすることなく、 3倍 の密度の高いデプロイを実行できます。
  21. QUARKUSは どの様に動くのか?

  22. パッケージング (maven, gradle…) ビルド時 稼働時 ファイルシステムから 設定ファイルを 読む それを解析 クラスパスを調査し

    アノテーションされたクラ スを検索 機能を有効/無効にするた めにクラスをロードしようと 試みる モデルを構築 管理を開始 (スレッド, プール …) フレームワークはどの様に開始するのか?
  23. Quarkus の方法 稼働時 ビルド時 ビルド時 稼働時

  24. 24 ahead-of-time, ビルド時, ランタイム コンパイル 準備 収集 結合と 組み立て 補強

    ネイティブ コンパイラ で稼働できるイメージ ネイティブ 実行イメージ フレームワー ク 実行可能 アプリ ネイティブ アプリ
  25. 拡張機能 コア JIT (OpenJDK) HotSpot AOTC (GraalVM ネイティブイメージ)

  26. JIT (OpenJDK HotSpot) 正しいデプロイメントに適したVM 高いメモリ密度の要件 高いリクエスト/秒/MB 高速な起動時間 最高の生の性能 (CPU) 最高のガベージコレクタ

    より高いヒープサイズの使用率 良く知られた監視ツール 一度コンパイルして、どこでも実行 標準JDKでのみ動作するライブラリ AOT (GraalVM native image) 最高のメモリ密度要件 最高のリクエスト/s/MB ヒープサイズが小さい場合 起動時間の短縮 サーバーレスの場合は数 10ms
  27. 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 *コミュニティサポート *
  28. Quarkus ツール - IDE VSCode Eclipse IntelliJ che.openshift.io

  29. 拡張できるエコシステム

  30. 活気のあるエコシステムの拡張機能

  31. あなたの依存関係を追加 独自の依存関係を追加できますか? • JVM上で動作 (OpenJDK) • AOT上でもたぶん動作 (GraalVM) 独自の拡張機能を書く •

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

    です Quarkusでは、非同期のリアクティブイベント ループを利用して、リアクティブなアプリケー ションを簡単に作成できます Quarkusでは、スケールアップやスケールダ ウン (0まで) が非常に高速であるため、サー バーレスアプリケーションを作成するための 理想的なランタイムです
  33. がサーバレス環境で の動作を改善

  34. サーバレスで採用される言語

  35. Quarkus - Java スタックを最適化 最適化されたアプリフレームワーク アーキテクチャ デプロイメント 単一アプリ ライフサイクル ミリ秒から数日

    メモリ      数 起動時間     ミリ秒 仮想マシン 選択肢
  36. None
  37. クラウド上でのクラウドネイティブアプ リ開発を促進: ✓クラウド上での開発を促進 ✓ コンテナの開発を簡素化 ✓ 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 に含まれており、利用可能です。
  38. 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)
  39. 追加の資料 顧客 資料 入門 コーディングを開始 コミュニティ Quarkus.io ガイド Blogs 開発者

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