Slide 1

Slide 1 text

2019年 6⽉ 19⽇ レッドハット株式会社 テクニカルセールス本部 OpenShiftスペシャリスト 須江 信洋 (@nobusue) JavaをCloud Nativeに最適化する Quarkusの衝撃 1 JJUG ナイトセミナー 「Java on Azure まつり@Microsoft」

Slide 2

Slide 2 text

⾃⼰紹介 2 須江 信洋(すえ のぶひろ) • Mail: [email protected] • Twitter: @nobusue Ø 約14年JavaEE関連に携わる(1999〜2013) Ø IoTサービス関連Startupで開発から運⽤まで (2014〜2017) • ストリーミングデータ処理、マイクロサービス化、 コンテナプラットフォーム構築/運⽤ Ø Red HatでOpenShift担当Solution Architect(2017/4〜)

Slide 3

Slide 3 text

3 https://quarkus.io/

Slide 4

Slide 4 text

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時点で最も詳しい解説

Slide 5

Slide 5 text

Javaをクラウドネイティブに!! 5 Supersonic Subatomic Java

Slide 6

Slide 6 text

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

Slide 7

Slide 7 text

前提条件 7 • JDK8+ (JDK12は未解決の課題あり) • Maven 3.5.3+ (Gradleも使えます) • GraalVM CE 1.0.0-rc16 (Native Buildを⾏う場合) • Docker Desktopなど (Linuxコンテナをビルドする場合)

Slide 8

Slide 8 text

プロジェクトの雛形作成 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"

Slide 9

Slide 9 text

Devモード / ビルド 9 • Devモード: ファイル変更検知とLive Reloadが可能 $ ./mvnw compile quarkus:dev • Javaビルド: Executable Jarを⽣成 $ ./mvnw package • Nativeビルド: Native Binaryを⽣成 $ ./mvnw package -Pnative

Slide 10

Slide 10 text

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

Slide 11

Slide 11 text

コンテナイメージのビルドと実⾏ 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に変更するとよい

Slide 12

Slide 12 text

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

Slide 13

Slide 13 text

OpenShift 3.x: エンタープライズCaaS/PaaS基盤 13 CONTAINER Image OS RUNTIME APP ビルド デプロイ・オーケストレーション 利 用 ソースコード Node Node Node

Slide 14

Slide 14 text

OpenShift Evolutions 14 OPENSHIFT 2 OPENSHIFT 3 OPENSHIFT 4 PaaS-Focused Kubernetes-Focused Multi Cloud-Focused ビジネスの柔軟性を支えるために、マルチクラウドや多様なワークロードへの対応を強化 (独⾃のPaaS機能強化) (Kubernetesによる標準化) (エンタープライズ向けクラウドネイティブの実装)

Slide 15

Slide 15 text

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

Slide 16

Slide 16 text

AzureでOpenShiftを使うには 16 テンプレートで比較的簡単に構築できます(エラーが出て失敗したように見えることがありますが、ちゃんと入ってるのであきらめない)

Slide 17

Slide 17 text

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

Slide 18

Slide 18 text

Quarkusの注意点 18 1) なんでもかんでもQuarkusでビルドできるわけではない =>Extensionでの対応が必要 2) ネィティブビルドにはGraalVMが必要 =>Quarkus0.16.x の場合、GraalVM 1.0RC16が必要 3) JDKのバージョンに注意 =>JDK8以上が必要だが、2019/6/19現在はJDK12では動かない

Slide 19

Slide 19 text

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

Slide 20

Slide 20 text

Quarkus Tutorial by Kamesh Sampath & Edson Yanaga 20 https://github.com/redhat-developer-demos/quarkus-tutorial We need feedback!!

Slide 21

Slide 21 text

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