Slide 1

Slide 1 text

1 ミリ秒で起動する Full Platformのアプリケーションサーバー Liberty InstantOnで クラウドネイティブにひろがるJakarta EEの世界 ⽇本IBM ⽥中 孝清 (Twitter @TTakakiyo)

Slide 2

Slide 2 text

2 ⾃⼰紹介 2 n ⽥中 孝清 n ⽇本アイ・ビー・エム株式会社 オートメーションソフトウェア テクニカルセールス n WebSphere Application Serverなどの テクニカルセールスを20年以上担当 n Twitter @TTakakiyo

Slide 3

Slide 3 text

3 Open Liberty / WebSphere Libertyとは n IBMが開発・公開しているOSSのJava EE / Jakarta EE / MicroProfileのランタイム n Eclipse Public Licenseで提供 / 無償で利⽤可能 n Open Libertyの成果を取り込み,IBMが販売する製品 n アプリや構成はOpen Libertyと同じものを利⽤可能 / バージョンはOpen Libertyと完全に同期 3 Open Liberty

Slide 4

Slide 4 text

4 エンタープライズJavaの業界動向 4 Spring Framework / Spring Boot MicroProfile Java EE Jakarta EE by Oracle by Red Hat kumuluzEE WebSphere traditional Launcher by Fujitsu

Slide 5

Slide 5 text

5 エンタープライズJavaの概要 nJava EE / Jakarta EE – 2000年ごろからバージョンアップを続けている業界標準仕様 – 「アプリケーションサーバー」という実装形態が 昨今のクラウドネイティブ環境と親和性がないと敬遠されがち nMicroProfile – マイクロサービス・アーキテクチャーでアプリを実装するための新しい標準仕様 – 2016年から提供され,注⽬を集めているが,まだまだ機能が⾜りない nSpring Framework / Spring Boot – 旧Pivotal社(現在はVMwareに買収)によるフレームワーク – 先進的で⾼機能,DevOpsがやりやすく急速に⼈気が⾼まっている – バージョンアップへの追随が⼤変 5

Slide 6

Slide 6 text

6 エンタープライズJavaの概要 nJava EE / Jakarta EE – 2000年ごろからバージョンアップを続けている業界標準仕様 – 「アプリケーションサーバー」という実装形態が 昨今のクラウドネイティブ環境と親和性がないと敬遠されがち nMicroProfile – マイクロサービス・アーキテクチャーでアプリを実装するための新しい標準仕様 – 2016年から提供され,注⽬を集めているが,まだまだ機能が⾜りない nSpring Framework / Spring Boot – 旧Pivotal社(現在はVMwareに買収)によるフレームワーク – 先進的で⾼機能,DevOpsがやりやすく急速に⼈気が⾼まっている – バージョンアップへの追随が⼤変 6 なんで︖︖

Slide 7

Slide 7 text

7 「アプリケーションサーバー」が敬遠されるようになった理由 アプリケーションサーバーの以下のような性質が, クラウドネイティブ時代に合わないとされているから n 導⼊や構成,アプリケーションのデプロイなどの運⽤負荷が⼤きい n サーバーのランタイムが⼤きい,重い,起動時間が遅い n アプリケーションサーバーの役割がプラットフォームの機能と重複する 7

Slide 8

Slide 8 text

8 「アプリケーションサーバー」が敬遠されるようになった理由 アプリケーションサーバーの以下のような性質が, クラウドネイティブ時代に合わないとされているから n 導⼊や構成,アプリケーションのデプロイなどの運⽤負荷が⼤きい n サーバーのランタイムが⼤きい,重い,起動時間が遅い n アプリケーションサーバーの役割がプラットフォームの機能と重複する 8 これらは Libertyならば解決できます

Slide 9

Slide 9 text

9 「アプリケーションサーバー」が敬遠されるようになった理由 アプリケーションサーバーの以下のような性質が, クラウドネイティブ時代に合わないとされているから n 導⼊や構成,アプリケーションのデプロイなどの運⽤負荷が⼤きい n サーバーのランタイムが⼤きい,重い,起動時間が遅い n アプリケーションサーバーの役割がプラットフォームの機能と重複する 9 これらは Libertyならば解決できます

Slide 10

Slide 10 text

10 アプリケーションを開発し,実働環境で実⾏するまでの⼿順 開発環境 実働環境 コード作成 App Server導⼊ 構成 ビルド デプロイ 実⾏ 通常のJava EEの アプリケーションサーバー 開発環境 実働環境 コード作成 ビルド 実⾏ 多くのMicroProfile実装や Spring Boot

Slide 11

Slide 11 text

11 アプリケーションを開発し,実働環境で実⾏するまでの⼿順 開発環境 実働環境 コード作成 App Server導⼊ 構成 ビルド デプロイ 実⾏ 通常のJava EEの アプリケーションサーバー 開発環境 実働環境 コード作成 ビルド 実⾏ 多くのMicroProfile実装や Spring Boot Platform as Codeが やりにくい 😔 Platform as Codeが やりやすい 😁

Slide 12

Slide 12 text

12 LibertyならPlatform as Codeが簡単に実現 12 開発環境 実働環境 コード作成 ビルド ZIP展開 実⾏ コード作成 ビルド 実⾏ または サーバー構成 導⼊可能 ZIP ランタイム (MavenがD/L) ビルド・ツール 実⾏可能 JAR or アプリ

Slide 13

Slide 13 text

13 Maven Libertyプラグイン 13 ├── pom.xml ├── src │ ├── main │ │ ├── java │ │ │ └── jp │ │ │ └── test │ │ │ └── HelloServlet.java │ │ ├── liberty │ │ │ └── config │ │ │ ├── jvm.options │ │ │ └── server.xml │ │ └── webapp │ │ ├── WEB-INF │ │ │ └── web.xml │ │ └── index.html │ └── test │ └── java │ └── jp │ └── test │ ├── ApplicationTest.java │ └── it │ └── EndpointIT.java └── target ├── LibertySample.war ├── LibertySample.zip プロジェクト構成ファイル アプリケーションの Javaソースファイル アプリケーションの Webコンテンツ アプリケーションを実⾏する Libertyサーバーの構成ファイル アプリ+Liberty+構成ファイルのZIP ビルド io.openliberty.tools liberty-maven-plugin 3.7.1

Slide 14

Slide 14 text

14 14 Demo LibertyによるDevOps

Slide 15

Slide 15 text

16 「アプリケーションサーバー」が敬遠されるようになった理由 アプリケーションサーバーの以下のような性質が, クラウドネイティブ時代に合わないとされているから n 導⼊や構成,アプリケーションのデプロイなどの運⽤負荷が⼤きい n サーバーのランタイムが⼤きい,重い,起動時間が遅い n アプリケーションサーバーの役割がプラットフォームの機能と重複する 16 これらは Libertyならば解決できます

Slide 16

Slide 16 text

17 サイズの⼩さなLibertyランタイム n モジュール化により, 本当に必要な機能だけを導⼊・利⽤できる 17 パッケージ ディスク メモリー Java EE 8 / Jakarta EE 8 + MicroProfile 4.1 125 MB 165 MB MicroProfile 4.1 56 MB 113 MB Servlet 4.0 24 MB 72 MB アプリケーションに必要な コンポーネントだけをデプロイ すべてのインスタンスで • メモリーを節減 • ディスクを節減 • デプロイ時間を迅速化 • インフラストラクチャー・ コストを削減 ($) • ランタイムを最⼩化する機能の ビルド・パイプラインへの統合 (Maven & Gradleプラグイン)

Slide 17

Slide 17 text

18 コンテナ時代は,起動時間の短さも重要となる VM環境とはことなり, コンテナ環境では頻繁に仮想環境の作成・起動・停⽌がおこなわれる n オートスケール(負荷に応じてコンテナのインスタンスを増減させる) – スムーズにおこなうためには,数秒以内の起動時間を実現する必要がある n Function / Serverless(リクエストがあったときにコンテナインスタンスを起動する) – 1秒以内の起動時間を実現する必要がある 18 時間 リクエスト レスポンス サーバーの 起動時間 サーバーでの 処理時間 応答時間

Slide 18

Slide 18 text

19 従来のJavaアプリケーションの起動の⾼速化の取り組み n Oracle Labsの研究プロジェクトとして開始された新しいJVM実装 n Javaのアプリケーションをネイティブイメージ化(実⾏可能ファイル化)することができ 数⼗〜数百msecでの起動を可能にする n ただし,Javaの全ての機能が利⽤できるわけではない – Javaの動的機能(リフレクション)をつかうには,事前に静的な解析や構成が必要 – Java EE / Jakarta EEアプリケーションサーバーをネイティブイメージ化することは,実質的に不可能 19

Slide 19

Slide 19 text

20 IBMの新しい起動の⾼速化︓Liberty InstantOn n Checkpoint/Restore機能を追加したOpenJ9 VMとの連携によって, WebSphere Liberty / Open Libertyの起動を⾼速化させる技術 n OpenJ9 VMは, LinuxのCRIU機能を利⽤ n 起動時間を 従来の約1/10まで 短縮することが可能 n 現在Beta版を公開 – 2023年にGA予定 20

Slide 20

Slide 20 text

21 Linux CRIUを利⽤したOpenJ9 VMのCheckpoint/Restore n CRIU(Checkpoint Restore In User space) – CheckPoint プロセスの状態をファイルに保存する – Restore ファイルに保存されたイメージからプロセスを復帰する n OpenJ9はこの機能を利⽤し, JVMの起動,アプリケーションの初期化が 終わったタイミングで, プロセスをCheckpointで保存できる n 保存したイメージから起動することで, 圧倒的に短い時間で処理を開始することが可能 21

Slide 21

Slide 21 text

22 22 Demo Liberty InstantOn

Slide 22

Slide 22 text

24 Liberty InstantOnのBetaについて n 基本的にコンテナで利⽤する技術として提供されます n CRIU機能が多くのroot権限を必要とするため, Podmanをrootfulで動かしたり,--privilegedを追加することが必要です – OpenShiftなどでの利⽤⽅法については,今後整理されていきます n 現在は,Java EEの全てのFeatureの対応は完了しておらず, Java EE 8 WebProfileおよびMicroProfile 4.1のAPIが利⽤できます – MDBやJava Batchなど,HTTPリクエストをトリガーとしないAPIについても対応するかは不明です n Intel CPUを使⽤したMac OS上で試す⽅法をQiitaで記事に書いています お⼿元で試してみることもできます – https://qiita.com/TTakakiyo/items/215a221ec90426880594 24

Slide 23

Slide 23 text

25 「アプリケーションサーバー」が敬遠されるようになった理由 アプリケーションサーバーの以下のような性質が, クラウドネイティブ時代に合わないとされているから n 導⼊や構成,アプリケーションのデプロイなどの運⽤負荷が⼤きい n サーバーのランタイムが⼤きい,重い,起動時間が遅い n アプリケーションサーバーの役割がプラットフォームの機能と重複する 25 これらは Libertyならば解決できます

Slide 24

Slide 24 text

26 従来のアプリケーションサーバーの役割 26 業務処理 Java EE APIの提供 業務アプリケーション Java EEアプリケーションサーバー VM環境の提供 VMwareやLPARなど クラスタリング,WLM オートスケール,死活監視 バージョン管理・更新,etc. アプリケーションサーバーが 多くの役割を担っていた

Slide 25

Slide 25 text

27 クラウドネイティブ時代の実⾏環境では 27 業務処理 Java EE APIの提供 クラスタリング,WLM オートスケール,死活監視 バージョン管理・更新,etc. 業務アプリケーション Java EEアプリケーションサーバー コンテナ環境の提供 OpenShiftやKubernetesなど クラスタリング,WLM オートスケール,死活監視 バージョン管理・更新,etc. ← 機能が重複する

Slide 26

Slide 26 text

28 クラウドネイティブ時代の実⾏環境では 28 業務処理 Java EE APIの提供 業務アプリケーション コンテナ環境の提供 OpenShiftやKubernetesなど クラスタリング,WLM オートスケール,死活監視 バージョン管理・更新,etc. Java EEアプリケーションサーバー ↑ APIの機能の提供に専念するべき

Slide 27

Slide 27 text

29 WebSphere Libertyで提供されている機能 29 WebSphere z/OS WebSphere ND WebSphere Liberty Core WebSphere Base zosConnect-1.2 zosLocalAdapters-1.0 zosSecurity-1.0 zosTransaction-1.0 zosWlm-1.0 couchdb-1.0 mongodb-2.0 wsSecurity-1.1 javaee-7.0 batchManagement-1.0 rtcomm-1.0 rtcommGateway-1.0 sipServlet-1.0 apiDiscovery-1.0 mediaServerControl-1.0 wsSecuritySaml-1.1 wsAtomicTransaction-1.2 scalingController-1.0 scalingMember-1.0 dynamicRouting-1.0 collectiveController-1.0 clusterMember-1.0 healthManager-1.0 healthAnalyzer-1.0 distributedMap-1.0 openid-2.0 openidConnectServer-1.0 openidConnectClient-1.0 osgiAppIntegration-1.0 spnego-1.0 collectiveMember-1.0 restConnector-1.0 sessionDatabase-1.0 ldapRegistry-3.0 webCache-1.0 javaMail-1.5 osgiConsole-1.0 json-1.0 timedOperations-1.0 monitor-1.0 oauth-2.0 serverStatus-1.0 wab-1.0 blueprint-1.0 webProfile-7.0 eventLogging-1.0 requestTiming-1.0 adminCenter-1.0 concurrent-1.0 bells-1.0 samlWeb-2.0 scim-1.0 federatedRegistry-1.0 constrainedDelegation-1.0 httpWhiteboard-1.0 osgiBundle-1.0 passwordUtilities-1.0 bluemixUtility-1.0 logstashCollector-1.0 javaee-8.0 webProfile-8.0 microProfile-2.0 microProfile-3.0 microProfile-4.0 microProfile-5.0 「従来のアプリケーションサーバー」で提供されていた機能 • 不要ならばOffにできる • そもそも製品の上位エディションでしか提供されていない jakartaee-9.1 webProfile-9.1

Slide 28

Slide 28 text

30 まとめ n Java EE / Jakarta EEのままでは, クラウドネイティブを活⽤できない……,というのは間違いです Libertyであれば,クラウドやコンテナの利点をとことんまで引き出すことができます n Open Liberty / WebSphere Libertyなら, Java EE / Jakarta EEのアプリ資産や開発者のスキルを活かしたまま クラウドネイティブの世界へ移⾏することができます n Liberty InstanOnは,Javaアプリケーションの制限が⾮常に少ない起動⾼速化技術であり, Function/Serverlessなど,Java EE / Jakarta EEの適⽤が難しいとされていた領域にも 活⽤の範囲を広げることができます 30

Slide 29

Slide 29 text

31 Libertyの利⽤⽅法を学習する n https://openliberty.io/guides/ – JDK,Git,Mavenがあれば実⾏できる チュートリアルを多数提供 31

Slide 30

Slide 30 text

32 Liberty Dojo n 2022年6⽉から8⽉にかけて,全4回で開催されたオンライン・セミナー – 「Cloud Nativeの世界でもJava EEを使える︕ OSSの実⾏環境 Open Liberty」 https://ibm-developer.connpass.com/event/250329/ – 「Libertyの基本的な構成⽅法」 https://ibm-developer.connpass.com/event/252221/ – 「tWASからLibertyへのモダナイズ」 https://ibm-developer.connpass.com/event/252232/ – 「MicroProfileを触ろう」 https://ibm-developer.connpass.com/event/253664/ n 講義資料やビデオが参照可能 32

Slide 31

Slide 31 text

33 IBM Automation Community n IBM Automationのビジネスを協業させていただくパートナー様との関係を強化し、 技術情報を発信/共有するための⽇本のコミュニティ n 製品に関してのご質問、意⾒交換、イベント案内、 コミュニティメンバーと交流を⾏うことができます 33 IBM AIOps Community IBM WebSphere & DevOps Community IBM Integration Community IBM Business Automation Community AIOps製品 (Instana, Turbonomic, Cloud Pak for Watson AIOps, Workload Scheduler) に関する日本語の技術情報を 共有・議論するために開設されています。 IBM WebSphere Application Serverに 関して、 技術者視点で機能や利用方法を 「日本語で 語る」ために開設したユーザー・グループです。 IBM Cloud Pak for Integration (API Connect, App Connect Enterprise, MQ, Aspera)に関する日本語の技術情報を 共有・議論するために開設されています。 IBM Cloud Pak for Business Automation (プロセスマイニング、RPA、BPM、BRMS、ECM) に 関する日本語の 技術情報を共有・議論するために 開設されています。