――JavaBeansとEJB、どちらを使えばよいのか――
JavaBeansにするのか、EJBにするのか |
さてJavaBeansでもEJBでも業務ロジックでは同じものが使えるわけですから、いまから作ろうとしている業務ロジックをJavaBeansで作成すればいいのか、あるいはEJBで作成すればいいのか、迷ってしまう皆さんも多いかと思います。しかしこれまでお話しした内容からJavaBeansとEJBの使い分けの基本的な方向性は見えてきます。それは例えば以下のようなことです。
(1)JavaBeansを採用した方がいいケースとは?
JavaBeansで業務ロジックを作成した方がいい場合は、例えば業務ロジックに特定のミドルソフトへアクセスするAPIを入れて業務ロジックを記述したい場合や、すでに稼働済みの基幹システムと連動させる処理を記述したいような場合です。上記のようなJavaBeansは自分の会社やシステム内で、JavaBeansの内容をよく熟知した人がメンテナンスできる環境があります。また社内の標準化に合わせながら手順良くJavaBeansを確実に機能アップさせていくことができます。このケースでは、JavaBeansをただ動かしていればいいというわけでなく、きめこまやかに管理できる環境が整っているわけです。こういう状況には、すべてをローカル環境で解決できるJavaBeansを採用しても問題ありません。
(2)EJBを採用した方がいいケースとは?
半面、EJBで業務ロジックを作成する場合がいいのは、開発済みのビーンを広く一般に流通させるとか、広範囲の環境に拡大展開したい場合です。一般とか広範囲というのは不特定多数のユーザーという意味だけではありません。たとえ同じ会社内であっても、多数のシステム環境が存在しそれを稼働させたり管理する人たちがたくさんいる場合も含まれます。1回だけ業務ロジックを作ってしまえば、必要に応じてどのAPサーバでも動くEJBの基本的な考え方を採用することは、システム管理やメンテナンスの面でメリットになります。また複数のEJBを組み合わせて1つにまとめ上げるような、理想的な使い方を目指すなら、必ずトランザクション管理が重要になります。この場合もEJBを採用するしか手がありません。
またEJBを採用すると負荷分散やスケーラビリティのメリットを受けることができます。業務ロジックを共通部品と個別部品に分けて作成することで、特定の部品に処理負荷がかかってきたとき、その部品をほかの性能のいいコンピュータに配置移動させることができます。
図10 負荷のかかるEJBを別ホストに配置するスケーラビリティ
|
最初はサーブレットと同じホストコンピュータにEJBを導入し、負荷がかかってきたときだけ目的のEJBを別のAPサーバに移動させるわけです。ネットワークのやりとりを意識せず行えるのはEJBしかないのでスケーラビリティの観点で極めて有効です。
では実際にどうするか |
いろいろと解説しましたが多くのユーザーの実績では、最初は業務ロジックをJavaBeansで作成しておき、必要に応じてEJBに変更する場合が多いことが分かります。最初から難しくJavaBeansにするかEJBにするか悩むより、とにかく最初に業務ロジックをJavaBeansで部品化する。この観点は、まず一番重要です。そして段階を経て、業務の変化やアクセス増加に合わせて、サーブレットからアクセスしていたJavaBeansを、次のステップとしてEJBに変更することができます。もちろん次のステップが考えられるなら、最初から部品はすべてEJBで作成しておくこともできます。この発想で最初からEJBで取り組むユーザーも多くなってきています。JavaBeansを採用するか、あるいはEJBを採用するか、いろいろな考え方がありますが、もし皆さんが最初にJavaBeansを採用したとしても、ぜひいままで解説した考慮点を頭に入れてJavaBeansを作ってみてください。そうすれば次のステップで、業務ロジックをリモート環境で動かしたくなったとき、JavaBeansをEJBに改造する作業がラクになるはずです。
こういう将来の拡張を考えたプログラムのデザインをしておくことが、オープンで拡張性の高いサーバサイドJavaの世界では、極めて重要であることをぜひ覚えておいてください。
5/5 |
連載記事一覧 |
- 実運用の障害対応時間比較に見る、ログ管理基盤の効果 (2017/5/9)
ログ基盤の構築方法や利用方法、実際の案件で使ったときの事例などを紹介する連載。今回は、実案件を事例とし、ログ管理基盤の有用性を、障害対応時間比較も交えて紹介 - Chatwork、LINE、Netflixが進めるリアクティブシステムとは何か (2017/4/27)
「リアクティブ」に関連する幾つかの用語について解説し、リアクティブシステムを実現するためのライブラリを紹介します - Fluentd+Elasticsearch+Kibanaで作るログ基盤の概要と構築方法 (2017/4/6)
ログ基盤を実現するFluentd+Elasticsearch+Kibanaについて、構築方法や利用方法、実際の案件で使ったときの事例などを紹介する連載。初回は、ログ基盤の構築、利用方法について - プログラミングとビルド、Androidアプリ開発、Javaの基礎知識 (2017/4/3)
初心者が、Java言語を使ったAndroidのスマホアプリ開発を通じてプログラミングとは何かを学ぶ連載。初回は、プログラミングとビルド、Androidアプリ開発、Javaに関する基礎知識を解説する。
|
|