最近、某製造業のお客さんのプロジェクトに、技術支援として参画しています。
そこで、今までシングル構成だったWebアプリケーション・サーバーを、(具体的にはWebSphere Application ServerのNetwork Deploymentという製品を使って)負荷分散構成にするにあたり、アプリケーションのアーキテクチャー上問題が無いかという検証をしているのですが、これが問題ありあり。
シングルサーバー構成だったときには露見しなかったアーキテクチャー上の問題、特にトランザクション設計の不備が、並列処理になることによって、これでもかというばかりに露見しています。
本来1トランザクションで処理すべき処理のUOWが複数に分割されていたり、本来独立しているはずの処理が何となく1トランザクションで処理されていたり。
普通のメソッド呼び出しのような感じで、EJBを起動していたりするから、本来は独立しているはずの100件のデータをまとめて引数としてEJBに渡し、そこで100件の処理が1トランザクションとして起動しちゃうような設計になってたりするんですよね。
なお、近頃「トランザクション」という言葉がすごくいろんな意味で使われていますが、ここで言っている「トランザクション」は、分離不可能な一連の処理のことです。単なるWebのアクセスのことじゃないです。
この辺のエンタープライズ固有の所は、@ITとかWEB+DB PRESSとかそういうところにはほとんど出てこないので、勉強するのが大変です。前から気になっているこの本、一度は読んでみるべきなのか・・・。
日経BP社 (2001/10)
売り上げランキング: 212964
最初ここのシステム構成の説明を受けたとき、「いまどきEJB?」と(正直)思ってしまったんですけど、やってみるとかなり勉強になります。
