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

Quarkus Impacts Java to Cloud Native

Quarkus Impacts Java to Cloud Native

Nobuhiro Sue

June 19, 2019
Tweet

More Decks by Nobuhiro Sue

Other Decks in Technology

Transcript

  1. 2019年 6⽉ 19⽇ レッドハット株式会社 テクニカルセールス本部 OpenShiftスペシャリスト 須江 信洋 (@nobusue) JavaをCloud

    Nativeに最適化する Quarkusの衝撃 1 JJUG ナイトセミナー 「Java on Azure まつり@Microsoft」
  2. ⾃⼰紹介 2 須江 信洋(すえ のぶひろ) • Mail: [email protected] • Twitter:

    @nobusue Ø 約14年JavaEE関連に携わる(1999〜2013) Ø IoTサービス関連Startupで開発から運⽤まで (2014〜2017) • ストリーミングデータ処理、マイクロサービス化、 コンテナプラットフォーム構築/運⽤ Ø Red HatでOpenShift担当Solution Architect(2017/4〜)
  3. Quarks is 何? 4 Java Code Build (optimized / live

    reload) Native Build Java Binary Native Binary JavaVM (Containerized) For Development For Production • JVM-less • 100x boot speed • 1/10 memory Quarkus入門 http://n-agetsuma.hatenablog.com/entry/2019/05/22/202713 =>おそらく2019/6/19時点で最も詳しい解説
  4. Container Friendly <= QUARKUS NATIVE DEPLOYMENT 6 CONTAINER ORCHESTRATION Node

    Node Traditional Cloud-Native Java Stack Traditional Cloud-Native Java Stack Traditional Cloud-Native Java Stack Traditional Cloud-Native Java Stack Quarkus Quarkus Quarkus Quarkus Quarkus Quarkus Quarkus Quarkus Quarkus Quarkus Quarkus Quarkus Quarkus Quarkus Quarkus Quarkus Quarkus Quarkus Quarkus Quarkus Quarkus Quarkus Quarkus Quarkus Quarkus Quarkus Quarkus Quarkus Quarkus Quarkus Quarkus Quarkus Quarkus Quarkus Quarkus Quarkus Quarkus Quarkus Quarkus Quarkus
  5. 前提条件 7 • JDK8+ (JDK12は未解決の課題あり) • Maven 3.5.3+ (Gradleも使えます) •

    GraalVM CE 1.0.0-rc16 (Native Buildを⾏う場合) • Docker Desktopなど (Linuxコンテナをビルドする場合)
  6. プロジェクトの雛形作成 8 以下が⽣成される • Maven pomとwrapper • エンドポイント "/hello" に対応したリソースクラス

    • JVM実⾏およびNative実⾏⽤のDockerfile mvn io.quarkus:quarkus-maven-plugin:0.16.1:create ¥ -DprojectGroupId=org.acme ¥ -DprojectArtifactId=getting-started ¥ -DclassName="org.acme.quickstart.GreetingResource" ¥ -Dpath="/hello"
  7. Devモード / ビルド 9 • Devモード: ファイル変更検知とLive Reloadが可能 $ ./mvnw

    compile quarkus:dev • Javaビルド: Executable Jarを⽣成 $ ./mvnw package • Nativeビルド: Native Binaryを⽣成 $ ./mvnw package -Pnative
  8. Developer Joy: Live Reload by Dev Mode 10 2019-05-27 18:27:16,898

    INFO [io.qua.dev] (executor-thread-1) Changed source files detected, recompiling [/Users/nobusue/redhat/quarkus-tutorial/work/my-quarkus- project/src/main/java/org/acme/quarkus/sample/HelloResource.java] 2019-05-27 18:27:17,861 INFO [io.quarkus] (executor-thread-1) Quarkus stopped in 0.004s 2019-05-27 18:27:17,862 INFO [io.qua.dep.QuarkusAugmentor] (executor-thread-1) Beginning quarkus augmentation 2019-05-27 18:27:18,193 INFO [io.qua.dep.QuarkusAugmentor] (executor-thread-1) Quarkus augmentation completed in 331ms 2019-05-27 18:27:18,240 INFO [io.quarkus] (executor-thread-1) Quarkus 0.15.0 started in 0.378s. Listening on: http://[::]:8080 2019-05-27 18:27:18,240 INFO [io.quarkus] (executor-thread-1) Installed features: [cdi, resteasy] 2019-05-27 18:27:18,241 INFO [io.qua.dev] (executor-thread-1) Hot replace total time: 1.344s
  9. コンテナイメージのビルドと実⾏ 11 $ ./mvnw package -Pnative -Dnative-image.docker-build=true $ docker build

    -f src/main/docker/Dockerfile.native ¥ -t quarkus/getting-started . $ docker run -i --rm -p 8080:8080 quarkus/getting-started • "-Pnative"はデフォルトではビルドを実⾏した環境向けのネイティブバイナリ を⽣成するので、コンテナ化する場合にはLinuxのバイナリを⽣成する指⽰が 必要 • デフォルトのDockerfile.nativeではベースイメージがFedoraのlatestになって おり起動に失敗するため、ベースイメージを registry.access.redhat.com/ubi8/ubi-minimalに変更するとよい
  10. RED HAT UNIVERSAL BASE IMAGE (UBI) 12 Red Hat Universal

    Base Image(UBI)は、 Red Hat Enterprise Linuxをベースとした、 利⽤および再配布が⾃由に⾏える コンテナイメージ Development • Minimal footprint • Latest programming languages • Makes ops happy Production • Performance • Security • Life cycle CONTAINER UBI RUNTIME APP RED HAT PLATFORM CONTAINER UBI RUNTIME APP NON-RED HAT PLATFORM Fully supported by Red Hat Supported by end user
  11. OpenShift 3.x: エンタープライズCaaS/PaaS基盤 13 CONTAINER Image OS RUNTIME APP ビルド

    デプロイ・オーケストレーション 利 用 ソースコード Node Node Node
  12. OpenShift Evolutions 14 OPENSHIFT 2 OPENSHIFT 3 OPENSHIFT 4 PaaS-Focused

    Kubernetes-Focused Multi Cloud-Focused ビジネスの柔軟性を支えるために、マルチクラウドや多様なワークロードへの対応を強化 (独⾃のPaaS機能強化) (Kubernetesによる標準化) (エンタープライズ向けクラウドネイティブの実装)
  13. Enterprise Kubernetes としての信頼性 - CoreOS, パッケージ, プラットフォーム - 全⾃動インストーラー -

    Over the Air Updates & Day 2 運⽤管理 どのような環境でもクラウド的なUXを提供 - ハイブリッド, マルチクラスタ管理 - オペレーターフレームワーク - OperatorHub、認定ISV 開発者に更なるパワーを - OpenShift Service Mesh (Istio) - サービスメッシュ - OpenShift Serverless (Knative) - サーバレス - CodeReady Workspaces (Che) - k8s native開発環境 15
  14. Azure上のエンタープライズグレード のOpenShift クラスタを数分で提供 デベロッパーからのイノベーションを加速させる 従来型の開発技術からクラウドネイティブ、サーバーレスツールをサポート MySQL, PostgreSQL, Redis, Cosmos DBのようなAzureが提供する数百以上の

    各種サービスからも簡単に利⽤できます。 スケール・オン・デマンド、Pay-As-You-Go(従量課⾦). アプリケーションの要件に応じてアプリケーションのスケールはオンデ マンドに拡張でき、標準環境、メモリの増強、効率性の⾼いCPUをアプ リケーションノードへの割当もオンデマンドに Azure Red Hat OpenShift (ARO) Microsoft と Red Hat の共同エンジニアリング、運⽤、統合サポートを提供 企業レベルの運⽤、セキュリティ、コンプライアンスに対応 ⾼いSLAを提供 (99.9%) + ⾼評価の Azureサポートを利⽤できる SOC, ISO, PCI DSS, CSA and HIPAA regulatory compliance (coming soon) 信頼のおける Enterprise Kubernetes マネージドサービスを提供 17
  15. Quarkusに⼊⾨するには 19 1) なにはともあれGetting Started https://quarkus.io/get-started/ 2) Extensionを使ってみよう! https://quarkus.io/extensions/ 3)

    気になるExtensionのソースを読んでみよう! https://github.com/quarkusio/quarkus/tree/master/extensions 4) Extensionを作ってみよう! https://quarkus.io/guides/extension-authors-guide $ ./mvnw quarkus:list-extensions
  16. linkedin.com/company/red-hat youtube.com/user/RedHatVideos facebook.com/redhatinc twitter.com/RedHat Red Hat is the world’s leading

    provider of enterprise open source software solutions. Award-winning support, training, and consulting services make Red Hat a trusted adviser to the Fortune 500. Thank you Red Hat Tech Night 2019.05