SOA(サービス指向アーキテクチャ)は企業システムの世界に大きな変化をもたらしており、その影響はパッケージ・ソフトにも及んでいる。「求められているのは実現の容易なイベント駆動型SOAだ」。世界第3位のERP(統合基幹業務システム)ベンダーのインフォア・グローバル・ソリューションズでチーフアーキテクトを務めるヘルギ・シガードソン氏はこう語る。(聞き手は中村 建助)

インフォアの考えるSOAについて聞きたい。

インフォア・グローバル・ソリューションズ チーフアーキテクト ヘルギ・シガードソン氏
写真●インフォア・グローバル・ソリューションズ チーフアーキテクト ヘルギ・シガードソン氏

 「Infor Open SOA」という戦略を進めている。これは調査会社の米ガートナーのいう「イベント駆動型SOA」の考え方と同様だ。ハイレベルで非同期のメッセージングを特徴とする。

 Infor Open SOAの目標は、「何も捨てない」こと、つまりアプリケーションの相互操作性と革新を両立させることにある。中心となるERPに、CRM(顧客情報管理)、SCM(サプライ・チェーン管理)などのアプリケーションを自由に組み合わせることができるようにする。

もう少し詳しくイベント駆動型SOAについて聞きたい。

 イベント駆動型SOAは、「受注」や「製造」「在庫」「出荷」「財務」「財務」といった異なるビジネス・モジュール間に、非同期のビジネス・イベントをやり取りさせるものだ。イベントは1対nの形でも発行できる。各モジュール間では、マスターデータをコピーしあう。受注管理という処理があったとすると、XMLで作成した注文書のデータが、ビジネス・イベントとして他のモジュールへ進んでいく。

 発行されたイベントを閲覧しながら、各ビジネス・モジュール間で処理が進んでいく。「注文」から「製造」に進んで実際に製品が作られ、製品の情報が「在庫」そして「出荷」に進み、出荷情報を、「財務」のモジュールが閲覧して請求書を発行するといった流れになる。それぞれは非同期に実行される。

ビジネス・モジュール間を粗くつなぐ

 各モジュールのなかにも、ビジネスの流れは存在している。ここでは、ワークフローやBPELなどの技術を使って処理を定義しているが、こういった粒度の処理が他のコンポーネントと直接データをやり取りすることはない。コンポーネント間で発生するのは、ビジネス・イベントだけだ。

なぜビジネス・モジュールという単位に分割するのか。

 分解することで、アプリケーションの扱いが簡単になる。SOAでは、疎結合がキーワードになるが、結合している部分をある程度意味のある単位でまとめたものだと考えてほしい。

 モジュール間をイベントしかやり取りさせないことで、各モジュール内ではその処理に最適な技術を使えるようになる。受注管理の場合には、オーケストレーション(編成)の機能などが必要になるのでBPELを、人材管理の場合にはワークフローを、BPELやワークフローだと処理に時間がかかりすぎてしまうMRPでは別の技術を利用するといったことが可能になる。

受注や在庫など複数のコンポーネントをまたぐ、イベントのフローはどう記述するのか。

 ハイレベルな非同期の処理として、ビジネス・イベントがどう流れていくかについて、「イベントフロー」にまとめて記述している。それぞれのイベントは、人間がデータを入力したり、他のコンポーネントのビジネス・ドキュメントを閲覧したりすることで開始する。

大規模システムのサービスを完全に自由に組み合わせるのは難しい