web-dev-qa-db-ja.com

エンタープライズサービスバスの利点

エンタープライズサービスバス(ESB)の使用と利点に関する情報はどこにありますか?

次の情報を探しています。

  1. 問題の種類とESBが解決に役立ちます
  2. eSBの代替案-そして、ESBを選択する際のトレードオフ
  3. eSB互換システムを構築するために開発者として何をする必要があるか

ウィキペディアやベンダーのオンラインマーケティングパンフレットだけでなく、より詳細なレベルの情報を探しています。理想的には、いくつかのサンプルコードは、ESBの利用に何が関係するのかを明確にするのに役立ちます。 .NETまたはJavaの観点からの情報が最も役立ちます。

ありがとう。

31
LBushkin

ESBへ、またはESBへではない まず、 Mule の作成者によって書かれたものをお勧めします。

22
Mirko N.

ESBは Enterprise Integration Patterns を実装する良い方法です。

ESBが解決に役立つ問題の種類

  • 単一のプロトコルに正規化したいプロトコルがいくつかあります(メッセージングシステムへのFTP、電子メール、SOAP、XMPPなど)。 ActiveMQ。これにより、サービスの実装をプロトコルから切り離すことができます。
  • メッセージをリッスンし、メッセージを処理し、メッセージ(メッセージエンドポイント、チャネルアダプタなど)を生成できるように、サービスをこのアーキテクチャにフックする一貫した方法が必要です。
  • マネージドコンテナーでこれらのさまざまなコンポーネントをデプロイする必要がある場合があります(例:ServiceMix、Mule)
  • さまざまなプロトコルにいくつかのビルド済みコンポーネントとアダプターが必要な場合があります(ServiceMix、Mule、Camelには多くのビルド済みコンポーネントがあります)。
  • 長時間実行されるワークフローが必要になる場合があります。多くの場合、ビジネスプロセス管理はESBと一緒に提供されるものです(Apache ODEは多数のオープンソースESBにプラグインします)。

ESBの代替

選択肢は本当に解決しようとしている問題によって異なります。

  • 分散サービスを提供するために、多くの場合、ポイントツーポイントRPCプロトコル(RMIを介したEJBやHTTPを介したWebサービスなど)を介してサービスを公開するアプリケーションサーバーを使用します。したがって、メッセージを「バス」に送るのではなく、クライアントが直接サーバーを呼び出します。
  • 特定のプロトコルに応答するには、そのプロトコルに応答するクライアントを構築するだけです。たとえば、JavaMailを使用して電子メールを受信するアプリケーションや、Smackを使用してXMPPを受信するアプリケーションを作成します。問題が1つまたは2つのプロトコルに限定されている場合、完全なESBを導入する価値はないかもしれません。

ESB互換システムを構築するために開発者として行う必要があること

これは選択するESBに依存しますが、優れたプロトコルのほとんどは、あらゆる種類のプロトコルとホストPOJOを呼び出すように設計されているため、ESB互換システムを構築するために必要なものはそれほど多くありません。コードを非同期にしてみる価値はあります。

例として、Apache Camelはおそらく最も簡潔な構成になっています。これが tutorial です。

19
Jamie McCrindle

3つの主な利点:

  • バスは、エンドポイントが互いに直接通信する必要なく、互いに接続する方法を提供します。エンドポイントは標準の通信インターフェイスであるバスにのみ準拠する必要があるため、エンドポイントの通信が簡略化されます。 (これは、ESBだけでなく、テクニカルバスにも当てはまります)
  • ESBは、単一の場所を提供して、頻度、可用性、パフォーマンスなどの主要なエンドポイントメトリックを取得します。
  • ESBは複数の通信インターフェースを提供する傾向があります。ただし、開発者はバスからデータを取得および受信するために最も簡単なものを選択するだけで済みます。

ただし、状況に応じてビジネス価値が提供されることを確認してください。 ESBを導入すると、企業はさらに複雑になります。理想的には、いくつかのアプリケーションに基づいてこれを選択するのではなく、組織全体を選択する必要があります。組織にはoneプロダクションESBクラスタのみが存在する必要があります。

代替案:

  • 特に通信プロトコルが同じである場合は、物事を互いに直接接続するだけです。これは単純なアプリケーションクラスタに適しており、あまり考える必要はありません。ただし、アプリケーションの数が増えると、相互接続の維持が困難になります。
  • 別の代替手段はMQ実装です。これにより、複雑な相互接続なしでデータをプッシュする方法が提供されますが、通信チャネルを1つだけ使用する必要があります。幸い、Javaの場合、JMS標準があります。

実用性:

私は可能な選択肢を述べました。最初はお粗末に見えるかもしれませんが、そのように始めることができないと言っているのではありません。私は個人的に、ESBを経由せずにリモートと直接対話するように書いて、統合の問題をあまり気にせずに機能することを確認しています。

ESBがない場合は、開発にはMuleを、テストと実稼働にはWebSphere ESBを試してみることをお勧めします。標準に準拠していると思われる2つの製品を使用して、ベンダーを正直に保ち、開発者が不注意なベンダーロックインを防ぐ標準に準拠していることを確認する傾向があります。

最後に、次の質問に答えてください。長期的に見て、企業がコストに見合う他の複雑さを簡素化するために、少し複雑さを加える時ですか?

7

すでに言及されているサイトに加えて。この記事は「 どうしても必要な場合を除き、ESBを使用しないでください 」を参照してください。 MuleSourceのCTOによって作成されました。MuleSourceは、利用可能な最も人気のあるオープンソースESBの1つです。質問への正確な回答ではなく、「ESBが必要ですか」と自問することのほうが重要ですか。

6
Robin

ESBについて まともな3部シリーズ がESBに関してあります。ESBはかなりコンセプト指向であり、ベンダーにとらわれません(ほとんどの場合)。 IBMのサイトをざっと見て、ESBでたくさんの良いものを見つけました。 BizTalkサイト にも、きちんとした情報やビデオなどがあります。

3
JP Alioto

エンタープライズサービスバス(ESB)は、より複雑なアーキテクチャに基本的なサービスを提供するミドルウェアのソフトウェアアーキテクチャです。たとえば、ESBには、サービス指向アーキテクチャー(SOA)の実装に必要な機能が組み込まれています。一般的な意味では、ESBは、アプリケーションやサービス(特にレガシーバージョン)へのアクセスを管理して、Webベースまたはフォームベースのクライアント側を介してエンドユーザーに単一のシンプルで一貫したインターフェースを提供するメカニズムと考えることができます。フロントエンド。

本質的に、ESBは、ミドルウェアが実際に実行するはずの分散型の異種バックエンドサービスとアプリケーション、分散型の異種フロントエンドユーザーと情報利用者に対して、複雑さを隠し、アクセスを簡素化し、開発者が一般的で標準的な形式のクエリ、アクセス、および相互作用、バックグラウンドで複雑な詳細を処理します。 ESBの魅力、そしておそらくは将来の成功の鍵は、利用可能なテクノロジーではなく、ビジネス要件に基づいてサービスとアプリケーションの統合をサポートする能力にあります。

http://searchsoa.techtarget.com/definition/enterprise-service-bus

WSO2 Enterprise Service Bus (製品)

WSO2 Enterprise Service Bus(ESB)4.7.0ドキュメント! WSO2 ESBは、高速、軽量、100%オープンソースであり、Apache Software License v2.0に基づいて配布された使いやすいESBです。 WSO2 ESBを使用すると、システム管理者と開発者は、メッセージルーティング、メディエーション、変換、ロギング、タスクスケジューリング、フェイルオーバー、ロードバランシングなどを簡単に設定できます。これは、最も一般的に使用されるエンタープライズ統合パターン(EIP)をサポートし、高度な統合要件のためのトランスポートスイッチング、イベント、ルールベースのメディエーション、および優先度ベースのメディエーションを可能にします。 ESBランタイムは、Apache Synapseメディエーションエンジンに基づいて、完全に非同期、非ブロッキング、ストリーミングになるように設計されています。

WSO2 ESBは、革命的なWSO2カーボンプラットフォームの上に開発されています。OSGiベースのフレームワークで、コンポーネント化によってシームレスにモジュール化できますSOA。多くの機能とオプションのコンポーネント(アドオン)が含まれています) ESBにインストールでき、環境に不要な機能を簡単に削除できるため、WSO2 ESBを完全にカスタマイズおよび調整して、正確なSOAニーズを満たすことができます。

アーキテクチャ企業のアプリケーションインフラストラクチャは本質的に複雑で、完全に異なるセマンティクスを持つ数百のアプリケーションで構成されている場合があります。これらのアプリケーションの一部はカスタムビルドされ、一部はサードパーティから取得され、一部は両方の組み合わせであり、異なるシステム環境で動作できます。

これらの異種アプリケーション間の統合は、企業にとって不可欠です。さまざまなサービスがさまざまなデータ形式と通信プロトコルを使用している場合があります。サービスの物理的な場所は任意に変更できます。これらすべての制約は、アプリケーションが依然として密接に結合されていることを意味します。 ESBを使用して、さまざまなサービスとサービスコンシューマ間のこれらの結合を緩めることができます。

WSO2 ESBは、エンタープライズ向けの本格的なESBです。これは、Apache Axis2プロジェクトを使用して構築されたApache Synapseプロジェクトに基づいて構築されています。すべてのコンポーネントはOSGiバンドルとして構築されています。

これをチェックしてください Hanselminutesポッドキャスト 。サービスバスを実装する前に実際に確認する必要があるいくつかの質問に答えます。

2
Igor Zevaka

私のプレゼンテーション " Spoilt for Choice-How to choose a right ESB "をご覧ください。

ESB、Integration Suite、または単に統合フレームワーク(Apache Camelなど)をいつ使用するかを説明します。また、オープンソースと独自仕様のESBの違いについても説明します。

1
Kai Wähner

eSBを使用する理由はありません。しないでください。不必要な複雑さ。あなたが直接行くことができるのに、なぜ仲介者を通るのですか? ESBの関係者は、ポイントツーポイントが悪いと言いますが、ESBとの間のポイントツーポイントは良好です。

1
user671731

あなたが自問する必要がある最初の質問は、なぜESBが必要なのですか?

ESBは通常、イベントSOA最近の流行語のように思われる分散アーキテクチャーで使用されます。ESBに飛び込む前に、マーティンのFowler配布システムの第一法則について思い出させてください。

http://martinfowler.com/bliki/FirstLaw.html

「私の最初の分散オブジェクト設計の法則:オブジェクトを配布しないでください(EAAのPから)。

関連する章はオンラインで入手できます。」

新しいシステムを構築する場合、最も重要な側面は、それが将来の証拠であること、つまり、容易なスケーラビリティとメンテナンス性であることです。ネットワーク環境に分散された静的定義済みコントラクトを使用して、緩やかなサービスの概念に基づいてシステムを構築する場合、インターフェイスがまだ存在するため、その特定のサービスに必要なアーキテクチャを「隠す」ことができます。

ESBは非同期メッセージングシステムに密接に関連しているため、そのような実装に飛び込む前に、アーキテクチャが同種である必要はないこと、つまり、すべてのサービスが同じ方法で実装されていることを知ってください。システムを最初から配布する場合、事前にではなく、スケーリングする必要がある場合にのみ配布する必要があります。ただし、確認する必要があるのは、必要に応じて、サービスのクライアントへの変更を意味する契約を破ることなく、サービスを簡単に配布できることです。

ESBの利点については、SOAと同じですが、ESBは非同期メッセージ(イベント)操作のコンテキストを追加します。

0
MeTitus

ESBの利点の非常に短い概要はここにあります:

http://javaenterpriseworld.blogspot.de/2014/02/benefits-of-esb.html

主なプロは大まかにリストされています...

0
leon4
0
Albert Cheng

まず説明します[〜#〜] soa [〜#〜]。それは、明確に定義されたインターフェースを備えた「サービス」として公開される再利用可能なソフトウェアモジュールのセットとしてアーキテクチャを構築することについてです。サービスは疎結合を促進し、クライアントからその実装の詳細を抽象化します。

各コンポーネントがサービスを直接呼び出すと、SOAが混乱する可能性があります。したがって、次の一般的な問題があります。

  • 使用されているサービスと使用されていないサービスをどのようにして見つけますか?
  • 特定のサービスを使用しているクライアントをどのように見つけますか?
  • 中断することなく、サービスの更新をどのようにロールアウトするか、既存のサービスに新しいバージョンを公開するのですか?
  • 古いサービスインターフェイスを呼び出す古いクライアントの下位互換性をどのようにサポートしますか
  • 内部/外部トラフィックのすべてのサービスにわたって、ロギング、監査、セキュリティ実施などをどのように実行しますか?

ESBは上記の問題の解決策です。 ESB…

  • 順番に役立ちます
  • 企業ポリシーを厳密に実施できる
    • 例えば一貫して適用されるセキュリティ、スロットル、監査など
  • サービスのエンドポイントを仮想化します
    • バージョニング、柔軟な更新、HA /ロードバランシングなどを促進します。
  • ルーティング、メディエーション、変換などを実行する

いくつかのサンプルユースケースを見つけることができます here 。 AdroitLogicの開発者サイトからのものであり、AdroitLogicのESBであるUltraESBと厳密に結合していることに注意してください。

0