アーキテクチャーパターンとは何か
ビジネスパターンからアプリケーションパターンへ
ビジネス上の戦略や業務目的に対して適合するビジネスパターンが選択できたら、次に行うことはそれらの戦略や目的を実現するためのビジネス要件・IT要件を最もよく充足するアプリケーションパターンを選択することです。その際、先の図2-1、2-2の表を利用します。
図2にあるように、B1:セルフサービス(ユーザー/ビジネス間またはU2B)パターンに対するアプリケーションパターンは、「スタンドアローン・シングルチャネル」「直接統合シングルチャネル」「現状維持ホスト」「ホストへのカスタマイズ・プレゼンテーション」「ルーター」「デコンポジション」「エージェント」の7パターンです。
例えば、そのシステムを使った「ビジネスの迅速な開始」に最も関心を寄せており、それ以外はできるだけシンプルに「アプリケーションの複雑さの最小化」に気を使うとすると、アプリケーションパターンとしては必然的に「スタンドアローンかつシングルチャネル」が選ばれることになります(図3-1)。これは、セルフサービス・ビジネスパターンを自動化するアプリケーションパターンの中で最も簡単なパターンです。
このアプリケーションパターンでは、アプリケーションを2つの論理層に分割して、プレゼンテーション・ロジックはビジネスロジックから分離します。プレゼンテーション層とアプリケーション層の間のリクエスター対話は同期で、ユーザー・インターフェースから送られるすべての要求がビジネス・ロジックをこのアプリケーション層の上で呼び出します。ビジネス・ロジックが実行されると、制御権はプレゼンテーション層に渡され、戻された結果を使用して、ユーザー・インターフェースを更新します。バックエンド・アプリケーションの統合をすぐにまたは将来的に必要としないアプリケーションの場合は、このアプリケーション・パターンは目的に合う最適なアーキテクチャです。
一方、ビジネス目的として「組織効率の改善」や「ビジネスプロセスの迅速化」に興味があって、かつIT要件として「保守容易性」「拡張容易性」はそれほど問題視していないという場合には、「直接統合・シングルチャネル」アプリケーションパターンが1つの候補になります(図3-2)。バックエンドのアプリケーションとデータベースにPoint-to-Point接続を使用して、スタンドアローン単一チャネル・アプリケーション・パターンを拡張します。アプリケーションをプレゼンテーション、Webアプリケーション、およびバックエンド・アプリケーションという論理的な3層アーキテクチャを作ります。
ランタイムパターン
次の作業は、アプリケーションの要件と最も一致するランタイムパターンを選択することです。ランタイムパターンは、機能コンポーネントおよび操作コンポーネントをグループに分けるためにノードを用います。それらは設計目的に応じて相互接続され、ランタイムパターンを構成します。
ここでは、「スタンドアローンかつシングルチャネル」アプリケーションパターンに対する基本と派生の2種類のランタイムパターンを示します(図3-3、3-4)。まず最初の基本ランタイムパターンでは、すべての機密永続データすべてをファイアウォールの背後に置くことにより、セキュリティーの手段が提供されます。 拡張容易性やフェイルオーバー機能はありませんが、そうした機能を追加するベースとしてのシンプルさを備えています。
もう1つの派生パターンは、Webサーバーを含むWebサーバー・リダイレクター1台とアプリケーション・サーバー1台を使用して、2台のマシンにWebアプリケーション・サーバーの機能を効果的に分割しています。アプリケーション・サーバーを内部ネットワークに置いて、より高いセキュリティーを提供します。アプリケーション・サーバー・ノードがプレゼンテーション・ロジックとビジネス・ロジックの両方を実行します。WebサーバーはDMZ(DeMilitarized Zone:非武装地帯)内に残り、Webページを処理します。
そしてこれらランタイムパターンの次に、そこに登場するミドルウエア/インフラ製品の具体的な候補を提示している製品マッピングが記述されています。それぞれのメーカーの製品スペックや特徴が示され、ユーザーはインフラアーキテクチャの具体的な実装を検討するのに便利です。
■これから求められるアーキテクチャパターン
以上簡単にIBM Patterns for e-businessパターンランゲージに関して紹介しました。現在、これらのパターンはe-ビジネスを超えて、SOAアーキテクチャやクラウドコンピューティング時代を見据えて新たなアーキテクチャを必要としています。分散や並列処理、トランザクションといった概念への見直しやRDBに代わる新たなkey-valueを基本にしたデータベースの利用やMap/Reduceといった、副作用がない関数型の並列処理の方式などいろいろな面で大きな変更が必要となります。いずれこのような新しい時代のアーキテクチャ・パターンランゲージが登場することでしょう。
【参考文献】
『ソフトウェアアーキテクチャ ソフトウェア開発のためのパターン体系』Frank Bushmann他、2000(近代科学社)
『エンタープライズ アプリケーションアーキテクチャパターン』M.ファウラー他、2005(翔泳社)
『Webシステムのデザインパターン すぐに使えるe-businessアプリケーション構築の定石集』J.アダムズ他、2003(翔泳社)
Patterns for e-business英語サイトhttp://www.ibm.com/developerworks/patterns/library/ (日本語版は上記ページ右欄にあるTranslated web sitesのコーナーからJapanese translationを選択しダウンロードしてください)