ミドルウェアとは、分散型ネットワーク内の2つ以上のアプリケーションやアプリケーション・コンポーネント間で、1つ以上の種類の通信や接続を可能にするソフトウェアです。 ミドルウェアは、互いに接続するように設計されていないアプリケーションを簡単に接続し、それらをインテリジェントに接続する機能を提供することで、アプリケーション開発を効率化し、市場投入までの時間を短縮します。
ミドルウェアには多くの種類があります。 メッセージ・ブローカー やトランザクション処理モニターのように、1種類の通信に特化したものもあります。 また、 ウェブア・プリケーションサーバー やモバイル・デバイス用ミドルウェアなどは、特定の種類のアプリケーションを構築するために必要な、あらゆる種類の通信および接続機能を提供します。 また、クラウド型の 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などの複数の言語で書かれたコンポーネントを相互に連携させるためのサービスも提供しています。
ミドルウェアは、このような相互運用性を提供するだけでなく、開発者が以下のようなサービスを提供します。
ミドルウェアにはさまざまな種類があります。 あるものは特定のタイプの接続性に焦点を当て、あるものは特定のアプリケーション、アプリケーション・コンポーネント、およびデバイスに焦点を当て、あるものは特定の開発タスクのためにミドルウェアの機能を組み合わせます。 最もよく知られており、一般的に利用されるミドルウェアには、以下のようなものがあります。
エンタープライズ・アプリケーション統合ミドルウェアは、企業がエンタープライズ統合ハブを確立することを可能にします。これは、社内のすべてのアプリケーション、アプリケーション・コンポーネント、ビジネス・プロセス、およびバックエンド・データ・ソースを接続する標準的な方法です。
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 など、人気の高いクラウド・アプリケーション開発プラットフォームは、コンテナ化されたミドルウェアを含むように進化しています。このミドルウェアは必要な接続機能だけをモジュール化してコンテナに収めることができます。
ミドルウェアが重要な役割を果たすデジタル変革を組織が加速する中、自動化の必要性が拡大しています。 ビジネスとITの運用全体における、より優れた自動化への移行は、小規模で測定可能なほど成功したプロジェクトから開始する必要があります。その後、他のプロセスや組織の他の部分に合わせてスケーリングおよび最適化できます。
IBMと協業することで、事前構築されたワークフローを含む、 AIを活用した自動化機能を利用できるようになります。これにより、あらゆるプロセスをよりインテリジェントなものにすることで、イノベーションを加速させます。
次のステップに進んでください。
IBM Cloudアカウント で今すぐ始めましょう。
IBMは、お客様のビジネス・ワークフローからIT運用まで、AIを活用した自動化を提供いたします。 主要企業がどのように変革を進めているかをご覧ください。
エンタープライズ・アプリケーション向けの柔軟でセキュリティーが充実したJavaサーバー・ランタイム環境です。
複数のクラウドにまたがるAPIエコシステムを管理し、ソーシャル化と収益化の努力を後押しします。
Apache Kafkaを基盤としたイベント・ストリーミング・プラットフォームであるIBM Event Streamsは、イベントにリアルタイムで対応し、より魅力的な顧客体験を実現するのに役立ちます。
Red Hat OpenShift on IBM Cloudは、パブリック環境やハイブリッド環境でOpenShiftを活用して、俊敏性、市場への即応性、拡張性、信頼性の向上を図ります。