理系学生日記

おまえはいつまで学生気分なのか

WAS Liberty Profileとは

WAS? 使ったことなかったんですけど、アプリケーションサーバですよね、みたいなかんじだったんですけど、さらに、 なに?WAS の Liberty Profile?なにそれ、全然知らんけどおいしいの?というくらいの状況でしたので、なんかよくわからなすぎました。

WAS Libery Profile

WAS の Libery Profile とは何なのかっていうと、WAS のプロファイルの 1 つです。WAS は、v8.5 から、2 つのプロファイルを提供するようになりました。

  • Full Profile
  • Libery Profile

Full Profile の方は JavaEE 仕様を全てサポートしたプロファイルで従来からのものです。

一方で、Liberty Profile は、IBM は「次世代アーキテクチャ」と呼んでますが、軽量・高速な起動をウリにしたプロファイルになっています。 その特徴はというと、必要な機能を選び、使用するフィーチャーのみを組み合わせて起動することができるとともに、構成を動的に変更できるということになります。

Docker にも Liberty Profile の Docker Image が提供されているように、 ランタイムの小型・軽量をウリにして、クラウド、コンテナ、IoT デバイスあたりを狙っているとのこと。

メチャクチャ分かりづらいんですが、Liberty プロファイルはランタイムであって Liberty サーバというサーバを立ち上げるものになっているようで、 Liberty サーバが、アプリケーション要求に従って (server.xml に書く)、必要なフィーチャーのロードとアンロードを行うようになっています。

実際に使ってみて

ローカル環境で起動させた場合、たしかに起動時間はかなり早いですし、server.xml でフィーチャーの構成を変えても、その反映は迅速です。 ローカルでの開発ではストレス感じずにいけているというのが今の実感です。

<server description="test server">
  <!--Enable features which you would like to use -->
  <featureManager>
    <feature>jsp-2.2</feature>
  </featureManager>
  <httpEndpoint id="appHttpEndpoint" host="localhost" httpPort="9080" httpsPort="9443" />
</server>
<!-- cited from https://dzone.com/articles/what-liberty-profile-ibm -->

また、コンビニエンス・フィーチャーという仕組みがあって、これは複数のフィーチャーをまとめたフィーチャーとして定義されています。javaee-7.0 とか、webProfile-7.0 とか。 これを使うとチマチマと個別のフィーチャーを指定することなく開発ができるので、開発初期の、フィーチャーへの要求すら安定していない頃は便利かもしれません。 Developer Works にも、

アプリケーション開発では、単純にコンビニエンス・フィーチャーを使用可能にして済ませておくことが多いようです。アプリケーションをデプロイする準備が整った時点で、アプリケーションが実際に使うフィーチャーの細かい指定でコンビニエンス・フィーチャーを置き換えて、メモリーとディスク・スペースを節約します。

https://www.ibm.com/developerworks/jp/websphere/library/was/liberty_fordev_intro/index.html

という記述があります。

とはいえ、開発中は動いたけど、変にフィーチャーを精査したら動かなくなったーとかザラにありそうなので、早い段階でフィーチャー構成を決めておきたいところではありますが。

参考文献