既に運用しているアプリケーションを新しいバージョンにアップデートするのは簡単な作業ではない。利用中のユーザに対する影響を最小限にしなければならないし、上手くアップデートできなかった場合は速やかに元に戻せるようにしておく必要がある。複数のサーバで動作しているアプリケーションの場合はさらに複雑だ。通常、このような複数台のサーバにまたがるアプリケーションを更新する機能はベンダーが提供するプロプラエタリなアプリケーションサーバ製品の機能として提供されている。最新バージョンのApache Tomcatですら最低限のゼロダウンタイムアップデート機能を提供しているだけだ。
ZeroTurnaroundが提供するLiveRebel 2.0は同社が提供するJava EEアプリケーションのオンラインアップデートソリューションの次期バージョンだ。JRebelはプロジェクトの開発フェーズで利用されるが、LiveRebelは運用環境への配置を支援する。LiveRebelの重要な機能のひとつは複数のアプリケーションサーバで利用できるということだ。この機能は特別なJavaエージェントを利用することで実現している。現在のところ、LiveRebelがサポートするのは下記の環境だ。
- Tomcat 5, 6, 7
- Jetty 5, 6, 7, 8
- JBoss 4,5,6
- Oracle Weblogic 9, 10
- Oracle application server 9,10
- GlassFish open source 3.x
- WebShere 6, 7
- スタンドアロンJavaアプリケーション
各エージェントをそれぞれのマシンにインストールすると、管理者はエージェントをインストールしたすべてのサーバの状態を統合した画面を閲覧でき、アプリケーションを実行中にアップデートできる。アップデートの方法にはホットパッチング(JRebelに似ている)やローリング再起動などがある。LiveRebelはすべてのアップデートのトランザクションを保証する(成功しようが失敗しようが)。またアップデート前に戻すこともできる。
LiveRebelを利用するには、Javaアプリケーションに特別なliverebel.xmlファイルが必要になる。このファイルはパッケージ化されたアプリケーションのバージョンだけを保持する。アプリケーションがMavenでビルドされているならビルドプロセスにこのファイルの生成を統合するのはとても簡単だ。
我々はZeroTurnaroundのマーケティングマネージャーのOliver White氏に詳細な話を聞いた。
InfoQ: 異なるアプリケーションサーバ(例えばGlassFishとTomcatの組み合わせ)で同じアプリケーションを動かすことは可能ですが、LiveRebelはこのような環境でもアップデートできますか。それともすべてのアプリケーションサーバを同じ製品にしておく必要がありますか。
いいえ、同じである必要はありません。
InfoQ: LiveRebel 2.0には"スタンドアロン"アップデートというオプションもあります。これはどのように動作しますか。このオプションはアプリケーションサーバ上で動作していないアプリケーション向けですか。どこにエージェントをインストールするのでしょうか。
はい、このオプションは通常の"main"メソッド経由で起動しているアプリケーション向けです。エージェントはJVM上にインストールします。インストールプロセスはアプリケーションサーバの場合と同様です(アプリケーションをLiveRebelラッパー上で動作させます)。しかし、この場合にはいくつかの重要な制限があります。LiveRebelはソケットがHTTP通信をしていることを検知しないので、HTTPリクエストをプロキシできません。つまり、アップデート中はローリング再起動やソケットの停止ができません。この場合、有効なアップデート方法はホットパッチングだけです。
InfoQ: LiveRebelはJRebelに依存していますか。JRebelの新しいバージョンは新しいバージョンのLiveRebelになるのでしょうか。
LiveRebelはJRebelの技術を使ってアップデート手法のひとつであるホットパッチアップデートを実現しています。しかし、内部的にはLiveRebelとJRebelは分離しており、相互の間で変更をプッシュしたりプルしたりしています。必ずしもJRebelのリリーススケジュールに合わせて同期する必要はないと考えています。
InfoQ: 価格の目安を教えてください。
残念ながら、現時点で価格をお教えすることはできません。もうすぐ私たちのサイトで公開できると思います。運用環境へのアプリケーション配置を行っている方にとってお求めやすい価格になるでしょう。
ZeroTurnaroundはインターフェイスを改善した2.0.7をリリースした。更なる情報はドキュメントやFAQやスタートガイドで確認できる。