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

IBM Liberty Dojo (3)tWASからLibertyへのモダナイズ

Water
July 20, 2022

IBM Liberty Dojo (3)tWASからLibertyへのモダナイズ

IBM Liberty Dojo (3)
tWASからLibertyへのモダナイズ
Transformation AdvisorによるエンタープライズJavaEEアプリのマイグレーション
https://ibm-developer.connpass.com/event/252232/

Water

July 20, 2022
Tweet

More Decks by Water

Other Decks in Technology

Transcript

  1. 3

  2. 4 本日のアジェンダ! • tWASとLibertyの説明(10分) • Libertyへのモダナイズ (5分) • 移行ツールの説明(10分) •

    Migration Toolkit for Application Binaries のデモ(5分) • TAの説明とデモ(20分) • Q&A(5分)
  3. 7 WAS V8.5 Liberty プロファイル 提供開始 WebSphereの歴史 1999 2000 2001

    2002 2008 WAS V3.0 EJB WAS V3.5 Java 2 マルチOSサポート 1998 2003 WAS V5.0 J2EE 1.3 JDK1.3 分散環境の新トポロジー WS-I Basic Profile 1.0 WAS V2.0 WAS V3.0 WAS V3.5 WAS V4.0 WAS V5.0 WAS V5.1 WAS V5.1 JDK1.4 JSF PME 最新のWS* WAS V6.1 2004 2005 WAS V6.0 2006 WAS V6.0 J2EE 1.4 HA機能拡張 SOA対応 新Mesaging Engine 最新のWS* WAS V6.1 Feature Pack WAS V6.1 JDK 5 SIPサポート 開発ツール(AST) 最新のWS* 2007 J2EE 1.2 J2EE 1.3 J2EE 1.4 WAS V4.0 J2EE 1.2 Webサービスサポート 動的キャッシュ リソースアナライザー WAS V7 2009 2010 WAS V7 FP WAS V7 Java EE 5 / JDK 6 柔軟な管理 ランタイム・プロビジョニング コードとFixの集中管理 Java高速化(参照圧縮) WAS V8.0 Java EE 6 WAS V8.0 Java EE 6 / JDK 6 バッチ実行環境 ログ・トレース高速化 集中インストレーション管理 2011 WAS V8.5 WAS V8.5.5 2012 WAS V8.5.5.6 WAS Liberty Java EE 7対応 WAS V1.1 WAS V1.0 Java EE 5 2013 2014 Java EE 7 2015 2016 WAS V8.5.5.6 WAS V9 2017 2018 2019 Java EE 8 Libertyによる 継続的デリバリー 年4回→12回の更新 Java EE 8 / Java 11対応 MicroProfile 対応 コンテナ対応強化 WebSphere Liberty WAS V9 Java EE 7, Java 8対応 API機能強化 API Connectを同梱 クラウド対応強化 WAS V8.5 JDK 7 / 8 インテリジェント管理 WAS V8.5.5 Liberty Core Edition提供 エンタープライズITの世界で最も利用されている プログラミング言語「Java」 その標準仕様である「Java EE」 「Jakarta EE」に準拠した アプリケーションサーバー
  4. 8 LibertyとtWAS:用途に応じたランタイムの選択 ▪tWAS (WAS traditional) ◆ 既存資産の活用を目的としたランタイム ◆ 旧WASでおこなっていた従来の運用を継続したいお客様 ◆

    WAS Libertyで対応していない旧APIを使用しているアプリケーションの実行環境として ◆ JAX-RPCやEntity Bean,CommonJなど ◆ 今後,新機能の実装や新しい仕様への対応は行われない ◆ Java EE 7 / Java 8に対応した現行の実装が最後のバージョン ▪WAS Liberty (WebSphere Liberty) ◆ モダンなアプリケーション開発・サーバー運用に対応した新時代のランタイム ◆ 軽量さを活かしたAgile開発やCD(継続的デリバリー) ◆ ツールによる運用の自動化・DevOps(Platform as a Code / Immutable Infrastructure) ◆ WAS traditionalとは,運用に対する設計思想が根本的に異なる ◆ クラウドでの使用やコンテナ環境,リソースの限定されたIoT環境にも最適 ◆ 今後も継続して進化を続ける 8 モダナイズ
  5. 9 tWASの特徴 ◼ tWASだけでエンタープライズ Webシステムを実現 ◼ 負荷分散装置からAppサーバー まで、tWASのみで構築 ◼ 高可用性構成、複数台の集中

    管理も行う クラウド/コンテナなどモダンな 開発と相性が良くない APPノード1 APPノード2 APPノード3 AS NA AS NA AS NA 管理ノード DM セル WAS管理コンソール
  6. 10 Libertyの特徴 ◼ Liberty実行環境+構成+アプリを単一のZIP/JARファイルにパッケージ可能 – 展開するだけで,同じWAS Liberty環境が構築される ◼ ビルド環境で作成したパッケージをテスト環境・ステージング環境・本番環境などに –

    全ての環境の同一性を機械的に保証 – 「アプリケーションの更新」と「WASの構成変更」「Fixpack適用」が同じフローに ◼ パッケージはLibertyの機能で作成できるほか, Eclipse上のWebSphere開発者ツール,Maven/Gradleプラグインでも作成可能 10 変更・履歴管理 設定 ファイル アプリ ケーション 配布 テスト・本番環境 テスト・本番環境 Java SDK Liberty ランタイム サーバー構成 アプリ ①インストール ディスク ②サーバー構成 ③アプリ開発 テスト・本番環境 Java SDK Liberty ランタイム サーバー構成 アプリ ディスク ZIP/JARファイル ④パッケージ ⑤展開 サーバー構成で指定した機能だけがパッケージされるので ランタイムのサイズを最小限にたもつ効果もある
  7. 11 【参考】WAS Libertyのメリット 1 1 1 モジュール化されたランタイム 2 軽量、高速起動 5

    あなたのアプリに “ちょうどいい” • 機能をFeature として モジュール化 • 必要な機能だけを有効化 自分のアプリにとって 必要十分な環境を構築! 4 新しい機能、欲しい機能が いま使える Servlet JSP JDBC SSL JAX-RS session Database JSON <featureManager> <feature>jsp-2.3</feature> <feature>jdbc-4.1</feature> <feature>jaxrs-2.0</feature> <feature>sessionDatabase-1.0</feature> <feature>ssl-1.0</feature> </featureManager> • オープンソース OpenLiberty で開発 https://openliberty.io/ • 市場の要求、技術動向を取り込み、毎月リリース • Jakarta EE 8 も、世界最速でサポート • 数十MBのメモリ消費 • 100MB以下のランタイム • わずか 数秒で 即時起動 3 シンプル構成 自動化/コンテナ化に最適 • ZIPを展開するたけの導入 • 構成ファイルは1つだけ • アプリケーションは 配置するだけでデプロイ完了 • 公式コンテナイメージも RedHat UBIベースで毎月リリース • Transformation Advisor、 Kabanero など 多用なコンテナ開発支援ツール 需要に応じて 変化する環境に最適 • 多用なフレームワークをサポート 機能追加も再起動不要、動的に反映 6 安心の ” ZERO Migration Policy ” • 新しいバージョンの仕様が提供されても 旧来バージョンのモジュールも提供を継続 • 構成ファイルのバージョンを変更しなければ 古いバージョンのFeatureをそのまま利用可能 クラウドネイティブ・アプリケーション Jakarta EE 8 FullProfile / WebProfile ミッション・クリティカル・アプリケーション Eclipse MircroProfile 3、SpringBoot ✓ 従来型WebSphereからの国内移行実績も多数!
  8. 13 インフラのポイント:k8s/OCP(OpenShift)へのマイグレーション ◼ tWAS ◼ Liberty 13 APPサーバー以外はOCPの機能 で実現 高可用性、ログ、運用もOCPの

    機能を活用 アプリ構成情報のみを移行 再 設 計 構成情報 Pod server.xml アプリ構成情報 Transformation Advisorで自動実行 Pod
  9. 14 アプリのポイント ◼ Libertyは、JavaEE7以降に対応 *JavaEE6のWeb Profileにも対応 – 未対応のアプリはマイグレーションが必要 ◼ 要注意

    – JAX-RPCの様に廃止されたAPIは、直接マイグレーションできない – WAS専用のCommonJなどのAPIは、JavaEE標準のAPIなどに変更が必要 ◼ マイグレーションのステップ JavaEE7以降 古いアプリ ステップ1. ツールを使ってアプリ全体で マイグレーションが必要な作業 を把握する ステップ2. ソースコードレベルで修正が必要 な箇所を特定して修正作業を実施 ステップ3. 修正後のアプリでテストを実施 この後の章でツールを解説
  10. 15 アプリのポイント:補足情報 ◼ JAX-RPC – JAX-RPCは後継のJAX-WSに書き換えが必要 – JAX-RPCアプリケーションの変換ツールを利用すると簡単に実行可能 • WebSphere

    Liberty JAX-RPC Conversion Tool for Maven and Gradle ◼ CommonJ – Java EE標準のConcurrency Utilities for Java EEへの書き換えが必要 – Liberty 22.0.0.1よりHeritage プログラミング・モデルによりCommonJを稼働させることが可能になった ◼ 上記の詳細は以下を参照 – Open Liberty / WebSphere Liberty最新情報:2022年1月〜5月
  11. 16 オプション:マイクロサービス化 ◼ Liberyへのモダナイズでは、マイクロサービス化は必須でない! ◼ Microservices Architecture – 単一の(モノリシックな)アプリとして実装 するのではなく,複数のサービスの統合として

    実装する • 変更の影響範囲を極小化 • 機能の再利用を促進 ◼ MicroProfile – Javaでマイクロサービスを 実装するための標準仕様群 MicroProfileは、次回 IBM Liberty Dojo (4)で解説
  12. 18 移行の調査を簡便に ◼ Migration Toolkit for Application Binaries • TAのアプリケーション分析でも

    利用されているツール • アプリのEAR/WARを直接分析し, 使用されているAPIや機能を調査 • アプリケーションがWAS Liberty WAS traditionalで実行することが できるか分析 • Liberty Coreエディションが 利用可能かも調査可能 • 修正や注意が必要な点を指摘 • ソースが不要で, サーバーでのツール実行も必要なく 簡易に調査が実施できる https://www.ibm.com/support/pages/migration-toolkit-application-binaries
  13. 19 移行の調査を簡便に Migration Toolkit for Application Binaries 使用方法 ◼ コマンドラインから以下のように実行

    java -jar binaryAppScanner.jar <WAR/EAR> --sourceJava=[oracle5|oracle6|oracle7|oracle8|ibm7|ibm8] --sourceAppServer=[weblogic|jboss|tomcat|was90|was85|was80|was70] --targetJava=ibm8 --targetAppServer=liberty ◼ デフォルトでは結果は HTMLファイルとして出力
  14. 21 WAS traditionalや他社製品からLibertyへの移行に ◼ Transformation Advisor • 既存アプリケーションサーバー環境/アプリをスキャン • WebSphere,

    WebLogic, JBoss をサポート • アプリケーションのみであれば 国産ベンダー環境でも • マイグレーションの考慮点整理、レポート生成 • コンテナ化に必要な一連のファイルの自動生成 • Docker File, Liberty構成ファイル(server.xml)など https://ibm.biz/cloudta
  15. 22 Mono2Micro • AI技術を活用して,モノリシックなアプリをマイクロサービスに変換 http://ibm.biz/Mono2Micro 無償で90日試用可能 Mono2Microは、AIを使用してパーティションの推奨事項を生成し、詳細なセマンティック分析を提供 し、リファクタリングに必要なコードのかなりの部分を生成します ユーザーが AIの推奨をもとに

    インタラクティブに 分割を改良していく 生成された分割サービスを CaaS環境にデプロイ マイクロサービス 分割したサービス間の 通信コードを生成 モノリシック Microservice Generation Engine AI が実行トレースを Spatio-Temporalに分析し 結合度が低い部分を識別 Mono2Microは, AIによってアプリの 実行トレースを 時間的・文法的に 分析し,分割の 推奨を作成し, リファクタリングに 必要なコードの 大部分を生成します
  16. 23 Mono2Micro • Mono2Microでできること • モノリスをマイクロサービスになる可能性のあるクラスのグループに分割する方法(=パーティショニング)についての推 奨事項を提供 • パーティショニングに基づいたマイクロサービスの基盤コード・API生成 •

    必要な作業 1. ツール実行による分析ファイル生成 2. テストケース実行によるケースデータ収集 3. 分析ツール実行によるマイクロサービスの推奨事項作成 4. UIツールによる推奨事項のカスタマイズ • あくまでMono2Microのアウトプットはマイクロサービスの推奨事項であり、ご自身の状況を踏まえて調整 することが重要
  17. 25 導入Hint&Tips • https://www.ibm.com/support/pages/migration-toolkit-application-binaries • 前提環境: o Java 6以降のJRE •

    構築手順: o Migration Tool for Application Binariesパッケージのダウンロード • https://www14.software.ibm.com/cgi-bin/weblap/lap.pl?popup=Y&la_formnum=&li_formnum=L-DCHS- CCSHGT&title=Software%20License%20Agreement&accepted_url=https://public.dhe.ibm.com/ibmdl/export/pub/software/ websphere/wasdev/downloads/wamt/ApplicationBinaryTP/binaryAppScannerInstaller.jar&declined_url=https://www.ibm.co m/support/pages/node/6250913 o (必要に応じて) Migration Tool for Application Binariesパッケージのリネーム • (変更前)binaryAppScannerInstaller.zip ⇒ (変更後)binaryAppScannerInstaller.jar o Migration Tool for Application Binariesのインストール • java -jar binaryAppScannerInstaller.jar • ライセンスに同意する
  18. 28 導入環境 プラットフォーム/OS 本番利用 (サポート対象) ハードウェア OpenShift 4.6+ はい x86_64/Power/IBM

    Z Red Hat Enterprise Linux 7.7+ はい amd64 Windows v10 いいえ デスクトップ/ノートPC MacOS いいえ デスクトップ/ノートPC ※) すべて評価目的で90日無償利用可能 特定のIBM製品には、本製品のライセンスが含まれていることがあります。 https://www.ibm.com/docs/ja/cta?topic=started-license-information
  19. 29 導入hint&tip Windows 10 前提環境 • OS:Windows 10 Enterprise •

    実行環境:WSL2上のUbuntu 20.04 インストール手順 https://www.ibm.com/docs/en/cta?topic=started-non-ocp-install
  20. 34 導入hint&tip OpenShift Container Platform 前提環境 • Red Hat OpenShift

    on IBM Cloud (通称ROKS) • バージョン:4.8 インストール手順 https://www.ibm.com/docs/en/cta?topic=started-operator-install-ocp Operatorでインストールします
  21. 36 導入hint&tip OpenShift Container Platform 1.IBM Operator Catalogを導入 これを実施した直後はCatalogの情報を取りに 行っている?ためか、「IBM

    Operator Catalog」 の情報がOperatorHubに表示されません。 こちらの確認用コマンドも実施し、successの 結果と一致することを確認ください。 https://github.com/IBM/cloud-pak/blob/master/reference/operator-catalog-enablement.md
  22. 37 導入hint&tip OpenShift Container Platform 2.Cluster Administration Tasksのインストール 他のnamespaceにできるだけ影響を与えたくなかったので、「Cluster Administration

    Tasks for a Single Namespace Operator Installation」を実行しました 3.Transformation Advisor Operatorのインストール 「Installing using Red Hat OpenShift UI」ー「Installing the Operator」を実行します。 OperatorHubで「IBM Transformation Advisor」を選択して「インストール」をクリックするだけです。 https://github.com/IBM/cloud-pak/blob/master/reference/operator-catalog-enablement.md
  23. 38 導入hint&tip OpenShift Container Platform 4. Transformation Advisorインスタンスの インストール 「Installing

    using Red Hat OpenShift UI」ー「Installing the Instance」を実行します。 OperatorHubでインストールした「IBM Transformation Advisor」を選択して「インスタンスの作成」をクリックし、作 業を実施します。 インスタンスの作成は数分〜数十分かかります。 お待ち下さい!
  24. 40 導入hint&tip OpenShift Container Platform • インスタンスが起動時にpendingになる。 o エラーメッセージ:「0/3 nodes

    are available: 3 Insufficient cpu.」 • 原因はスペック不足(CPUが足りない) o Workerノードは、4vCPU×3ノード o ROKSはCPU(フレーバー)を変更で きないので、Workerノードを1個追加 →起動成功 2.4CPU(切り上げして3CPU?)分の空きが 無かったらしい… お困りポイント2:サイジング(リソース足りてなかった…)
  25. 44 データコレクターの実行 Transformation Advisor サーバ [Tool] Data collector アプリケーションサーバ tWAS

    [App] [Tool] Data collector 1. データコレクターをダウンロード 2. データコレクターを実行 →アプリやサーバ構成を分析 3. 自動的にTransformation Advisor サーバへアップロード レポート 分析結果