SOAの思想とテクノロジーのギャップ
SOA(Service Oriented Architecture)という方法論が提唱されてから10年以上経ち、コンサルやベンダ各社が盛んにセミナーを開いています。
SOAというのは企業に散らばる異なるシステムに対して共通のインターフェース及びメッセージング機構を用いて公開するサービス層を提供し、サービス間の連携という形でビジネスの変更に強いシステム基盤を再構築するための方法論です。
SOAが提唱するビジネス上の主な利点を紹介します。
● 既存システムを有効活用できる。
既存システムが提供するファンクションをSOAで提供するインターフェースで隠ぺいすることにより、異なるシステム間でSOAメッセージをやり取りすることができる。ビジネスプロセスの変更に際してシステムを作りかえることなく、既存システムを有効に再利用することができる。
● ビジネスプロセスの変更に柔軟に対応できる。
業務上完結する一連のシステム機能を「サービス」として公開し、ビジネスをサービス間の連携によって実現するものと捉えることにより、サービス間の連携を組み替えることでビジネスプロセスの変更に対して迅速・柔軟に対応できる。
一見すると素晴らしい思想であり、企業にとっては非常に魅力的な利点です。実際コンサルやベンダもセミナーで上記のようなビジネス上の利点を盛んに遡及しています。
が、SOAが抱える技術的な課題に対しては意外にも光があたることが少ないようです。SOAの主な技術上の課題を紹介します。
1.メッセージキューイング機構がない。
システム間の連携に際して、各システムが送受信するメッセージを非同期に処理する機構はSOAのテクノロジーに含まれていない。これはどこかのシステム間で処理がスタックした場合、SOAで連携されている全システムの処理が影響を受けることを意味する。
2.データモデルの差異を吸収できない。
当たり前だが、各システムのデータモデルの違いを吸収する機構をSOAは提供していない。あるシステムでは法人と顧客が1対1に対応していて、別のシステムでは1対多の関係になっているような場合、セマンティックギャップの整合を取る仕組みを別途考える必要がある。異なるシステム間を連携する場合、この問題に立ち往生するケースが多い。
3.トランザクション管理機構がない。
あるシステムから別のシステムが提供するサービスに処理を依頼した場合に、失敗した場合のリトライや取り消しの際のシステム間のデータ整合を保つ機構がない。トランザクション管理を実現するための仕組みを構築するためには既存システムにも手を入れる必要がある。
このような課題を見ると、上記にあげたビジネス上の利点はほとんどが絵空事のように思えます。SOA基盤を提供するベンダは補完するための仕組みを色々と考えていますが、特に2と3の課題については既存システムに大きく依存するため、SOA基盤のみで解決することは不可能です。
SOAはシステム間のデータ・プロセスをメッセージベースで連結する仕組みを与えてくれますが、個々のシステムが持つ設計思想の差異まで吸収することはできないということです。当たり前のような話ですが、ビジネス上の利点のみに注目すると見落としがちで、且つ致命的ななポイントです。
SOAの導入を考えている方は、メディアが流布する表層の利点ばかりを追いかけるばかりではなく、上記のようなテクノロジ上の課題にもっと注目するべきです。利点と課題を天秤にかけ、「作り直した方が早いのでは?」という検討も合わせて行う必要があると思います。
完全に作り直す場合にはSOAの思想を踏まえた設計にするということは非常に意義があると思います。