SOAと「つなぐ」技術 第7回:SOAをとりまく「つなぐ技術」 - HUBとBUS

Avatar
dstn

マーケティング企画部の渡辺です。
今回は、「つなぐ」技術における「つなぐ手段」について説明をします。

システム同士をつないで利用するには、それらシステム間を何らかの具体的な通信手段でつなぐ必要があります。今回はそのようなシステム間をつなぐ手段についての記事です。 

「つなぐ」技術のつなぐ手段

SOAは業務システムをつないで活用する考え方の一種であると言えます。業務システム間をつなぐことそのものは、ずっと昔から行われてきました。そこで、まず最初に「つなぐ」技術における「つなぐ手段」について、代表的な三つの形態を紹介します。 

N対N接続(のスパゲッティ状態) 

システム同士をつないで利用したいニーズは昔からありましたが、最初はシステム連携の個別のニーズごとに、個別に連携を作ることが多くおこなわれました。また、昔はハードウェアが貧弱でネットワークも高価で貴重だったため、FTPなどを用いたファイル転送による連携、一日一度の夜間バッチによる連携処理など、主として複雑ではない手段が用いられました。 

必要になるごとに必要な分だけつなぐ方法ですから、解りやすく自然な方法とも言えます。しかし、その後コンピュータが安くなって企業内に様々な目的で業務システムが多数導入されるようになると、多数の連携ニーズが発生し、それに対して個別の連携ニーズごとにつなぐ部分を作りこんだ結果、企業内システムがスパゲッティ状態になってしまい、コスト面や管理面などで様々な問題を引き起こすことになります。 

NxN_2 

連携HUB 

このような状況で使われるようになったのが「連携HUB」でした。「連携HUB」は連携処理を専門に処理するサーバを導入し、システム間連携をそこで集中的に処理する仕組みです。これにより、連携HUB上で効率的に様々なシステム連携を作りこめるようにするとともに、多数の連携によりスパゲッティ状態になることを防ぎます。

また連携HUBは、業務システムをシステム連携により再構築する必要性が認識され、EAI(Enterprise Application Integration)が取り組まれるようになったことで、つなぐ手段としてよく利用されるようになりました。 

HUB_2 

SOAブームでの「つなぐ手段」:Webサービス連携用のBUS(ESB) 

HUBで連携の処理と通信を専用サーバに集中させたように、連携のための通信を専用の通信路(=BUS)に集約することで連携をシンプルにする考え方があります。Webサービス間の連携のためのBUSとして作られたのが、ESBです。 

ESBとは Enterprise Service Bus の略です。ESBはWebサービスと同じく、かつてのSOAブームの話題の主役でした。SOAとは業務システムの機能をWebサービス化し、ESB基盤を導入することであるという風に考えられることもありました。これは「狭義のSOA」と呼ばれることのある定義です。 

※本連載では、SOAとは特定の技術手段のことではなく、業務システム構築の考え方のことであるとしています。これは「広義のSOA」と呼ばれることがある定義で、SOAの今日的な価値を示す定義だと考えています。 

ESB 

それぞれの特徴

次に、それぞれの特徴について説明をします。 

N対Nの接続 

N対Nの接続は「悪い方法」に思えるかもしれませんが、実際のところは状況次第だとも言えます。N対N接続で複雑なシステム間連携を構築すると、様々な問題が起こることもあります。しかし、その心配がなければ、N対N接続のシンプルさと解りやすさは長所とも言えます。 

接続のニーズごとに個別につなぐやり方は目的と手段の関係が明快です。また、接続を集約しないことで、各接続を他の接続の事情を考えずに作れますし、作る責任や管理する責任もそれぞれの連携ごとに分割しやすくなります。 

連携HUB 

「連携HUB」では、連携のための通信や連携処理を集中的に処理するHUBを設置することで、連携処理を集約して混乱を取り除きます。システム連携を一元的に管理して全体最適を実現しやすくし、システム連携の変更や追加も容易にする考え方です。 

N対N接続の場合、連携の経路は最大でN*N-1方向にもなります。連携先候補が20あるなら、最大で380もの連携処理の作りこみを強いられる場合があることになります。これに対して、連携HUBの場合には、最大でN本、つまり20本の連携を作りこめば、あとは連携HUB上での設定で自在な連携が実現できるようになります。 

通信を集約するだけでなく、連携処理についても連携HUB上に集約されて一か所に集約されるため、連携処理がどうなっているか解りやすく、全体を理解しつつ連携を作りやすい方法であるとも言えます。 

また、連携HUB(EAI)製品では、連携先への接続手段を「接続アダプタ」として事前に用意されていることが多く、アダプタを使えばすぐに接続できるため、すぐにシステム連携を実現したい場合にも連携HUB(EAI製品)の利用が適すことがあるでしょう。 

また、一つの連携HUBに全ての連携処理を集中させなければならないわけではないので、複数の連携HUBを組み合わせて利用することも出来ます。連携処理をそれぞれの場所ごとに分散配置したりする他、負荷を分散させたり、具体的な資源の抽象化を行うハブと抽象的な連携を行うハブに分けることなどができます。 

ESB(連携用のBUS) 

ESB(連携用のBUS)では「連携のための通信」を「専用の通信路」上に集約します。同じく集約を図ることでスパゲッティ化を解消しますが、集約するものが異なります。 

ESBはWebサービス用の「賢い通信路」として機能します。下位レベルの複雑さを隠蔽してくれるため、ESBに「差す」だけで、細かいことは意識せずに簡単に他のWebサービスを簡単に呼び出して利用できるようになります。 

例えば、実際には離れた別のネットワーク上にあって間にルータやインターネットがある場合や、一度別のネットワークを経由しないと通信できなくなっている場合にも、自動的に経路を見つけたりルーティングして相手のWebサービスと通信できるようにします。あるいは、物理的なネットワーク構造を変更したり拡張しても、変わりなくWebサービスを利用できるようにします。つまり、具体的にどことどのように通信しているかを意識せずにサービスを利用できるようにしてくれます。 

また、通信データ形式の変換が必要な場合や、呼び出し相手が異なる通信手段を利用している場合などでも、ESBがこれらの面倒を自動的に処理してくれて、利用者は意識せずに利用できるようになっている場合もあります。 

このように、様々な手間のかかることは「賢い通信路」が面倒をみてくれて、Webサービスはロジックそのものに専念できるようにします。これにより、Webサービス同士を組み合わせての利用が容易にできるようになります。 

このようにESBは、Webサービスをとても便利に利用できるようにしてくれます。しかしその前提として、呼び出し元および呼び出し先がサービス化してESBに差せるようになっている必要があります。このため、ESBを利用する前にまずサービス化の作業が必要になることがあり、今すぐに連携を作って動かさなければならない状況では手間になることもあります。 

おわりに

今回は、「つなぐ」技術におけるつなぐ手段についての説明をしました。 

状況に応じてつなぐ手段を利用すれば、効率的に「つなぐ」技術に取り組むことが出来ます。また、つなぐ手段は組み合わせて利用することもできます。例えば、連携HUBを利用して効率的にサービス化を行い、ESBで連携HUBで作ったサービス同士を組み合わせて使うようなこともできます。

次回は、サービス化(カプセル化)についての記事を投稿する予定です。

コメント

ログインしてコメントを残してください。

Powered by Zendesk