SOA/BPMの現場から - 日本のお客様事例 -第3回 SOAの4つの事例から見るデータマネジメントの本当日本オラクル株式会社 テクノロジーコンサルティング統括本部
十川 亮平(そごう りょうへい) 目次はじめにSOAやクラウドなどの新しい技術では、従来からのRDBMSに代表されるデータ管理-ACID特性やバッチ的な考え方とは異なるアプローチが必要になっていると言われています。 参考文献(1)(2)(3) 本稿はSOAにおけるデータマネジメントをテーマとし、従来からのデータマネジメントとは何が違うのか、及びそれぞれの使い分けに焦点を当て、実際のケーススタディに基づいて解説します。 参考文献
SOAのアーキテクチャとデータにまつわるケーススタディ本稿の読者の中には、これまでに書籍やWeb上の技術資料などでSOAアーキテクチャについての解説をご覧になった方が多いと思います。その中には、なんとすばらしい方式だろうかと感じられたものもあったのではないでしょうか。ここからはSOAの有力なアーキテクチャであるEnterprise Service Bus(以下ESB)とBPMSについて4つの事例をあげ、そこに潜む課題と解決へのアプローチを検討します。 SOAの中心的なアーキテクチャの一つであるESBの特徴まず、実際の事例の前にESBの特徴についておさらいをしましょう。
ESBは サービス間を仲介する役割を果たし、次のような特徴を持ちます。
“エンドポイントの抽象化”についてはわかりにくいかもしれませんが、ここでは、サービスを実際に稼働している場所、サーバ名、ポート番号など、物理的な情報をサービスの利用者には意識させないという意味です。 ESBを介することで、 システム間を疎結合に保つことが可能となり、次のようなメリットを受けることができます。
ESBは上記のようなバスを中心としたアーキテクチャです。オラクル製品では Oracle Service Busが該当します。 ケース1 ESBにおけるデータの結合の課題この事例では、ESBが2つのシステムから情報を集約して公開するサービス(このようなサービスはデータサービスと呼ばれることが多い)を提供しています。 シナリオ
このとき、3.で大量のデータをESB上に取り込んでいること、及び5.でマッチング処理をESB上で行っていることから、全体のレスポンスタイムが落ちる結果となりました。
それでは、このような課題に関してどのようなアプローチがあるでしょうか。原則はやはり、検索画面から指定される情報を同じデータベースに持つデータ配置設計になっていることが望ましいといえます。
疎結合とは何が疎結合なのでしょうか? 解決策1、2のいずれの解決策もデータベース層で結合処理を解決しているため、パフォーマンスの問題は解決されました。ユニークキーで情報を取得できる場合、このような課題は発生しませんが、件数が絞り込めない条件でのデータサービスの提供は注意が必要です。 ケース2 ESBによる大量データ連携2つめは、ESBに大きなサイズのデータを連携させたため、性能が悪化した事例です。 シナリオ
ESBは内部的にXML解析処理とデータのメモリ上への展開を行います。そのため、大量のデータが流れた場合に、レスポンスが著しく悪化する、またはメモリの不足によりOutOfMemoryが発生して処理が異常となるケースがあります。
原則は「 ESBは大量データ連携のツールではなく、公開されたサービス、または既存システムをサービスとして利用する際のメッセージの仲介が役割である」と認識することです。大量データのバッチ連携については、ESBではなく別途ETLの仕組みを用意し、そちらを経由させることを検討してください。ESBではリアルタイム性が要求される連携や、1回あたりのデータ量が小さいメッセージの連携を行いましょう。 この方式のメリットとしては次の点があげられます。
ETLとはソースからのデータ抽出(Extract)、データ変換(Transform)、ターゲットへのデータロード(Load)を行うソフトウェアです。オラクル製品としてはOracle Data Integratorが該当します。 BPMS(Business Process Management System)の特徴次に、BPMSについて特徴をまとめます。 定義されたプロセス
プロセスのビジュアル的な定義
オラクルのBPMS製品は、 Oracle BPEL Process Managerが該当します。実装を学ぶことはコンセプトを理解するのに有効ですので、インスタンスの存在期間が長くなることに対するOracle BPEL Process Managerの戦略を解説します。
ケース3 BPMSと業務の進捗管理BPMSでプロセスを管理するほとんどのプロジェクトで、プロセスの進捗状況、滞留状況の可視化が要件としてあがります。この事例は、プロセスの状態をどのように取得するのかがテーマです。 シナリオ
この時の課題として、大きくは次の2点が上げられます。
解決策
この方式のメリットとしては次の点があげられます
ケース4 BPMSと業務データ最後の事例は、BPMS上のプロセスに個別業務のデータを全て受け渡しする必要があるかがテーマです。 シナリオ
ここでの課題は、明細データを処理するためのループ構造によってプロセスが複雑になっていること、明細データの項目変更によってプロセスの変更が必要になるといった、プロセスと業務ロジックが分離されていないことの2点です。
ここでもBPMSの本来の役割を考えてみましょう。BPMSはデータを運ぶことではなく、 プロセスの進捗を管理することが主な責務です。下記の解決策では、プロセスは受注テーブルに注文情報を書き込むことではなく、注文が来たというイベントと受注のプロセスを管理しています。 解決策 一般的に「Claim Check」と呼ばれている連携パターンを使用します。
※必ずしもキー項目だけしか連携してはならない訳ではない。例えばプロセスの分岐条件に使用される可能性のあるものはメッセージに含むべきである この方式の注意が必要な点は、連携のパスがプロセス経由の連携と、プロセスを介さない連携と分かれることで、 一時的にデータの一貫性が取れない状態になることです。ただし、BPMSが対象とする長期間にわたって非同期で実行する処理では、一時的に一貫性が取れていない状態が問題とならないケースが多くあります。下図の例では、注文リクエストを受け取ってから注文テーブルを受付済にすることで、営業支援システムから受注テーブルを参照する際には整合性がとれた状態になっています。
まとめSOAやBPMの考え方では、サービスの疎結合により、再利用性の向上、改修コスト・期間を押さえるといったメリットが得られます。 最後に、これまで解説した連携方式の検討要素となる項目をあげます。
参考文献
日本オラクルのコンサルティングサービス部門(Oracle Consulting Service Japan [OCSJ])の中で、テクノロジーコンサルティング統括本部では、約200名 のコンサルタントが年間約200プロジェクトでテクノロジー製品全般に関する支援を行っています。 支援対象のシステムには、本稿で紹介したBPMの業務改善プロジェクト、SOAのシステム設計のほか、Oracle WebLogic Server/Oracle データベースを使ったシステム基盤に求められる高可用性、大規模システム、新機能実装システムなどが数多く含まれており、これらシステムの実践的な構築スキルやノウハウを日々蓄積しています。企業システムにおける最適な戦略の企画・策定から、迅速なインプリメンテーション、安定稼働まで、日本オラクルのコンサルティングサービスは、お客様特有のニーズを満たしたサービスを提供します。 日本オラクルのコンサルティングサービスに関するお問い合わせは、 Oracle Direct 0120-155-096 まで。 "SOA/BPMの現場から - 日本のお客様事例 -" インデックスに戻る
|