Citrix NetScaler nCoreテクノロジー

Webアプリケーション デリバリー性能の飛躍的向上

この内容をPDFで読む

[PDF] Citrix NetScaler nCoreテクノロジー

はじめに

Webアプリケーションの発展と普及の勢いは弱まる兆しがありません。弱まるどころか、加速し続けています。これは、これまでのERP、CRM、Web 2.0などのWebベースアプリケーションが提供してきたメリットを考えると、不思議なことではありません。Webアプリケーションの爆発的拡大の一方で、コストパフォーマンスの低下も見られます。無数の開発手法およびフレームワーク(Ajax、SOA、Comet、Railsなど)と、従来のWebサービスやJSONの使用の拡大により、ネットワークにはこれまで以上に高いパフォーマンスが求められ、使用されるサーバーサイクルとネットワーク帯域幅が急速に増加しています。

このようなアプリケーションの進化に対応するには、ロードバランサーとアプリケーションデリバリーコントローラ(ADC)のパフォーマンスおよびキャパシティを引き上げる必要があります。しかし、必要とされるパフォーマンスは、もはやインテルやAMDの最新プロセッサの導入といった単純な手段のみでは解決できなくなっています。プロセッサ単体で向上できるパフォーマンス向上には、限りがあるのが現状です。従来のプロセッサとは異なり、今後のパフォーマンス向上はすべて、1つのプロセッサパッケージに複数の処理機構が搭載された「マルチコアプロセッサ」と呼ばれるアーキテクチャの革新によって実現されることになるでしょう。たとえば、従来のインテル® Pentium® 4は同時に1つの命令しか処理できませんでしたが、4コアのインテル® Core™ 2 Quadであれば、4つの命令を並行して処理することが可能です。

アプリケーションとソフトウェアにおいては一般に、単純にこれら新型マルチコアプロセッサを使用するだけで夢のようにパフォーマンスが向上するというものではありません。別の言い方をするなら、3.33 GHzで動作するクアッド (4) コアと13.32 GHzで動作するプロセッサ1基を同じに考えることはできないということです。

シングルコアの壁を越える

マルチコアおよびマルチプロセッサの環境で高いパフォーマンスを達成するには、負荷の効率的な分散、プロセッサ間のリソース共有、並列処理ができない重要機能の正確な管理など、多くの技術的課題を克服する必要があります。こうした課題すべてに共通する要素が「同期」です。

同期は、高速なネットワーク処理の障害となっています。潜在的な衝突を排除し、正しい計算結果を保証するためには、処理の依存関係を注意深く吟味する必要があり、これがすべての処理速度の低下を引き起こします。正確な結果を得るための「同期」であるにもかかわらず、皮肉にも同期の設計自体が、複雑性を増大させます。複雑性が増大すればするほど、ミスが発生する可能性が高くなります。

同期の影響は、マルチスレッドアプリケーションを見るとわかります。マルチスレッドアプリケーションでは、タスクが複数の小さなプログラム(スレッド)に分割され、それらが並行して実行されます。マルチスレッドアプリケーションの単純な実装では、パフォーマンスは大幅に向上します。しかし、アプリケーションの複雑性とスレッド数が増すにつれて、パフォーマンス曲線はすぐに頭打ちになります。パフォーマンス低下の原因は、ソフトウェアコンポーネント間でのやり取りが増加し、より多くの同期処理が必要とされるために、結果的にこれらの同期に要する時間がマルチスレッドの利点を打ち消してしまうことにあります。

わかりやすい解決策は、同期を必要とする処理を排除することですが、これは口で言うほど簡単なことではありません。同期を排除するには、ソフトウェアの完全な再設計と大規模な事前計画が必要になります。また、ハードウェア、ソフトウェア、システム間のやり取りを深く理解する必要があります。