Java EEにおけるDevOpsに適した開発・実行環境を提供
田中孝清氏は「ビジネスのスピード変化に伴い、情報システムの軸足は『記録中心』から『つながり中心』に移りつつある」と語る。つながり重視の世界では、一般ユーザーに使ってもらうシステムは、非常に頻繁に毎日のように更新され、統合が行われる。
さらに「モノのインターネット」という考え方がある。従来のPCブラウザ経由だけでなく、多種多様のデバイスからの情報収集が可能になっていることも、開発に対して様々な高速化を求める背景となっている。
ところがJava EEに限らず、最近のアプリケーション開発、運用では「環境の複雑性への対応」「マニュアル作業削減」「運用担当者の作業負荷軽減」という課題がある。
これらの課題について田中氏は「対処法はツールによる自動化の導入」と語る。しかし、特にベンダー系のJavaアプリケーションサーバーを使っている企業では、なかなか導入が進んでいない。実際、挙手で行われた会場アンケート調査では、まずApache Antを使ったことがある人は大体6割。Mavenは3割。Jenkinsは3割強。IBM UrbanCode Deployはごく少数だった。
導入が進んでいない第1の理由として、田中氏は「Java EEのアプリケーションサーバーが、必ずしもDevOpsに適したものになっていない」ことを挙げる。
まず従来のJava EEサーバーは信頼性と高性能を追求した結果、導入が大がかりになり、管理にも多くの手間がかかるのは避けられない。
一方、ツールを使って自動化したい場合、なるべく少ないフットプリント、ファイルの展開による導入、特別のツールを使わないフラットファイルによる構成、短い起動時間などが求められる。
それらの条件を満たしたものとして、オープンソースのTomcatやJettyという実行環境が多用されている。ただ、Tomcatなどでは、本番で実行するにあたって、色々と足りない機能があることが難点。
そうした課題に対応するため、IBMでは一昨年「Libertyプロファイル」というまったく新しいランタイムを出している。Java EE実行環境(コンテナ)は、従来のWebSphere Application Server(WAS) Fullプロファイル版と同じ実装が使われている。
Libertyプロファイルの第1の特長はまず軽量であり、起動が早いことだ。Javaヒープに関しても、従来の200~300MBから、TradeLiteでも60MB程度で稼働する。コアの部分の起動でも、50MB程度のファイルをダウンロードして展開するだけで使用できるし、展開した状態でも100MB程度。そのため身軽に転送などができる。
機能も十分で、Java EE 6のWeb Profile標準に準拠したアプリを完全にサポート。Web Profile以外のJava EE 6仕様もJMS、JAX-RS、JAX-WSをサポートしている。
田中氏が特に面白い特長として紹介したのが、「API・サーバー機能をFeatureという形でバラバラに利用可能」ということだ。ユーザーが必要なFeatureだけを自由に組み合わせ、使うことができ、Featureの依存関係も自動的に解決される。
また新しいFeatureを順次提供する「Liberty Repository」というWebサイトがあり、ここからダウンロードして追加できるようになっている。Java EE 7を構成するような仕様も順次公開予定だ。
また新バージョンのFeatureは「置き換え」ではなく「追加」になる。たとえばservlet-3.1を追加してもservlet-3.0は引き続き使用可能だ。「なるべくお客様のアプリケーションのマイグレーションを不要にするような形にしている」(田中氏)。
続く特長は「開発ツールと運用ツールとの統合」になる。IBMではEclipse向けに統合ツール、WAS Liberty Profile Developer Toolsを無償提供している。これによりWAS固有の構成ファイルの編集、テストサーバーへのアプリケーション自動デプロイ、アプリケーションのデバッグ、ステップ実行などが可能になる。
続いて「簡単な構成と動的な変更」という特徴がある。Libertyプロファイルの構成ファイルは、server.xmlという単一ファイルになっている。基本的にすべての設定項目がデフォルトの値を持っており、変更する場合にのみ記述する。手で編集することができるし、バージョン管理システムでの履歴管理も容易となっている。
この構成ファイルの変更を「今までのようにGUIでやりたい」というニーズにも対応するため、EclipseのDeveloper Toolsでは、GUIでserver.xmlを編集する機能も提供している。
さらに「Unzipによる導入とデプロイ」という特徴がある。Libertyプロファイルは、開発環境、Eclipse上でのLibertyプロファイルと構成ファイル、アプリケーションを丸ごとZipファイルとしてパッケージすることが可能だ。構成パッケージングしたZipは、他の環境に持っていって展開することで、アプリケーションサーバーがプログラムを実行する環境がすべて出来上がる。
さらに使用するFeatureだけをパッケージすることで、さらに小さな導入イメージを作成することができる。