企業向けアプリケーションのさまざまな“常識”をJavaのオープンソース・フレームワーク群である「JBoss」から学んでいきましょう。企業システムを構築するうえでの基礎となる知識をリファレンス感覚で説明していきます。初心者から中堅、ベテランまで大歓迎!
世の中には大きな処理を必要とする業務/機能がたくさんあります。ネットワークを利用したインターネット・バンキングやチケット予約、気象情報の解析などもあります。これらの処理は、1台のコンピュータで処理しようとすると、気の遠くなるような時間がかかることがあります。
昨今では、このように膨大な処理を必要とする機会が増え、複数台のコンピュータを並列に動作させることで、処理能力を高める分散コンピューティングの必要性が高まってきました。今回は、その分散コンピューティングの常識について、JavaやJBossのソフトウェアを交えながら説明します。
分散コンピューティングとは、複数台のコンピュータを用いて処理を分散させ、処理結果をネットワークを介して共有することで、1台のコンピュータで処理するよりも処理速度を向上させることを目的とした処理手法です。
分散コンピューティングの特徴は、「処理を実行するサーバ」上のプログラムが、「処理を取りまとめるサーバ」から呼び出されることです。共通のプロトコルを用いることで、「処理を実行するサーバ」と「処理を取りまとめるサーバ」が異なるアーキテクチャで実行されていても、問題なく呼び出せます。
また別の利点としては、1台のコンピュータが故障したとしても、それ以外のコンピュータがプログラムの稼働を継続できるので、1台のコンピュータで処理するよりも信頼性を高めることができます。
さらに、処理を実行するサーバの数を増やすだけでそれに応じて処理速度・信頼性の向上につながるという利点もあります。これを「スケールアウト」と呼びます。これに対して、1台のコンピュータを強化することで処理速度を向上させることを、「スケールアップ」と呼びます。昨今では、CPUなどの集積度の限界から、スケールアウトのようなコンピュータの並列化が注目されています。
上記のような複数台のコンピュータ群は、外から見れば仮想的な1台の大きなコンピュータと見なすことができます。この「大きなコンピュータ」を使ってサービスを提供しているのが、最近話題の「クラウド・コンピューティング」です。
クラウド・コンピューティングは、それまでには考えられなかった大量データの処理や柔軟なリソース管理を実現できるため、さまざまなサービスで使われ始めています。クラウド・コンピューティングの例からも分かるとおり、最近の分散コンピューティングは通常のLAN接続(TCP/IP)で実現されることが多いため、ネットワーク技術が重要な要素となっています。
例えば、連載第5回「非同期処理と疎結合ができる「メッセージング」の常識」で説明した「メッセージング」や、前回「いまさら聞けない「Webサービス」の常識」で説明した「Webサービス」の技術も、分散コンピューティングを支える技術といえるでしょう。
分散コンピューティングを実現するためには、ネットワーク上にある複数のアプリケーション同士で通信を行う必要があります。前述したWebサービス技術のほかにも通信技術の1つとして「CORBA」があります。
CORBAとは、Common Object Request Broker Architectureの略称で「分散オブジェクト技術」の1つです。分散オブジェクト技術とは、ネットワーク上のアプリケーションの処理を呼び出せる技術を表します。
通常、通信を行う場合には、どのような手順で通信を行うのかなどを決める必要がありますが、分散オブジェクト技術の1つであるCORBAは通信の手順を意識せずにローカル環境で処理を呼び出すかのように、ネットワーク上のアプリケーションの処理を呼び出せます。
CORBAでは、サーバオブジェクトのインターフェイス定義をIDL(Interface Definition Language)を使って行います。「IDL」はインターフェイス記述言語で、異なるプログラミング言語で書かれたアプリケーション間の通信を可能にします。このIDLをIDLコンパイラによってコンパイルすると「スタブ」「スケルトン」が生成され、JavaプログラムとCORBAの橋渡しを行ってくれます。
IDLコンパイラは各言語で用意されており、JavaのIDLコンパイラを用いると、Javaのスタブやスケルトンが生成されます。違う言語のIDLコンパイラを用いると、その言語のスタブやスケルトンが生成されます。このように、CORBAは異なる言語のアプリケーション間での通信が可能です。
CORBAの詳細は、下記連載をご参照ください。
いまなぜCORBAなの?
CORBAは「難しい」「仕事に関係ない」「古い」と思っているJavaエンジニアの皆さん。実はEJBの登場でCORBAの役割が再びクローズアップされてきているのです
「Java Solution」フォーラム
一方、分散オブジェクト技術の中には言語自体が持つ機能もあります。Java言語の「Java-RMI」がそれに当たります。次ページで、解説します。
Copyright © ITmedia, Inc. All Rights Reserved.