ミドルウェアとは、分散型ネットワーク内の2つ以上のアプリケーションやアプリケーション・コンポーネント間で、1種類以上の通信や接続を可能にするソフトウェアです。 ミドルウェアは、互いに接続するように設計されていないアプリケーションを簡単に接続し、それらをインテリジェントに接続する機能を提供することで、アプリケーション開発を効率化し、市場投入までの時間を短縮します。
ミドルウェアには多くの種類があります。 メッセージ・ブローカー やトランザクション処理モニターのように、1種類の通信に特化したものもあります。 また、 Webアプリケーション・サーバー やモバイル・デバイス用のミドルウェアなどは、特定の種類のアプリケーションを構築するために必要な、あらゆる種類の通信および接続の機能を提供します。 さらに、クラウド・ベースの Integration Platform as a Service(iPaaS) や エンタープライズ・サービス・バス(EBS)のように、企業内のすべてのコンポーネントを接続する集中的な統合ハブとして機能するものもあります。 (開発者が自分でカスタマイズしたミドルウェアを構築できるミドルウェアもあります。)
ミドルウェアの名前の由来は、最初のミドルウェアが一般に、アプリケーションのフロントエンドやクライアントと、クライアントがデータを要求するバックエンドのリソース(データベース、メインフレーム・アプリケーション、または特殊なハードウェア・デバイスなど)との間で、仲介役として機能していたことにあります。
しかし、今日のミドルウェアの機能の範囲はこの領域をはるかに超えています。 例えば、ポータル・ミドルウェアには、アプリケーションのフロントエンドとバックエンドの接続用ツールが含まれ、データベース・ミドルウェアには通常、独自のデータ・ストアが含まれます。 また、後述するように、コンテナ技術を活用して、開発者が複数のクラウドに分散したリソースに接続する際に役立つミドルウェアも登場しています。
最も基本的なレベルではミドルウェアは、開発者がアプリケーション・コンポーネント(サービスまたはマイクロサービス)、データ・ソース、コンピューティング・リソースまたはデバイスに接続する必要があるたびに、カスタム統合を作成することなく、アプリケーションを構築できるようにします。
これは、一般的なメッセージング・フレームワークを使用して、異なる アプリケーションやサービスの通信を可能にするサービスを提供することで実現しています。例えば、JSON(JavaScript Object Notation)、 REST(Representational State Transfer)、XML(Extensible Markup Language)、SOAP(Simple Object Access Protocol)、またはWebサービスなどがあります。 一般的にミドルウェアは、Java、C++、PHP、およびPythonなどの複数の言語で書かれたコンポーネントを相互に連携させるためのサービスも提供しています。
ミドルウェアは、このような相互運用性を提供するだけでなく、開発者を支援する以下のようなサービスも提供します
ミドルウェアにはさまざまな種類があります。 特定の種類の接続に焦点を当てるものもあれば、特定のアプリケーション、アプリケーション・コンポーネント、およびデバイスに焦点を当てるもの、また特定の開発タスクのためにミドルウェアの機能を組み合わせたものもあります。 一般的に利用されるミドルウェアの中では、以下が最もよく知られています。
メッセージ指向ミドルウェア(MOM) は、異なるメッセージング・プロトコルを使用するアプリケーション・コンポーネントが、メッセージを交換するためにやり取りできるようにします。 アプリケーション間のメッセージの翻訳(または変換)に加えて、MOMはメッセージが常に適切なコンポーネントに適切な順序で届くようにルーティングを管理します。 MOMの例としては、 メッセージ・キュー や メッセージ・ブローカーなどがあります。
リモート・プロシージャー・コール(RPC)・ミドルウェア によって、アプリケーションは、同一または異なるコンピューターやネットワーク上で動作する、他のアプリケーションのプロシージャーを起動できます。どちらのアプリケーションも、同一コンピューターの同一アプリケーションに属しているように動作できます。
データまたはデータベースのミドルウェア は、バックエンドのデータベースへのアクセスや相互作用を容易にするものです。 一般的にデータベース・ミドルウェアは、何らかの形式のSQLデータベース・サーバーです。
API(アプリケーション・プログラミング・インターフェース) ミドルウェアは 、開発者が自分のアプリケーションの API を作成、公開、および管理するためのツールを提供しています。その結果、他の開発者がそのAPIに接続できるようになります。 一部のAPI ミドルウェア の中には、他の組織がAPIを有償で利用できるようにする 収益化ツール が含まれています。 APIミドルウェアの例としては、API管理プラットフォーム、APIゲートウェイ、およびAPI開発者ポータルなどがあります。
オブジェクト・リクエスト・ブローカー (ORB)・ミドルウェア は、あるアプリケーション・オブジェクトやコンポーネントからの要求と、分散ネットワーク上の別のオブジェクトやコンポーネントによる要求の履行を仲介する役割を果たします。 ORBは、Common Object Request Broker Architecture(CORBA)で動作します。これにより、あるソフトウェア・コンポーネントは、他のソフトウェア・コンポーネントがどこでホストされているか、そのUIがどのようなものかを認識していなくても、他のソフトウェア・コンポーネントに要求を出すことができます。変換中は「仲介」によりこの情報が処理されます。
トランザクション・ミドルウェア は、分散型ネットワーク上でのデータ・トランザクションの実行をサポートするためのサービスを提供します。 トランザクション・ミドルウェアとしては、トランザクション・プロセッシング・モニター (TPM)が よく知られて います。TPMは、トランザクションが次のステップに進むことを保証し、データ交換の実行、必要に応じてデータの追加/変更/削除などを行い完了まで進めます。
非同期データ・ストリーミング・ミドルウェア は、データ・ストリームを中間ストアに複製することで、複数のアプリケーション間でのデータ共有を可能にします。 Apache Kafkaは リアルタイム・データ・ストリーミングのためのミドルウェアとして最もよく知られている例の1つです。
デバイス・ミドルウェア は、特定のモバイルOS向けのアプリケーションを開発するための統合および接続に焦点を当てた 機能のセットを提供しています。
ポータル・ミドルウェア は、さまざまな関連アプリケーションのコンテンツや機能を「1枚のガラス板」すなわち単一画面上で統合し、単一の複合アプリケーションを作成するためのツールやリソースを提供します。
ロボット・ミドルウェア は、複数のメーカーから提供され、複数ロケーションにあるロボットのハードウェア、ファームウェア、およびソフトウェアを統合するプロセスを簡素化します。
エンタープライズ・アプリケーション統合ミドルウェアにより、企業はエンタープライズ統合ハブを確立することができます。これは、社内のすべてのアプリケーション、アプリケーション・コンポーネント、ビジネス・プロセス、およびバックエンド・データ・ソースを接続する標準的な方法です。
10年ほど前までは、 企業のアプリケーション統合ミドルウェアといえば、 サービス指向アーキテクチャー(SOA)の統合ハブとなるエンタープライズ・サービス・バス(ESB)が主流でした。 今日では、iPaaS(Integration Platform-as-a-Service)と呼ばれるクラウド・ホスティング・モデルにより、企業はオンプレミス、プライベートクラウド、パブリッククラウドの各環境で、アプリケーション、データ、プロセス、サービスを接続することができます。さらに、統合ミドルウェア(およびそれが動作するハードウェア)を自社のデータセンターで購入、インストール、管理、および維持するために、作業や費用の必要はありません。
プラットフォーム・ミドルウェア(またはアプリケーション・プラットフォーム・ミドルウェア)は、アプリケーションやビジネス・ロジック向けに Javaランタイム環境(Java RE)またはコンテナ、あるいはその両方などのランタイム・ホスティング環境を実現することにより、アプリケーションの開発のサポートを強化し、アプリケーションの提供を加速することができます。 プラットフォーム・ミドルウェアには、前述したその他の種類のミドルウェアに加えて、エンタープライズ・アプリケーション ・サーバー、Webサーバー、およびコンテンツ管理システムが含まれているか、または組み合わされている場合があります。
クラウドネイティブとは、クラウド・コンピューティングの基本技術を活用したアプリケーション開発手法であり、オンプレミス、プライベートクラウド、またはパブリッククラウドのいずれの環境においても、一貫した開発、展開、および管理を提供することを目的としています。
具体的には、現在のクラウドネイティブ・アプリケーションは、 マイクロサービスから構築されたアプリケーションを、 Kubernetesを使ってオーケストレーションされた コンテナ に展開したものです。 マイクロサービスは、独自のスタックを包含する疎結合のアプリケーション・コンポーネントであり、互いに独立して展開および更新することができ、REST API、メッセージ・ブローカー、イベント・ストリームを組み合わせて相互に通信することができます。 コンテナは、マイクロサービスなどのアプリケーション・コードと、そのコードを従来のITやクラウド・インフラストラクチャー上で実行するために必要な、OSライブラリーや依存関係だけをパッケージ化した軽量の実行ファイルです。
これらの技術と関連技術を組み合わせることで、新しいハイブリッドクラウド・アプリケーションを提供したり、従来のレガシー・システムをクラウドで使用できるように モダナイゼーション したりするための、強力で、1度開発すればどこにでも展開できる、プラットフォームが生まれます。 しかし、それは同時に、さらに多くのソフトウェア・アプリケーション、データ・ソース、プログラミング言語、ツール、および分散型システムを組み合わせた複雑な開発環境にもつながることになります。
ミドルウェアはこの複雑さの一部を解決することができますが、コンテナ化されたアプリケーションを従来のミドルウェアで実行すると、それ自体の複雑さが加わるだけでなく、コンテナにより排除されるように設計されたインフラのオーバーヘッドが発生します。 そのため、 Cloud Foundry (IBM外部へのリンク)や Red Hat Open Shift など、人気の高いクラウド・アプリケーション開発プラットフォームは、コンテナ化されたミドルウェアを組み込めるように進化しています。このミドルウェアは必要な接続機能だけをモジュール化してコンテナに収めることができます。
エンタープライズ・アプリケーション向けの柔軟でセキュリティー機能の充実したJavaサーバー・ランタイム環境です。
ソーシャル化と収益化の取り組みを促進するなど、複数のクラウドにわたってAPIエコシステムを管理します
IBMは、お客様のビジネス・ワークフローからIT運用まで、AIを活用した自動化を提供いたします。 主要企業がどのように変革を進めているかをご覧ください。