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」

    View Slide

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

    View Slide

  3. 3
    https://quarkus.io/

    View Slide

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

    View Slide

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

    View Slide

  6. 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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

  10. 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

    View Slide

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

    View Slide

  12. 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

    View Slide

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


    ソースコード
    Node Node Node

    View Slide

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

    View Slide

  15. 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

    View Slide

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

    View Slide

  17. 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

    View Slide

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

    View Slide

  19. 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

    View Slide

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

    View Slide

  21. 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

    View Slide