BT

最新技術を追い求めるデベロッパのための情報コミュニティ

寄稿

Topics

地域を選ぶ

InfoQ ホームページ ニュース IBMがOpen Liberty 18.0.0.3をリリース、MicroProfile 2.0をサポート

IBMがOpen Liberty 18.0.0.3をリリース、MicroProfile 2.0をサポート

ブックマーク

原文(投稿日:2018/11/20)へのリンク

IBMが第3四半期にリリースしたOpen Liberty 18.0.0.3は、MicroProfile 2.0をサポートし、MicroProfile Metrics APIに重点を置いている。

1年ほど前に初めて公開されたOpen Libertyは、マイクロサービスやクラウドネイティブなアプリケーションの実装を目的とする、IBMのWebSphere Libertyアプリケーションサーバのオープンソース版である。2012年に発表されたWebSphere Libertyは、小型軽量の設計で、DockerやKubernetes、Cloud Foundryなど、主要なプラットフォームにデプロイされたJava EE 7認定アプリケーションをサポートする。

マイクロサービス開発の自然な進化について、IBMでWebSphereのMicroProfileとJava EEのアーキテクトを務めるKevin Sutter氏は、次のように書いている。

Open Libertyは、MicroProfileプラットフォームを代表するオープンソース実装のひとつです。2016年に最初のMicroProfile 1.0がリリースされて以来、Open Libertyは、コミュニティがそれぞれの仕様を完成した直後に、それに完全準拠した実用レベルの実装を提供してきました。Open Libertyのこの迅速な提供リズムによって、新たなMicroProfile APIが定義されると、すぐにそれを試用することが可能になっています。最新のOpen Liberty実装では、MicroProfile 1.4(Java EE 7ベース)と2.0(Java EE 8ベース)の両方がサポートされています。

Open Libertyのガイドとツール

Open Libertyには、対話型ガイドと静的なガイドが提供されている。MicroProfile Metricsに関する15分のガイドでは、在庫マイクロサービスをサンプルとして、システムとアプリケーションメトリクスの実装方法が紹介されている。

リポジトリをクローンした後、finishディレクトリを変更して、以下のMavenコマンドを実行すればよい。

    
mvn install liberty:start-server
    

サーバが起動すれば、次のURLが利用可能になる。

    
http://localhost:9080/inventory/systems
https://www.localhost:9443/metrics
    

ポート9443の/metricsエンドポイントで、@Timed@Gauge@Countedアノテーションからのアウトプットが表示される。

Open Libertyでアプリの開発、構成、デプロイを行なうための軽量ツールセットであるOpen Liberty Toolsを利用することも可能だ。Open Libertyの全リポジトリと同じく、GitHubから入手できる。

Open LibertyとOSGi

OSGiはOpen Libertyにとって不可欠な部分である。先日のEclipse Con 2018でのプレゼンテーションでは、IBMのWebSphereとLibertyランタイムのアーキテクトであるAlasdair Nottingham氏が、Open Libertyの構築にOSGiがどのように使われているかを説明した。次の図は、Java EEパッケージングがOSGiモジュールにマップされている様子を示したものだ。

先日のGroups.ioでのセッションでNottingham氏は、JavaコミュニティでOSGiが一向に“流行(en vogue)”しない理由について、次のように説明した。

Open LibertyはOSGiをランタイム実装の一部として使用していますが、OSGiに基づいたアプリケーションプログラミングモデルを提供していません。大きな理由は、OSGiアプリケーションサポートが当社の有償製品に組み込まれていて、vannila Javaに置き換わるほど広く普及しなかったためです。開発者の多くはOSGiによるメリットよりも、複雑さが増すことの方を見ているようです。あなたの言うとおり、“流行”していません。

いずれにしても、OSGiとOpen Libertyを話題にすることはありません。ランタイムを提供するための、実装上の詳細に過ぎないからです。

Nottingham氏がInfoQに、Open Liebrtyの最新リリースについて話してくれた。

InfoQ: Open Libertyの各四半期リリースでの機能目標は何ですか?各リリースを対象とした主要な機能があるのでしょうか?

Nottingham: 私たちは、アジャイルアプローチでOpen Libertyを提供したいと思っています。つまり、四半期ごとに目標を設定するのではなく、開発のバックログを管理して、特定の日程ではなく、準備のできた時に機能を提供したいのです。いくつかの機能には目標を設定していますが、それが達成できなくてもリリースを止めるつもりはありません。一部の機能では、Eclipse MicroProfileのリリースを目標にしています。Eclipse MicroProfileがリリースされれば、次のリリースでそのAPIのサポートを提供したいと思っています。リーダである私にとって、適切かつ品質の高い機能を提供することは非常に重要です。今年のOpen Libertyのリリースには、Java EE 8とEclipse MircoProfile 2.0の完全サポート、Spring Bootアプリケーションのサポート追加、ソーシャルメディアプロバイダ経由の認証、OpenID Connect、HazelcastなどのJCacheプロバイダを使用したHTTPセッションのフェールオーバなどが含まれます。

InfoQ: 他のミドルウェアアプリケーションサーバに対して、Open Libertyのユニークな点は何でしょうか?

Nottingham: Open Libertyが非常にユニークな点は3つあると思います。

  1. 同一リリースで複数のJava EEバージョンをサポートしていること。つまり、Java EE 7とJava EE 8のどちらを実行するか、選択できるということです。どちらか一方を強要されるということはありません。バージョンアップは、自身のコントロールの下で可能であるべきです。同時にそれは、セキュリティや機能上のフィックスをより簡単に手に入れられる、ということでもあります。
  2. サーバ機能の選択と混在をサポートするモジュール構造として、一から設計されていること。後付けされたものではありません。一般論として、Tomcatと外部のJava EE機能をアプリケーションに取り入れればよい、と考えている人がいるのは知っていますが、それでは最も効率的なランタイムを構成することはできません。2つのテクノロジがすべて問題なく効率的に動作するには、それを念頭においた開発が必要です。Open Libertyではそれが行なわれているからこそ、インスタンスをデプロイする度にすべてを実行する必要がないのです。
  3. 新しいリリースのために、コンフィギュレーションやアプリケーションの移行が不要であること。多くの人にとっては取るに足らない問題かも知れませんが、ダウンストリームの依存関係の最新バージョンを使うためだけに、自分のコードを更新しなければならないことを好む人はいません。バージョンを変えるだけでアプリケーションを再コーディングしたり、コンフィギュレーションを変更することは、誰も望んでいないのです。抵抗が増えますし、最も大切なものであるアプリケーションから手が離れることにもなります。Libertyでは、何年も前に作成されたサーバ構成でも変更することなくサポートされています。Java EE 7のアプリケーションも引き続き動作するので、Java EE 8にスイッチしない限り、アプリケーションを再コーディングする必要はありません。Java EE 7とJava EE 8は前方互換であると主張する人もいますが、私たちの手元にはJava EE 7 -> Java EE 8のマイグレーション上の問題の一覧があるので、そうではないのです。

InfoQ: OSGiを使用しているのはOpen Liberty独自のものですか?

Nottingham: OSGiを使用しているのはOpen Libertyだけではありません。従来のWebSphereやGlassfish、Payaraでも使用しています。ただし、私たちの使い方は非常にユニークです。私たちはOSGiを真に活用できるように、Open Libertyをゼロから構築しました。モジュール化レイヤを使用することで、・内部処理を隠ぺいすることにより、ランタイムとアプリケーション間のclasspath地獄を克服する、・OSGi Serviceレイヤ(と宣言型サービス)を使用して高速で動的な並列スタートアップを保証することで、短時間で効率的な遅延起動を可能にする、・Subsystemtレイヤを使用してランタイム構成機能という概念を確立し、必要なもののみを使用することを可能にする、といったことを実現しています。

InfoQ: Open Liberty 18.0.0.4と2019年以降のリリースについて、見通しを教えてください。

Nottingham: この種の質問には答えにくいですね。期日ではなく、完成した時点で公開しているからです。常に可能という訳ではありませんが、“18.0.0.4に向けてXを開発しています”と言って、完成しないためにスリップすることを決定した結果、それが提供できなかったことに苦情を言われるような状況は避けたいと思っています。そうは言いましたが、来年に向けて積極的に取り組んでいるのは次のようなものです。

  • Java SE 11 – リリースされたばかりのJava SE 11に対して、積極的に取り組んでいます。Java SE 9/10上ではすでに動作していて、制限は多くなかったのですが、Java SE 11では対処の必要な大きな問題がいくつかあります。
  • Eclipse MicroProfile – 私たちはこのプロジェクトの成功に大きな投資をしており、MicroProfileのリリース毎に、私たちの次のリリースでそのサポートをリリースすることを目標にしています。項目のひとつとして挙げるには小さ過ぎるように思われるかも知れませんが、リアクティブプログラミングモデルのサポート追加など、多くの作業が発生しています。
  • Jakarta EE – 当然ですが、この動向には非常に関心を持っています。まだ進行中ですが、当社の開発チームが議論に参加しており、リリースが公開され次第、サポートしたいと思っています。
  • Open Libertyの透明性向上 – 最初にOpen Libertyをリリースした時、コードをオープンソースとしてローンチするという目的のため、いくつかの点で妥協した部分があります。その重要な部分のひとつが、ビルドの透明性です。私たちはIBMがホストするハードウェア上で開発作業をしており、ビルド結果は社内システムにポストされます。このため、IBMで作業する場合は、送信したプルリクエストの結果しか見ることができません。ですから、ビルド結果を公開して、視認できるようにしたいと思っています。さらに、テストの大多数をオープンソースできなかったという問題も抱えています。それらは顧客と共同で開発したものであるため、私たちが独占権を持っていないためです。レグレッションを見つける上で有用であるため、現在もそれらのテストを使用しているのですが、書き直すか、あるいはそれらを移動する権利を獲得することで、ファイアウォールの内側に留まっているテストの数を減らすことを常に検討しています。
  • Maven/Gradleビルドへの統合の単純化 – 現在、Libertyにデプロイするアプリ構築のための一連のプラグインがありますが、5年間にわたって改訂された結果、提供されるユーザエクスペリエンスは単純とは言えないものになっています。Boostというサイドプロジェクトでは、これを単純化する作業に取り組んでいます。これには以前から大きな期待を持っていますが、詳細を説明するにはまだ時期尚早です。
  • LibertyをDocker/KubernetesおよびCloud Foundryで適切に動作させる方法については、これまでも慎重に検討してきましたが、真に優れたDevOpsエクスペリエンスを実現するための環境として、今後も引き続き対応します。このために、新たなEclipse MicroProfile機能のサポート実装の一環としてだけでなく、HTTPプロキシの転送ヘッダのサポートなど、それ以外の機能およびユーザビリティ面での改善なども実施します。
  • パフォーマンス向上 – これについては常に全員で行っていますが、最適なスレッド数を実行時に決定する自動調整型スレッドプールなど、いくつかのクールな改善にも取り組んでいます。このアルゴリズムを改善してよりよいものにするとともに、Libertyのサイズを縮小してより小さくする方法も検討しています。

リソース

 
 

この記事を評価

採用ステージ
スタイル
 
 

この記事に星をつける

おすすめ度
スタイル

BT