$30 off During Our Annual Pro Sale. View Details »

Kabaneroを使ったJava EEアプリケーションのモダナイゼーション

Kabaneroを使ったJava EEアプリケーションのモダナイゼーション

架空の医療会社Example Health”のユースケースを使って
KabaneroのAppsody Stackの紹介
カスタマイズしたAppsody Stackを使ってJavaのサンプルアプリケーションをOpenShift 4.4にデプロイする方法の紹介
についての内容です。

Daisuke Hiraoka

June 26, 2020
Tweet

More Decks by Daisuke Hiraoka

Other Decks in Technology

Transcript

  1. を使ったJava EEアプリケーションのモダナイゼーション
    ~episode 0~
    Daisuke Hiraoka,
    Kabanero Meetup
    @HiraokaDaisuke

    View Slide

  2. Daisuke Hiraoka
    Twitter / LinkedIn: @HiraokaDaisuke
    Infracture Engineer @ my private company
    also IBM Champon for Cloud 2019, 2020

    View Slide

  3. 今日お話しする内容
    今回は20分しか時間がないので、
    “架空の医療会社Example Health”のユースケースを使って
    • KabaneroのAppsody Stackの紹介
    • カスタマイズしたAppsody Stackを使ってJavaのサンプルアプリ
    ケーションをOpenShift 4.4にデプロイする方法の紹介
    についてお話したいと思います。

    View Slide

  4. 2019年8月1日

    View Slide

  5. 2019年8月1日
    IBMは自社のソフトウェア・ポートフォリオをよりクラウド・ネイティブ強化に刷新し、
    「Red Hat OpenShift」上で動作するよう最適化した(かつ、していく)ことを発表
    この新しいクラウド・ネイティブ製品群が「IBM Cloud Paks」

    View Slide

  6. KabaneroとIBM Cloud Pak for Applications
    Red Hat OpenShift
    Container Platform
    IBM Cloud Pak for Applications
    WebSphere & IBM
    Runtimes
    Accelerator for Teams
    • Kabaneroは、マイクロサービスベースのフレームワークで、開発者、アーキテクト、およ
    び運用チームがより迅速に連携できるしくみ
    • Kabaneroは IBM Cloud Pak for ApplicationsにAccelerator for Teamsという名称で同梱さ
    れ主要な機能になっています。
    • Kabanero がアップストリームプロジェクトで Kabanero → Cloud Pak for
    Applications(Accelerator for Teams)の順番でリリースされます。
    • Kabaneroは歴史は浅いが勢いのあるプロジェクト
    Developer
    Tools & DevOps
    OpenSource
    Upstream Project
    Modenaization
    Toolkit
    OpenShift Container
    Platform

    View Slide

  7. 2019年9月

    View Slide

  8. IBM Application Modernization Technical Conference
    • このカンファレンスは2019年8月1日にIBM Cloud
    Paks発表後の初めてのテクニカルカンファレンス
    • IBM Cloud Paks for Applications開発関係者による
    アプリケーションのモダナイゼーションに関する
    セッション
    • 参加者はに関係するIBM社員、BP、ユーザー
    IBM Application Modernization Technical Conference 2019
    • 2019年9月にIBMのApplication Modernization Technical Conference に参加

    View Slide

  9. それで、現在、Kabaneroをキャッチアップ中です。

    View Slide

  10. IBM DeveloperのCode Patterns https://developer.ibm.com/jp/patterns/
    • IBM DeveloperのCode Patternsはさまざまなユースケースとソースコードが集まっていて、
    技術を習得するのに便利なサイト
    • 今回はCode Patterns 中から「 Java EEアプリ」のユースケースを使ってKabaneroを使った
    Java EEアプリのモダナイゼーションをやってみようと勉強しようと考えた。

    View Slide

  11. OpenShift による Java EE アプリケーションのモダナイズ
    https://developer.ibm.com/jp/patterns/jee-app-modernization-with-openshift/
    • Java EEアプリケーションをモダナイズしてDockerコンテナ化しOpenShiftで動かすシナリオ
    • Kabaneroのシナリオではないがユースケースとソースコードは流用できると考えた
    • 個人的には機能を勉強するのは飽きちゃうけど、シナリオがあると長続きする傾向がある。

    View Slide

  12. 実は・・・このCode Patternを使った記事を書いています。
    • この記事では、OpenShiftの標準的な機能を使って
    Java EEアプリケーションをDockerでコンテナ化しOpenShiftへ
    デプロイする手順を記述
    • 最新のOpenShift4でも使える手順なので、お試しください。
    https://www.atmarkit.co.jp/ait/articles/1911/15/news002.html

    View Slide

  13. Example Healthのユースケース
    IBM Code Patterns の「 OpenShiftによるJava EE アプリケーションのモダナイズ」より
    https://developer.ibm.com/jp/patterns/jee-app-modernization-with-openshift/
    Example Healthアーキテクチャ
    • Example Healthは架空の医療会社
    • この会社には歴史があり、数十万の患者記録がある
    • Example Healthのアプリケーションはモノリシックアプリケーション構造
     メインフレーム上のDb2データベース
     WebSphereで実行されるフルスタックのJavaアプリケーション

    View Slide

  14. Code Tools
    Runtime
    microservices
    Architecture
    Skill & Process People
    Example Healthのモダナイゼーション
    Platform
    containers
    12factor.net
    Priority
    検討をしなければいけないことがたくさん!

    View Slide

  15. View Slide

  16. View Slide

  17. appsody stack
    Base Container Image
    Red Hat UBI
    Runtime / Framwork
    Liberty
    Tool/ Library
    Maven, Gradle, npm
    Node.js、Eclipse Microprofile、Quarkus、Spring Boot などのオープン・ソースの
    ランタイムとフレームワークに対応する事前構成されたパッケージ

    View Slide

  18. AppsodyHub
    list
    Developer workflow using appsody

    View Slide

  19. AppsodyHub
    init
    Janeʼs App
    Developer workflow using appsody

    View Slide

  20. AppsodyHub
    Jane’s App
    run
    test
    debug
    Developer workflow using appsody

    View Slide

  21. AppsodyHub
    run
    test
    debug
    Janeʼs App
    Docker
    ローカル開発用の
    runtime配布
    Developer workflow using appsody

    View Slide

  22. AppsodyHub
    run
    test
    debug
    Janeʼs App
    build
    Developer workflow using appsody

    View Slide

  23. AppsodyHub
    run
    test
    debug
    build Janeʼs App
    Docker
    本番環境用のコン
    テナイメージ生成
    Developer workflow using appsody

    View Slide

  24. AppsodyHub
    deploy
    Jane’s App
    Docker
    本番環境用のコン
    テナイメージ
    Developer workflow using appsody

    View Slide

  25. AppsodyHub
    deploy
    Janeʼs App
    Docker
    本番環境用のコン
    テナイメージ
    Developer workflow using appsody

    View Slide

  26. appsody stackの構造
    appsody init example-health-stack コマンド
    で Appsodyプロジェクトを作成した時の構成
    example-health-stackの構造
    コンテナイメー
    ジの定義
    テンプレート
    (ソースコード)
    の定義
    Project
    Template
    ローカル開発用
    のDockerfile
    最終成果物
    生成用の
    Dockerfile
    example-
    health-stack
    ローカル開発用の
    コンテナイメージ

    View Slide

  27. appsody stackでDevOps
    デプロイ
    ビルド
    確認
    開発
    コミット
    確認
    開発
    コミット
    appsody stackの保守に専念
    アプリケーション開発に専念
    開発者はソースコードを書くこと、アーキテクトはappsody stackの保守と役割を明確に分ける概念なので
    開発者はDockerfileを触る必要がなく開発でき、それぞれの専門分野に専念できる。
    (Dockerfile,BaseImage,Middleware)

    View Slide

  28. Example Healthのappsody stackの検討
    Node.js
    Db2
    患者
    データ
    MySQL
    患者
    データ
    java-openliberty stack
    JAKARTA EEは Java EEを補完したものなので
    Javaのコード変えずにruntimeをモダナイズして動くのではないか
    進化

    View Slide

  29. java-openliberty stackのカスタマイズ
    参考サイト: Customizing application stacks
    https://kabanero.io/guides/working-with-stacks/
    テンプレート
    (ソースコード)
    を改修
    コンテナイメー
    ジの定義を改修
    java-openliberty Stackをコピーして、Example Health用のカスタマイズ stackを作成する。
    カスタマイズは時間の都合、別の機会でお話しします。
    デモ動画があるので関心のある方はご覧ください。
    https://www.youtube.com/watch?v=LOBmXYKSm3s

    View Slide

  30. AppsodyHub
    3. repo add Customize Stack
    Demo
    Customize Stack
    2. pull Customize Stack
    1. push Customize Stack
    4. init
    Janeʼs App
    Janeʼs App
    5. run
    Jane’s App
    Docker
    ローカル開発用の
    runtime配布
    6. deploy
    デモ動画:https://www.youtube.com/watch?v=8e377C3qJuw

    View Slide

  31. KabaneroのOpenShift4へのインストール(1)
    1. Kabaneroのインストールシェルを取得
    curl -s -O -L https://github.com/kabanero-io/kabanero-operator/releases/download/0.9.0/install.sh
    2. cluster-admin権限のユーザでログイン
    oc login ‒u kubeadmin
    3. install.shを実行してインストール開始(KAPPNAVの追加有無で yes or noを選択)
    ENABLE_KAPPNAV=yes|no ./install.sh
    Installing Kabanero Foundation
    https://kabanero.io/docs/ref/general/installation/installing-kabanero-foundation.html
    install.shを取得して実行するだけでインストールできるのでとても簡単

    View Slide

  32. KabaneroのOpenShift4へのインストール(2)
    install.shが終了するとOpenShiftのkabaneroプロジェクトに様々なOperatorが導入される。

    View Slide

  33. まとめ
    • Kabanero (Appsody)を使うことによって、簡単にローカル環
    境での開発、OpenShiftへのデプロイができる
    • 元々、WebSphereを使ったJavaアプリのクラウドへの移行が
    スコープのプロジェクト。今、IBMが重視しているOSSの1つ
    なので開発は当分止まらないと思われる。Javaモダナイゼー
    ションを考えている方は評価する価値があると思います。
    • ExampleHealthのJavaモダナイゼーションの続きは、
    Kabanero Meetupで披露したいと思います。

    View Slide

  34. 参考情報
    • 7/9 初夏のIBM Dojo #9 Kabaneroを使ったクラウド・ネイティブなアプリ開発を体験
    https://ibm-developer.connpass.com/event/178322/
    • Kabanero 公式ページをざっと翻訳してみた (2019年8月版)
    https://qiita.com/yamachan360/items/7b4a53758ecdbe876a5f
    • Kabaneroプロジェクトアップデート(2020年2月25日)
    https://qiita.com/osonoi/items/01f53e43baa4cd60c579
    • Kabanero - Blogs: https://kabanero.io/blogs
    • Kabanero - Guides: https://kabanero.io/guides/
    • Kabanero - Social Medias: https://twitter.com/KabaneroIO
    • Kabanero with IBM Developers: https://developer.ibm.com/open/projects/kabanero/

    View Slide

  35. Kabanero Meetup
    • 初めてのMeetupを3月27日に開催
    • kabaneroに興味がある有志で集まって情報をシェア
    • https://connpass.com/event/170606/

    View Slide

  36. Thank you!

    View Slide