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

Liberty InstantOnでクラウドネイティブにひろがるJakarta EEの世界

Liberty InstantOnでクラウドネイティブにひろがるJakarta EEの世界

2022年11月27日開催された日本Javaユーザーグループのカンファレンス「JJUG CCC 2022 Fall」で実施したセッションです。
Liberty InstantOnとは,Checkpoint/restore機能を追加したOpenJ9 VMと組み合わせることにより,Java EE/Jakarta EEに対応したアプリケーションサーバーOpen Liberty/WebSphere Libertyを超高速で起動することができる技術です。1〜数秒で起動していたLibertyの起動時間を1/10程度まで短縮することができます。現在βを提供しており,2023年の正式提供を予定しています。

Takakiyo Tanaka

November 27, 2022
Tweet

More Decks by Takakiyo Tanaka

Other Decks in Technology

Transcript

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

  14. 14
    14
    Demo
    LibertyによるDevOps

    View Slide

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

    View Slide

  16. 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プラグイン)

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

  21. 22
    22
    Demo
    Liberty InstantOn

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

  31. 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) に
    関する日本語の 技術情報を共有・議論するために
    開設されています。

    View Slide