クライアント型SOAの設計方法と開発方法
「クライアント型SOA」の適用シーン
前回で説明した通り、「クライアント型SOA」の特長はまさにクイック・アンド・スモールスタートと柔軟性です。最近の市場を見渡せばスモールスタートという言葉はよく聞きます。しかしながら、皆様の身近にあるシステムで考えた場合、スモールスタートとはどれくらいの期間・規模をさしているのでしょうか?
システムインテグレーターの方々から提案を受けると、おそらく現状のSOAでは、関連する基幹システムを連携させた全体システム像から個別の構築段階を切りだし、「まずはこの部分を作りましょう。そして次はこの部分を…」といった形で、システムの最終全体像に向かって、段階的な構築を提案している(受けている)ケースが多いのではないでしょうか?
本来、利用者が求めている「スモールスタート」とは、コスト的にも時間的にも小さな投資でシステムを構築したうえで、今後の柔軟性をも実現するシステム構築スタイルを期待して「スモールスタート」という言葉を使っているはずです。ITを取り巻く市場展開は非常に速く、それに起因して、システム投資から効果測定期間は非常に短くなってきています。
従来のSOAではサービスを機軸にシステムを設計しましたが、サーバ型のシステム連携によるソリューションしかなかったため、各サーバを管轄している部門をまたがったシステム構築になり、必然的にトップダウン型のシステム構築にならざるをえなかったのです。その結果として時間とコストをかけることになり、クイックスタートができないケースに陥っていました。
このシステム構築手法のデメリットである「非柔軟性」と「時間とコストの逼迫」を改善したアーキテクチャ(開発手法といってもいいです)が「クライアント型SOA」です。つまり「クライアント型SOA」の適用シーンとは、単一部門内の現場レベルで、システム要件を短期間でまとめる必要があるようなシステム構築シーンが最適であるといえます。
「クライアント型SOA」であれば他部門はもちろん自部門のサーバに手を加えることなく、純粋に自部門管轄のクライアントのみのシステム構築だけで対応できるため、部門間調整をする必要がなく、必然的にスモール・アンド・クイックスタートが実現できるのです。
IdbAを使用した「クライアント型SOA」であればIdbAのカプセリング技術により、システムがブロック化しているため、そのブロックの組み合わせにより、部門間連携による全社連携システムの構築も低コストでの実現が可能となります。
この形こそが、スモール・アンド・クイックスタートを実現し、さらにシステム拡張をも柔軟に実現する理想的なシステム構築スタイルであると考えています。
クライアント型SOAの設計・開発時のポイント
それでは次に、クライアント型SOAの設計と開発時のポイントを説明します。ここでは設計手法と開発手法が理解しやすいように、経営支援システムの例をもちいます。このシステムの想定条件は表3の通りです。
- スピード経営実現のための「システム処理作業のスピードアップ」と「リアルタイムな経営判断材料の抽出」をシステム構築の目的とする
- 連携対象システムは会計システムとSFA(営業支援システム)
クライアント型SOA設計のポイント
まず、システム設計の手順を説明します。ポイントはいかにサービス・オリエンテッドなシステムを設計するかであり、そのためにシステム設計の権限を利用者に委譲して進めているところがポイントになります。
クライアント型SOAとはサービス・オリエンテッドなアーキテクチャであるため、システム設計時はシステム的なことを意識せずに、純粋にビジネス的なフローを作ることに心がけます。つまり、現場で利用者が既存のシステム上だけではなく、システム以外でどのような作業をやっているかをも含めたすべての作業を記述し、単純作業をシステム化するようなイメージでシステムを設計します。
また、システム設計は最終フローではじめて出てきます。
- 1. システム利用者カテゴリの設定
- このシステムに携わる利用者のカテゴリを下記の通りに設定します
2. システム利用者カテゴリに属する実作業者のリーダーを選出する- このリーダーは組織の統率者としてのリーダーよりも、実際に一番システムに触れている人を選出するほうが効果的です
- 3.処理内容の確認
- 2のリーダーを中心にシステム利用者カテゴリごとに、クライアント側では何の処理をするか内容を確認します
4. サーバーとのI/F策定および処理内容などのクライアント・システム要件の確認- 下記のように、既存サーバーとのI/Fの確認と処理内容の確認を行います
5. システム設計を行う- クライアントの内部システム設計(柔軟性を保つためのコンポーネント設計)を行います
クライアント型SOAはシステム開発の範疇をクライアント側だけに限定することにより、システム設計に携わる人数を最小限にし、意思決定およびプロジェクトを迅速化します。
また、当然ですが、クライアント側だけの開発になるため、システム構築コストと時間は圧倒的に少なくなります。これにより、スモール・アンド・クイックスタートを実現できると考えています。