エンタープライズ統合パターン(EIP)チュートリアル

Enterprise Integration Patterns  (EIP)は、GregorHohpeとBobbyWoolfによる本であり、 エンタープライズアプリケーション統合 とメッセージ指向ミドルウェアをパターン言語の形式で使用するための65のパターンについて説明しています。これらは、アプリケーションを統合するための標準化された方法を使用するのに役立ちます。問題が発生するたびに車輪の再発明を行う必要はありません。

エンタープライズ統合パターンの目標は、共通の言語と一連のワークフローアクションを作成して、それらを組み合わせて成熟した実用的なビジネスプロセスを作成することです。これは、企業向けの効果的なメッセージングソリューションの設計に役立つ65のパターンのカタログを提供します。

この本は、統合のための4つのトップレベルの選択肢を区別しています。

  1. ファイル転送
  2. 共有データベース
  3. リモートプロシージャコール
  4. メッセージング

次の統合タイプが導入されています。

  • 情報ポータル
  • データレプリケーション
  • 共有ビジネス機能
  • サービス指向アーキテクチャー
  • 分散型ビジネスプロセス
  • 企業間統合
  • 密結合の相互作用と緩く結合した相互作用

無料のオンラインツールを使用してエンタープライズ統合パターン図を作成する

VisualParadigmの無料の EnterpriseIntegration Patternsツール (EIPダイアグラムツール)は、ドラッグアンドドロップや位置合わせガイドなどのダイアグラム作成をより簡単かつ高速にする一連の編集機能を備えており、編集をスムーズかつ直感的にします。EIPダイアグラムツールには、さまざまな種類のEIPダイアグラムを作成できる一連のEIPシンボルと図形も付属しています。

パターンを簡単に開発し、PNG、JPG、GIF、SVG、PDFなどの形式で出力して共有できます。

例とテンプレートを使用してEIPを学ぶ

空白の図またはEIPテンプレートから始めることができます。以下はテンプレートの一部です。[編集]ボタンをクリックして、すぐに編集を開始します。無料で、登録は必要ありません。

エンタープライズ統合パターンの例:スマートプロキシ

オンラインで即座に編集

エンタープライズ統合パターンの例:合成メッセージングMSMQ

上記の例をオンラインで編集

他のエンタープライズ統合パターンを採用したいですか?

 ビジュアルパラダイム からのEIPオンライン編集リポジトリ

EIPの実装フレームワーク

Apache Camelは 、GregorHohpeとBobbyWoolfによる優れた本の ほとんどの エンタープライズ統合パターンをサポートしています。エンタープライズ統合パターン(EIP)に基づいており、すぐに使用できるベストプラクティスを適用して統合の問題を解決できます。Camelは、GregorHohpeとBobbyWoolfによる優れた本のほとんどのエンタープライズ統合パターンと、 マイクロサービスアーキテクチャの新しい統合パターンをサポートしています。

Camelを初めて使用する場合は  、これらのパターンを実装する前に、ユーザーガイドの「はじめに」を試してみることをお勧めします。

メッセージングシステム

メッセージチャネル

メッセージングを使用して、あるアプリケーションが別のアプリケーションとどのように通信しますか?

メッセージ

メッセージチャネルで接続された2つのアプリケーションは、どのようにして情報を交換できますか?

パイプとフィルター

独立性と柔軟性を維持しながら、メッセージに対して複雑な処理を実行するにはどうすればよいでしょうか。

メッセージルーター

一連の条件に応じてメッセージをさまざまなフィルターに渡すことができるように、個々の処理ステップをどのように分離できますか?

メッセージ翻訳者

異なるデータ形式を使用するシステムは、メッセージングを使用してどのように相互に通信できますか?

メッセージエンドポイント

アプリケーションはどのようにメッセージングチャネルに接続してメッセージを送受信しますか?

メッセージングチャネル

ポイントツーポイントチャネル

発信者は、正確に1人の受信者がドキュメントを受信するか、通話を実行することをどのように確認できますか?

SubscribeChannelを公開する

送信者は、関心のあるすべての受信者にイベントをブロードキャストするにはどうすればよいですか?

デッドレターチャンネル

メッセージングシステムは、配信できないメッセージをどのように処理しますか?

配達保証

メッセージングシステムに障害が発生した場合でも、送信者はどのようにしてメッセージが配信されることを確認できますか?

チャネルアダプタ

アプリケーションをメッセージングシステムに接続して、メッセージを送受信できるようにするにはどうすればよいですか?

メッセージングブリッジ

複数のメッセージングシステムを接続して、一方のメッセージをもう一方のメッセージでも利用できるようにするにはどうすればよいですか?

メッセージバス

個別のアプリケーションを連携させながら、他のアプリケーションに影響を与えることなくアプリケーションを簡単に追加または削除できるように、分離された方法で動作できるようにするアーキテクチャとは何ですか?

データキャプチャの変更

データベースに加えられた変更をキャプチャしてデータを同期し、それらの変更を別のシステムに適用します。

メッセージの構築

イベントメッセージ

メッセージングを使用して、あるアプリケーションから別のアプリケーションにイベントを送信するにはどうすればよいですか?

返信をリクエストする

アプリケーションがメッセージを送信するとき、受信者からどのように応答を得ることができますか?

差出人住所

返信者はどのようにして返信の送信先を知るのですか?

相関識別子

返信を受け取ったリクエスターは、これがどのリクエストの返信であるかをどのようにして知ることができますか?

メッセージの有効期限

送信者は、メッセージが古くなったと見なされ、処理されるべきではない場合をどのように示すことができますか?

メッセージルーティング

コンテンツベースのルーター

単一の論理機能(在庫チェックなど)の実装が複数の物理システムに分散している状況をどのように処理しますか?

メッセージフィルター

コンポーネントが興味のないメッセージを受信しないようにするにはどうすればよいですか?

ダイナミックルーター

効率を維持しながら、ルーターがすべての可能な宛先に依存することをどのように回避できますか?

受信者リスト

(静的または動的に)指定された受信者のリストにメッセージをルーティングするにはどうすればよいですか?

スプリッター

メッセージに複数の要素が含まれている場合、メッセージをどのように処理できますか?各要素は異なる方法で処理する必要がありますか?

アグリゲーター

個々の、しかし関連するメッセージの結果をどのように組み合わせて、全体として処理できるようにするのでしょうか。

リシーケンサー

関連しているが順序が正しくないメッセージのストリームを正しい順序に戻すにはどうすればよいですか?

構成されたメッセージプロセッサ

それぞれが異なる処理を必要とする可能性がある複数の要素で構成されるメッセージを処理するときに、メッセージフロー全体をどのように維持できますか?

スキャッターギャザー

メッセージを複数の受信者に送信する必要がある場合、それぞれが応答を送信する可能性がある場合、メッセージフロー全体をどのように維持しますか?

ルーティングスリップ

ステップのシーケンスが設計時に不明であり、メッセージごとに異なる可能性がある場合、一連の処理ステップを介してメッセージを連続してルーティングするにはどうすればよいですか?

プロセスマネージャー

必要なステップが設計時にわからず、連続していない可能性がある場合、メッセージを複数の処理ステップにルーティングするにはどうすればよいですか?

メッセージブローカー

メッセージの宛先を送信者から切り離し、メッセージのフローを一元管理するにはどうすればよいですか?

スロットラー

特定のエンドポイントが過負荷にならないように、または外部サービスで合意されたSLAを超えないように、メッセージを調整するにはどうすればよいですか?

サンプリング

ダウンストリームルートが過負荷にならないように、特定の期間に多数のメッセージから1つのメッセージをサンプリングするにはどうすればよいですか?

遅延器

メッセージの送信を遅らせるにはどうすればよいですか?

ロードバランサー

いくつかのエンドポイント間で負荷を分散するにはどうすればよいですか?

サーキットブレーカ

サービスが壊れた場合、どうすれば外部サービスの呼び出しを停止できますか?

サービスコール

ある種のサービスレジストリからサービスが検索される分散システムでリモートサービスを呼び出すにはどうすればよいですか?

佐賀

キャメルルートで、正常に完了する(すべて)か、実行されない/補正されない一連の関連アクションを定義するにはどうすればよいですか?

マルチキャスト

メッセージを同時に複数のエンドポイントにルーティングするにはどうすればよいですか?

ループ

ループ内でメッセージの処理を繰り返すにはどうすればよいですか?

メッセージ変換

コンテンツエンリッチャー

メッセージの発信者が必要なすべてのデータ項目を利用できない場合、別のシステムとどのように通信しますか?

コンテンツフィルター

少数のデータ項目のみに関心がある場合、大きなメッセージの処理をどのように簡素化しますか?

クレームチェック

情報コンテンツを犠牲にすることなく、システム全体に送信されるメッセージのデータ量をどのように減らすことができますか?

ノーマライザー

意味的には同等であるが、異なる形式で到着するメッセージをどのように処理しますか?

選別

メッセージの本文を並べ替えるにはどうすればよいですか?

脚本

メッセージを変更しない可能性のあるスクリプトを実行するにはどうすればよいですか?

検証

メッセージを検証するにはどうすればよいですか?

エンドポイントのメッセージング

メッセージングマッパー

ドメインオブジェクトとメッセージングインフラストラクチャの間で、2つを互いに独立させたまま、どのようにデータを移動しますか?

イベント駆動型の消費者

メッセージが利用可能になったときに、アプリケーションはどのようにしてメッセージを自動的に消費できますか?

消費者のポーリング

アプリケーションの準備ができたときに、アプリケーションはどのようにメッセージを消費できますか?

競合する消費者

メッセージングクライアントはどのようにして複数のメッセージを同時に処理できますか?

メッセージディスパッチャ

1つのチャネル上の複数の消費者がメッセージ処理をどのように調整できますか?

選択的消費者

メッセージコンシューマーは、受信するメッセージをどのように選択できますか?

耐久性のあるサブスクライバー

サブスクライバーは、メッセージをリッスンしていないときにメッセージの欠落を回避するにはどうすればよいですか?

べき等の消費者

メッセージ受信者はどのようにして重複メッセージを処理できますか?

トランザクションクライアント

クライアントはメッセージングシステムとのトランザクションをどのように制御できますか?

メッセージングゲートウェイ

アプリケーションの他の部分からのメッセージングシステムへのアクセスをどのようにカプセル化しますか?

サービスアクティベーター

アプリケーションは、さまざまなメッセージングテクノロジと非メッセージングテクノロジの両方を介して呼び出されるサービスをどのように設計できますか?

システムマネジメント

ControlBus

複数のプラットフォームと広い地理的領域に分散しているメッセージングシステムを効果的に管理するにはどうすればよいでしょうか。

迂回

検証、テスト、またはデバッグ機能を実行するための中間ステップを介してメッセージをどのようにルーティングできますか?

盗聴

ポイントツーポイントチャネルで送信されるメッセージをどのように検査しますか?

メッセージ履歴

疎結合システムでメッセージのフローを効果的に分析およびデバッグするにはどうすればよいですか?

ログ

メッセージの処理をログに記録するにはどうすればよいですか?

ステップ

ステップは、一連のEIPをグループ化して、メトリックと監視のための複合論理ユニットにします。

コメントを残す

メールアドレスが公開されることはありません。