ESBとは?

Enterprise Service Bus(ESB)は、原理的にはアーキテクチャです。さまざまなアプリケーションをインフラストラクチャ上で統合するための『ルール』と『原則』の集合体とも言えます。市販のESB製品を使用することで、この種のアーキテクチャを構築することができますが、その方法や機能は製品によって異なります。そしてESBアーキテクチャのコアコンセプトは、異なるアプリケーションを統合するために、アプリケーション間に通信路を構築し、各アプリケーションがバスと通信することです。これによりシステムは互いに切り離されるため、バス上の他のシステムへの依存や知識がなくても通信ができるようになります。

ESBのコンセプトは、時間の経過とともに脆弱になり、管理が難しくなってしまうポイント・ツー・ポイント接続からの脱却を目的としています。ポイント・ツー・ポイント接続では、主にカスタムコードが利用されており、モニタリングやトラブルシューティングのための一元的な方法がありませんでした。これは『スパゲッティコード』と呼ばれる望ましくないアーキテクチャの形態に他なりません。つまり、アプリケーション同士が緊密に依存してしまうことで、拡張性を低下させてしまうのです。


ESBを使う理由

ESBとは

企業がITインフラストラクチャのバックボーンとしてESBを導入する最も一般的な理由の一つは、俊敏性を高めることで、新しいイニシアチブの設計から市場投入までの時間を短縮することでしょう。ESBアーキテクチャは、拡張性が非常に高く、シンプルで、明確に定義され、接続可能なシステムを提供するため、この時間短縮を可能にしてくれます。さらにESBでは、既存のシステムを活用し、その通信および変換機能を使用することで、新しいアプリケーションと接続・連携・統合することが可能になります。

インプリメンテーション(実装)

 

  • バスのコンセプトは、アプリケーションを互いに切り離すことです。通常、JMSやAMQPを用いて通信が行われます。ESBアーキテクチャには、ビジネスの『俊敏性』と『拡張性』を実現するためのいくつかの大切な原則があります。重要なことは、システムを互いに切り離しながらも、一貫性を持ち、管理可能な方法で通信できるようにすることです。
  • バス上を移動するデータはほとんどの場合、XMLです。Canonical XML(正規化されたXML形式)を強く推奨します。
  • アプリケーションとバスの間には、マーシャリングのための『アダプタ』が存在します。
  • アダプタはバックエンドのアプリケーションと通信し、データをアプリケーションのフォーマットからバスのフォーマットに変換します。また、「メッセージルーティング」や「トランザクション管理」「セキュリティ」「モニタリング」「エラー対応」などの役割も担っています。
  • ESBは基本的にステートレスです。状態(ステート)はバスを通過するメッセージに埋め込まれます。
  • バス上を通過するメッセージ形式を一貫させることで、バス上のすべてのアプリケーションが互いに通信できなければなりません。


インテグレーションのために大切な原則

ESBアーキテクチャが、インテグレーションの5つの基本原則にどのように対応しているかを見てみましょう。

  • オーケストレーション:粒度の細かい既存コンポーネント群を、単一で高次な複合サービスに組み込むことです。これにより、サービスの粒度が適切な大きさになり、基盤となるコンポーネントの再利用と管理性が促進・向上されます。これにより、サービスの適切な「きめ細やかさ」を確保でき、基盤となるコンポーネントの再利用が促進され、管理力が向上します。
  • 変換:各ESBコネクタによって必要とされる、標準的なデータ形式と特定のデータ形式の間のデータ変換です。「CSV」や「Cobol copybook」「EDI」といった形式から、「SOAP/XML」または「JSON」への変換が例として挙げられます。標準的なデータ形式を使用することで、独自のデータ形式を必要とする大規模ESBの実装のための変換を、大幅に簡素化することが可能です。多くのESB利用者や開発者、プロバイダへの影響も抑えられます。
  • トランスポート:複数の形式(HTTP、JMS、JDBCなど)の間の通信規約のネゴシエーションです。なお、Muleでは、JDBC(Java Database Connectivity)をデータにアクセスするための単なるトランスポート(またはエンドポイント)と認識することで、データベースを『サービス』のように扱います。
  • メディエーション:複数のインターフェースを提供することで、①後方互換性と代替性のために複数バージョンのサービスをサポートすること、②同一の基礎的コンポーネントに複数チャネルを実装することを可能にします。②の原則には、レガシーインタフェース(fat file)と標準準拠型インタフェース(SOAP/XML)など、複数のインタフェースが同一コンポーネントに含まれる場合も存在します。
  • 非機能的な一貫性:典型的なESBの場合、セキュリティおよび監視ポリシーの適用や実装方法についての一貫性がこれにあたります。さらにESBの複数のインスタンスを使用することで、スループットの向上と単一障害点(Single Points of Failure)の解消により、『拡張性』と『可用性』の向上という目的を達成することができます。


ESBプラットフォームの選び方

ESBプラットフォームは、大規模大手からニッチなオープンソースベンダーまで、数多く存在しています。スペックや価格だけでは見えてこない、ESBプラットフォームの選択に重視すべきポイントを紹介します。


軽量であること

Muleは完全負荷分散のサイズが40 MBと、最も軽量なインテグレーション・プラットフォームのひとつです。モジュール化されているため、フットプリントを減らさなければならない場合、不要なモジュールを簡単に取り除くことができます。MuleSoftは軽量をサイズだけにとどまらず、既存システムとのインテグレーションに要する時間やコスト、作業量も視野に入れています。『Muleランタイムエンジン』は「モジュール化」と「超高速なホットデプロイメント」は当然のこと、機能の順序変更や追加/変更が容易な構成モデルを提供しています。


メディエーションだけではない

ほとんどのベンダーは、ESBを単なるシステム間のメディエーションと位置づけており、ビジネスロジックのホスティングやサービス公開のために、別の製品を用意・提供しています。MuleSoftでは、これは複雑化を招く原因になると考えています。Muleは、RESTおよびSOAPのサービスを公開するための、軽量で拡張性のあるサービスコンテナを提供しています。MuleはSpringとも緊密に統合できるため、開発者はビジネスロジックの実装にSpringの機能を利用することも可能です。


はじめやすさ:開発者なら誰でもMuleを習得できる

Muleは、「Maven」「Eclipse」「JUnit」「Spring」など、Java開発者なら誰でも知っている一般的なツールを使用しています。ロジック定義には、Springと似ているXML構成モデルを使用し、カスタムコードは「Java」「Groovy」「JavaScript」「Ruby」「Python」などの一般的な言語で記述することができます。『Anypoint Platform』はグラフィカルな開発環境を提供しているので、新人の開発者でもすぐに慣れることができるでしょう。


拡張性(スケールアップとスケールダウン)

Muleは、コモディティハードウェア上での水平スケールができるように設計されています。大規模システムは必要ありません。Muleランタイムエンジンは、アプリケーションに簡単に組み込むことができます。例えば、「Tomcat」「JBoss」「WAS」といったアプリケーションサーバに埋め込んだり、自社のアプリケーションに直接埋め込むことも可能です。開発者にとって重要なこととして、MuleはJUnitもサポートしているので、JUnitのテストケースに埋め込むことができます。そのため、インテグレーションのための反復的なユニットテストを開発者のノートPCで作成し、継続的なビルドを実現することが可能になります。


メッセージ形式に依存しない

コンテナがメッセージに依存しないことは、Muleの強力な特徴です。XMLメッセージをユーザに強制することがないのです。XMLは一般的ですが、「JSON」や「flat files」「Cobol Copybooks」「バイナリ」「ファイル添付」「ストリーム」「Javaオブジェクト」を使わなければならないケースも多数あります。データマッパーも同様に、さまざまなデータのマッピングが可能です。さらに『Muleストリーミング』を使用することで、開発者はサイズの大きなメッセージを効率的に処理することができます。


クラウド対応

アプリケーションのアーキテクチャ、ホスティングおよびモニタリングをインテグレーションの専門チームに任せるのであれば、『CloudHub™』が最適でしょう。CloudHubは「Integration Platform as a Service(iPaaS)」であり、数分で運用を開始することができます。CloudHubは、「(150以上の)SaaS」「SNS」「インフラストラクチャ」「オンプレミスアプリケーション」などに接続可能な、柔軟なマルチテナント型のプラットフォームを提供しています。CloudHubのアプリケーションはMuleスタンドアロンで実行できますし、その逆も可能です。

つまり、デプロイがオンプレミスでもクラウドでも、新しいコンセプトや使用方法を学習する必要はありません。開発者のエクスペリエンスも同様で、学習のために費やす時間を大幅に短縮できるのです。

Summary

ほとんどの企業が俊敏性を高めることで、新しい製品やサービスの企画・開発から上市するまでの時間を短縮したいと考えていると思います。ESBは、拡張性が非常に高く、シンプルで、明確に定義され、接続可能なシステムの提供により、この迅速性を企業にもたらします。MuleSoftは、ESBアーキテクチャを市販製品として捉えず、インフラストラクチャとアプリケーション設計をも含んだ『アーキテクチャ』として位置づけています。この思想が変わることはありません。

世界で最も柔軟なESBソリューションである『Anypoint Platform』の『Muleランタイムエンジン』を体験してください。俊敏性と拡張性、発展性を持ちながら、組織のアーキテクチャを構築するアプローチです。