読者です 読者をやめる 読者になる 読者になる

nekop's blog

OpenShift / JBoss / WildFly / Infinispanの中の人 http://twitter.com/nekop

コミュニティ版JBoss ASとエンタープライズ版JBoss EAPの違い

jboss

何が違うのー?って良く聞かれるので少しだけ書いておきます。宣伝っぽくなるのは意図するところではないのでなるべく簡潔に。

簡単に言ってしまえばエンタープライズ版のリリースバイナリはコミュニティ版にさらなるテストを行って修正を積み重ね、より高パフォーマンス&安定化させたものです。

まず目的ですが、コミュニティ版のJBoss ASは、機能開発がメインです。機能開発の途中に取り込まれたバグ修正などはリリースバージョンに含まれていきますが、バグ修正のみを目的としたメンテナンスアップデートや、セキュリティアップデートのようなリリースは基本的には行われていません。つまり、メジャーバージョンアップリリースのみであり、メンテナンスリリースが行われるかどうかは不定です。よって、コミュニティ版を利用し、かつバグ修正が必要な場合は、自分で修正のバックポートやビルドをすることが前提となります。

エンタープライズ版はコミュニティ版とは異なり、基本的にメンテナンスリリースでは機能追加はされることはなく、バグ修正などのメンテナンスがメインとなります。メンテナンスリリースは変更を最小化するために、バグ修正はお客様からのリクエストされたもの、もしくはセキュリティアップデートなどの重要と判断されるもののみに限られます。メンテナンスリリースは互換性を重視し、最大限の互換性テスト(リグレッションテスト)が行われてリリースされます。リリースは3ヶ月から6ヶ月のスパンで行われます。各メジャーバージョンに対しメンテナンスリリースが頻繁に行われ、加えてもちろん機能追加を伴うメジャーバージョンアップリリースも行われます。おおよその目安ですが、エンタープライズ版のメジャーリリースは100人程度の人員が3ヵ月くらいテストとバグ修正が行った、くらいの規模感で当たらずとも遠からずという感じだと思います。安定性はコミュニティ版とはかけはなれています。

次にバージョン表記ですが、コミュニティ版のJBoss ASとエンタープライズ版であるJBoss EAPは似たようなバージョン番号が付与されていますが、両者の番号自体には関連性はありません。バージョンの表記は、"AS"や"EAP"という識別子も含めて特定のバージョンを表すようになっているので、番号だけに注目したりするのは混乱の元となります。

例えば、JBoss EAP 4.2.0.GAはJBoss AS 4.2.0.GAのエンタープライズ版というわけではなく、実際にはJBoss AS 4.2.0.GAとJBoss AS 4.2.1.GAの中間の状態から分岐したものです。そこからバグ修正などのエンタープライズ向けのエンジニアリングが加えられてリリースされているので、実際にはJBoss AS 4.2.1.GAよりバグ修正の進んだものとなっています。また、JBoss EAP 5.0.0.GAはJBoss AS 5.1.0.GAから分岐していたり(つまりEAPのほうが番号は低いけどより新しい)、JBoss EAP 4.3.xというコミュニティ版にはないバージョン系列があったりします。コミュニティの現在の開発はAS 7ですが、これは EAP 6となる予定です。

メンテナンスレベルを除き、両者のバイナリはそれほど大きく違うものではないので、機能的な感触をざっくり確かめるとか、サポートを必要としないようなあまり重要ではないシステムの構築などはコミュニティ版でも良いでしょう。そうではないならエンタープライズ版を検討してください。セキュリティ修正が必要なのにも関わらずコミュニティ版を使うとかは自殺行為に近いのでやめたほうが良いと思います。実際にこれをやろうとすると、向こう○年間セキュリティの脆弱性などの情報にアンテナを立て続け、影響度を調べてバックポートするエンジニアリングを続ける、という作業になると思いますが、これを実行する体制をしいて維持し続けるというのは容易なことではないでしょう。素直にエンタープライズ版で提供されるテスト済みパッチを入手したほうが大抵の場合コストが低く抑えられます。

細かい違いとしては、EAPはデフォルトでアクセス制限などのセキュリティが有効になっており、かつデフォルトで管理ユーザ定義なしとなっているので、管理ユーザを作成するまでは管理インタフェースにはアクセスできないようになっています。また、EAPには組み合わせ動作検証済みのJBoss Seamも同梱されており、そちらの利用も同時にサポート対象となります。

というわけで、コミュニティ版とエンタープライズ版、うまく使い分けてくださいね。

追記: 上記内容を記述しているオフィシャルのページにリンクし忘れてました。英語ですが、JBoss Community or JBoss Enterprise?というページがあります。