@2022 IBM Corporation IBM Automation Software ⾃⼰紹介 n ⽥中 孝清 n ⽇本アイ・ビー・エム株式会社 オートメーションソフトウェア テクニカルセールス n WebSphere Application Serverなどの テクニカルセールスを20年以上担当 n Twitter @TTakakiyo 2
@2022 IBM Corporation IBM Automation Software Java EE / Jakarta EE が Cloud Native に向かない(と思われている)理由 n アプリケーションサーバーのサイズが⼤きい・起動時間が遅い n 仕様が古くて,マイクロサービス・アーキテクチャーなどに対応しにくい n DevOps / Platform as Codeがやりにくい n コンテナへの対応が⼤変 4 Open Libertyは,これらの課題を解決できます
@2022 IBM Corporation IBM Automation Software Open Liberty とは n IBMはWebSphereを,完全に作り直しました –従来から提供されているWebSphere︓WebSphere Traditionalランタイム –2012年から登場した新WebSphere︓ WebSphere Libertyランタイム n WebSphere Libertyを2017年にOSS化して,Open Libertyに –EPL(Eclipse Public License)で公開・誰でも無料で利⽤できる・ビジネスで使いやすい n Jakarta EE 9.1仕様ではReference Implementation(参照実装) https://www.openliberty.io/blog/2017/09/19/open-sourcing-liberty.html
@2022 IBM Corporation IBM Automation Software Open Liberty と WebSphere Liberty の関係 n 新しい機能はOpen Libertyで開発され,それを取り込んでWebSphere Libertyとして製品化 n バージョンは完全に同期 – 4週間ごと,年に12回,新しいバージョンが出る(2022年は22.0.0.1〜22.0.0.12) – Open Liberty version 22.0.0.4で追加された新機能は, WebSphere Liberty version 22.0.0.4でも,すぐに利⽤可能 n 主な違いは提供されているFeature(モジュール)の差 – 古いAPIを提供するFeature,zOSと連携する機能,安定化された統合管理機能などは製品版のみで提供 – Java EE / Jakarta EEやMicroProfileなどの標準仕様は,すべてOpen Libertyでも提供 n アプリケーションや構成ファイルなどは,両者で全く同じものを使⽤できる 6 製品化
@2022 IBM Corporation IBM Automation Software Java EE / Jakarta EE が Cloud Native に向かない(と思われている)理由 n アプリケーションサーバーのサイズが⼤きい・起動時間が遅い n 仕様が古くて,マイクロサービス・アーキテクチャーなどに対応しにくい n DevOps / Platform as Codeがやりにくい n コンテナへの対応が⼤変 7 Open Libertyは,これらの課題を解決できます
@2022 IBM Corporation IBM Automation Software Java EE / Jakarta EE は ⼤きな仕様群 n アプリケーションサーバーが 対応しないといけない仕様が多い n これら全てに対応した実⾏環境は, 「重く」なりがち 8 https://jakarta.ee/specifications/platform/9.1/jakarta-platform-spec-9.1.html
@2022 IBM Corporation IBM Automation Software 完全にモジュール化されている Liberty n サーバー構成ファイル(server.xml)で使⽤する機能だけを有効化 –メモリ使⽤量の最⼩化・起動時間の短縮 n 使⽤する機能だけを選んで 本番環境にコピーしたり, コンテナに⼊れたりすることも可能 –導⼊イメージも最⼩化 n カーネル機能だけの導⼊ZIP 約11.6Mバイト n 右図のFeatureだけいれたLibertyの 展開後のサイズ 約56Mバイト 9
@2022 IBM Corporation IBM Automation Software Java EE / Jakarta EE が Cloud Native に向かない(と思われている)理由 n アプリケーションサーバーのサイズが⼤きい・起動時間が遅い n 仕様が古くて,マイクロサービス・アーキテクチャーなどに対応しにくい n DevOps / Platform as Codeがやりにくい n コンテナへの対応が⼤変 10 Open Libertyは,これらの課題を解決できます
@2022 IBM Corporation IBM Automation Software Libertyならば,いますぐJava EEとMicroProfileを使⽤できる n Config APIは,Jakarta EE 11に含まれる予定 –けれど,Jakarta EE 9以降に移⾏するには,パッケージの変換(javax→jakarta)などが・・・ n Libertyであれば,Java EE 7/8とMicroProfileを,いますぐ組み合わせて使える –構成ファイルで両⽅のAPIの機能を提供するFeatureを有効にするだけ 15
@2022 IBM Corporation IBM Automation Software Liberty の Jakarta EE 9.1 / MicroProfile 5.0 / Java 17,18 対応 n 2021年10⽉︓Java SE 17対応 n 2021年12⽉︓Jakarta EE 9.1対応 (業界最速,参照実装) n 2022年1⽉︓MicroProfile 5.0対応 n 2022年4⽉︓Java SE 18対応 17 さまざまな新仕様に 業界最速で対応
@2022 IBM Corporation IBM Automation Software ところで・・・ 「Open LibertyはJakarta EE 9.1の参照実装なんだよね︖」 「Jakarta EE 9.1に含まれてるのはServlet 5.0ですよね」 「どのバージョンまでがServlet 4.0で,どのバージョンから5.0なの︖」 18
@2022 IBM Corporation IBM Automation Software ゼロマイグレーション・ポリシー n 最新版のOpen Libertyは Java EE 7のServlet 3.1も Java EE 8のServlet 4.0も Jakarta EE 9のServlet 5.0も 全部対応しています n Libertyでは,基本的に ⼀度提供されたFeatureは 削除されません n 構成ファイルを書き換えれば, (Upper Compatibilityでなく) 昔のAPIがそのものが動きます 19 % ./productInfo version 製品名: Open Liberty 製品バージョン: 22.0.0.3 製品エディション: Open % ./productInfo featureInfo acmeCA-2.0 adminCenter-1.0 appClientSupport-1.0 (中略) servlet-3.1 servlet-4.0 servlet-5.0 (後略)
@2022 IBM Corporation IBM Automation Software Liberty では,新機能への対応は Feature の「置き換え」ではなく「追加」 20 Version 8.x Servlet-3.1 Version 9.x Servlet-4.0 Version 10.x Servlet-5.0 Version 8.5.5 Servlet-3.1 ⼀般的な アプリケーションサーバー Liberty Version 8.5.5.6 Version 21.0.0.1 Servlet-3.1 Servlet-4.0 Servlet-5.0 Servlet-3.1 Servlet-4.0
@2022 IBM Corporation IBM Automation Software Java EE / Jakarta EE が Cloud Native に向かない(と思われている)理由 n アプリケーションサーバーのサイズが⼤きい・起動時間が遅い n 仕様が古くて,マイクロサービス・アーキテクチャーなどに対応しにくい n DevOps / Platform as Codeがやりにくい n コンテナへの対応が⼤変 23 Open Libertyは,これらの課題を解決できます
@2022 IBM Corporation IBM Automation Software Liberty の導⼊はアーカイブファイルを展開するだけ n ZIPファイルをダウンロードし,展開するだけで導⼊は完了 n 同梱されているFeatureの種類によって何種類かのアーカイブが提供 – カーネルのみ︓ 11M – Jakarta EE 9︓ 105M – Web Profile 9︓84M – MicroProfile 5︓48M – 全部⼊り︓ 279M n ⾜りないFeatureは あとから追加導⼊できる – featureUtilityを使⽤する 29
@2022 IBM Corporation IBM Automation Software 簡潔で可搬性の⾼い Liberty の構成ファイル n 全ての設定項⽬にデフォルト値が存在し,デフォルトから変更するもののみ記述 デフォルト値はバージョンが上がっても変更されない(ゼロマイグレーション・ポリシー) n 絶対パスや固有IDなど,環境固有の情報を可能な限り排除 n 環境変数や内部変数を 構成ファイル内で 参照可能 n Libertyの構成はコピー可能 – 開発・テスト・本番環境で 共通のファイルを使⽤可能 – 災対環境の構築も容易 – 複数のプロジェクトで 共通の構成を利⽤することも 30
@2022 IBM Corporation IBM Automation Software Java EE / Jakarta EE が Cloud Native に向かない(と思われている)理由 n アプリケーションサーバーのサイズが⼤きい・起動時間が遅い n 仕様が古くて,マイクロサービス・アーキテクチャーなどに対応しにくい n DevOps / Platform as Codeがやりにくい n コンテナへの対応が⼤変 35 Open Libertyは,これらの課題を解決できます
@2022 IBM Corporation IBM Automation Software Liberty は,コンテナ環境での実⾏にも最適 n 軽量・⾼速なランタイム – コンテナ環境では,メモリやディスク・フットプリントの⼩ささや,起動時間の短さが, コストや運⽤の柔軟性に直結する n 公式コンテナイメージをレジストリ上で公開 – Docker HubやRed Hatレジストリで,最新のFixpackを適⽤したイメージを毎⽉公開 – イメージを作成したDockerfileもGitHub上で公開されているため, カスタマイズや独⾃イメージの作成も容易 n コンテナ環境に対応したライセンス – OpenShiftやKubernetes環境に,IBM License Serviceを導⼊することで, コンテナライセンスを利⽤可能 – IBM License Serviceの稼働確認が取れたパブリック・クラウドをEligible Public Cloudとして公開 BYOSL(ライセンス持ち込み)によるクラウド上での利⽤が可能 36
@2022 IBM Corporation IBM Automation Software Liberty の利⽤⽅法を学習する n https://openliberty.io/guides/ – JDK,Git,Mavenがあれば実⾏できる チュートリアルを多数提供 n英語での提供だが ブラウザの翻訳機能で きれいに⽇本語化される 37
@2022 IBM Corporation IBM Automation Software 現在つかっている Java EE アプリが Liberty で動くか確認する n Migration Toolkit for Application Binaries – https://www.ibm.com/support/pages/migration-toolkit-application-binaries から無料で⼊⼿可能 n JDK上で稼働するJavaアプリケーション – EAR / WARファイルを調査して,アプリで使⽤しているAPIがLibertyで利⽤できるか,修正は必要かなどを調査 – 結果をHTMLで出⼒,ブラウザで開いて結果を確認 n コマンドラインから以下のように実⾏ $ java -jar binaryAppScanner.jar --sourceJava=[oracle5|oracle6|oracle7|oracle8|ibm7|ibm8] --sourceAppServer=[weblogic|jboss|tomcat|was90|was85|was80|was70] --targetJava=[ibm8|java11|java17] --targetAppServer=liberty 38
@2022 IBM Corporation IBM Automation Software まとめ n Open Libertyは,無料で利⽤できるエンタープライスJavaの実⾏環境 n ⾼速・軽量で,モダンな開発・運⽤スタイルにも対応 クラウド・ネイティブの世界でもJava EEを活⽤できる n 最新のJakarta EE仕様やMicroProfile仕様にも,いちはやく対応 n ⼀⽅で,バージョンアップしても昔のAPIが使⽤できるため, 作ったアプリケーションを,より⻑く活⽤することができる n Platform as Codeやコンテナ環境にも最適で, いままでの資産を引き継ぎつつ,エンタープライズJava環境のモダナイズが可能 39