分散コンピューティングでは、単一のコンピューティング目的のために、さまざまな運用場所にある多数のコンピューティング・リソースを使用します。
分散コンピューティング・システムは、大きな成果をもたらします。次回、大規模マルチプレイヤー・オンライン(MMO)ゲームをプレイするときに、このことを思い出してください。MMOを効果的に管理するには、システム全体を統合し、緊密に連携させて、リアルタイム環境で何千人ものプレイヤーが同時に共有するシームレスなオンライン・エクスペリエンスを提供する必要があります。
分散コンピューティングは、プロバイダーが共通の目標に向けて、調整された同期とコンピューター処理能力を集結するのに役立ちます。
これは、現在使用されている分散コンピューティング・サービスの数多くのアプリケーション例の一部にすぎません。これには、動画アニメーション用の鮮明な3Dグラフィックスの作成、人間の脳の機能を模倣するニューラル・ネットワークのトレーニング、化学や物理学に関連する非常に複雑な方程式の解決などが含まれます。
通常、分散コンピューティング・モデルは、最も集中的なコンピューティング・タスクとワークロードを処理し、最も深刻なコンピューティング上の課題に対処します。そのため、複数のコンポーネントと共有メモリーの使用が必要になります。
分散コンピューティングは、複数のコンピューター、サーバー、ネットワークを統合して、さまざまな規模や目的のコンピューティング・タスクを実行します。コンポーネントが互いに近い小規模の分散コンピューティング・システムでは、これらのコンポーネントはローカル・エリア・ネットワーク(LAN)を介してリンクされます。
一方、コンポーネントが地理的に分離されている大規模な分散システムでは、コンポーネントは広域ネットワーク(WAN)を介してリンクされます。分散システム内のコンポーネントは、使用されているネットワークの種類を問わず情報を共有します。分散システムの最もよく知られた例はインターネットです。おそらく、近年の分散システムで最も物議を醸している例は暗号通貨です。
コンピューティングの観点から見ると、通常含まれるコンポーネントの数に関して、最も基本的な形式の分散コンピューティングでも通常は次の3つの基本コンポーネントが含まれます。
ただし、分散コンピューティングの状況を構成するものや、その機能を実現するために必要なソフトウェア・コンポーネントの数を制限する厳格なルールは存在しません。そのチェーン(またはネットワーク)内で動作するコンポーネントは少数である可能性がありますが、インスタンスにはさらに多くのコンポーネントが組み込まれている可能性があります。
これは、分散コンピューティング・システムを使用する1つの大きなメリットで、マシンを追加することでシステムを拡張できます。もう一つの大きなメリットは冗長性の向上です。そのため、ネットワーク内の1台のコンピューターが何らかの理由で故障した場合でも、その故障点にかかわらず、システムの動作は中断されることなく継続されます。
冗長性を追加するというこの概念は、フォールト・トレランスの重視と密接に関連しています。フォールト・トレランスとは、システムの動作を継続しながら、OSがソフトウェアまたはハードウェアの障害に応答して修正できるようにする修正プロセスです。フォールト・トレランスは、業務を中断させる障害が発生した場合でもビジネスが継続して実行できるかを測る一般的な基準として使用されるようになりました。
したがって、分散コンピューティング・システムはコンポーネントの数に制限がありません。また、これらのコンポーネントが物理的に近くに配置され、ローカル・エリア・ネットワークで接続されている必要もありません。広域ネットワークの拡張機能のおかげで、分散コンピューティング・システムのコンピューターを大陸ごとに分離しても、操作性を維持できるようになりました。
分散コンピューティング・システムの目標は、分散コンピューティング・ネットワークを、その規模やコンポーネントの配置場所に関係なく、単一のコンピューターのように機能させることです。この調整は、さまざまなコンポーネント間での精巧なメッセージ・パッシング・システムを通じて実現されます。
通信プロトコルは、メッセージのやり取りを管理し、これらのコンポーネント間に存在する関係性の形を作成します。この関係は「カップリング」と呼ばれ、通常は次の2つの形式のいずれかで表現されます。
分散コンピューティングでは、複数の操作命令シーケンスを同時に実行する同時実行のプラス効果とマイナス効果の両方を扱います。その優れた特性の中で最も重要なのは、同時実行性により、複数のプロセス・スレッドの並列コンピューティングが可能になるという点です。(並列コンピューティングは、実行時タスクを複数の小さなタスクに分割するプロセスである並列処理とは同じものではありません。)
同時実行性に伴うマイナス面としては、多くの場合、レイテンシーが長くなり、または過剰な数のコンポーネント要求によって分散コンピューティング・システムが過負荷になり、トラフィックがほぼ停止してしまうボトルネックの発生などが挙げられます。
同時実行は、他のタスクがバックグラウンドで実行されている間に1つのプログラムを実行し続けることを可能にするマルチスレッドの概念とは異なります。同時実行では、複数のスレッドが同時に実行され、共有リソースに同時にアクセスするため、リソースの消費量が大きくなります。
一部の処理ワークロードは非常に大きく、ほとんどの単一システムが対応できる範囲を超えています。分散コンピューティングでは、このようなワークロードを複数の機器間で共有するため、大規模なジョブにも効率的に対処できます。
分散コンピューティングは、共有資産の概念に基づいて動作し、分散コンピューティング・インスタンス内のさまざまなコンポーネント間でデータ、ソフトウェア、ハードウェアなどのリソースの共有をサポートします。
多くの組織のオンライン・トラフィックは、報道されたニュースやその他の要因により、急速かつ劇的に変化することがあります。分散コンピューティングは、このような急増に耐えられるよう、必要な柔軟性を提供します。
分散コンピューティングは、大規模な処理ジョブを小さなコンピューティング・タスクに分割し、それを多数のコンピューターで共有することで、パフォーマンス・レベルを向上させます。その結果、累積的な処理速度が向上し、総ストレージ容量が増加します。
複数のシステムを使用する分散コンピューティングでは、集中処理システムよりも初期コストがかかるのは事実ですが、時間が経つにつれて、レイテンシーの低減と応答時間の高速化によってコスト効率が向上するため、それらのコストは平均化され、最終的には分散コンピューティングは集中処理システムよりもコスト効率が高くなります。
分散コンピューティングの種類は、それぞれが採用する分散コンピューティング・アーキテクチャーに応じて分類されます。
クライアント・サーバー・システムは、複数のシステムで使用できるクライアント・サーバー・アーキテクチャーを使用します。この場合、クライアントはリクエストの形式で入力をサーバーに送信します。この通信には通常、特定のタスクを実行するコマンドか、追加のコンピューティング・リソースの要求のいずれかが含まれます。その後、サーバーはそのタスクを実行するか、要求されたリソースを割り当てます。完了すると、サーバーは実行されたアクションに関するメッセージをクライアントに送信します。
集中型システムはクライアント・サーバー・アーキテクチャーを使用しますが、ピア・システムはピア・アーキテクチャー(通称、ピアツーピア・アーキテクチャー)に依存します。ピア・システムは、ニーズを識別して要求を発行するか、それらのニーズを満たすように動作して操作を報告したりと、事実上クライアントまたはサーバーとして機能することができるノードを活用します。名前が示すように、ピア・システムには階層がないため、ピアツーピア・システムで動作するプログラムは互いに自由に通信し、ピア・ネットワークを介してデータを転送できます。
ミドルウェアは、2つの異なるアプリケーション間で動作する一種の「仲介者」と考えることができます。つまり、ミドルウェア自体が2つのアプリケーションの間に存在し、両方にサービスを提供するアプリケーションです。ミドルウェアには解釈的な側面もあります。これは、異なるシステム上で実行されているさまざまな相互運用性アプリ間の翻訳者として機能し、それらのアプリケーションが自由にデータを交換できるようにします。
3層システムは、プログラムの機能を表すために使用される層の数からこのように呼ばれています。データがクライアント・システム内に配置される一般的なクライアント・サーバー・アーキテクチャーとは対照的に、3層システムでは、データはデータ層と呼ばれる中間層に保存されます。アプリケーション層はデータ層の片側を囲み、プレゼンテーション層はデータ層の反対側を囲みます。3層システムは、さまざまなWebアプリケーションで日常的に使用されます。
多層分散システムとも呼ばれるN層システムは、ネットワーク機能の容量が無制限であり、処理のために他のアプリケーションにルーティングされます。N層システムのアーキテクチャーは、3層システムのアーキテクチャーに似ています。N層システムは、多くのWebサービスやデータ・システムのアーキテクチャー基盤としてよく使用されます。
分散コンピューティングでは、さまざまなプログラミング・パラダイム(プログラミング・スタイルと考えることができます)を使用できます。
オンライン・バンキングは、一度に多数の場所で実行され、多くの場合、主要サービスの提供(顧客サービス、セキュリティー、トランザクション処理など)の背後にあるサーバーの1つを収容する役割を異なる銀行の拠点が担うという点で、分散コンピューティングの高度さを示しています。銀行の顧客が期待するとおり、すべてが瞬時かつシームレスに行われます。
分散コンピューティングは現在、エネルギーおよび環境分野で使用されています。エネルギー面では、分散コンピューティングは、スマートグリッド技術による使用量の調整とエネルギー消費の最適化に役立ちます。スマート・グリッドでは、センサーやスマート・メーターなどのさまざまな入力デバイスから環境データを収集するために分散コンピューティングも使用しています。
金融の特定の分野の労働者はすでに分散コンピューティング・システムを使用しています。リスク管理を例に挙げると、金融機関は確率とリスク評価に関する意思決定をより適切に行うために膨大な計算を実行するために膨大な量のデータを必要としますが、分散コンピューティングにより、計算負荷が複数のシステム間で均等に共有されます。
分散コンピューティングにより、計算負荷が複数のシステム間で均等に共有されます。例としては、世界で最も強力な粒子加速器である大型ハドロン衝突型加速器が挙げられます。これを可能にする実験は、膨大な量のデータの収集と分析に依存しており、分散コンピューティングの使用が必要です。同様に、分散コンピューティングは、ヒトのDNA配列をマッピングするというヒトゲノム・プロジェクトでも同じ目的を果たしました。分散コンピューティングは、天気予報や気候モデリングにおいても重要な役割を果たしています。
IBM Cloud Infrastructure Centerは、IBM zSystemsおよびIBM LinuxONE上のプライベートクラウドのインフラストラクチャーを管理するためのOpenStack互換ソフトウェア・プラットフォームです。
企業のハイブリッドクラウドとAI戦略のために設計された、サーバー、ストレージ、ソフトウェアを紹介します。
ビジネスニーズに合ったクラウド・インフラストラクチャー・ソリューションを見つけ、必要に応じてリソースを柔軟に拡張します。