分散コンピューティングとは
分散コンピューティングは、複数のコンピュータを連携させて共通の問題を解決する方法です。これにより、コンピュータネットワークは、複雑な課題に対処するために大規模なリソースを提供する強力な単一のコンピュータのように機能します。
例えば、分散コンピューティングは大量のデータを暗号化したり、多くの変数を使用して物理学や化学の方程式を解いたり、質の高い 3 次元動画アニメーションをレンダリングしたりします。分散システム、分散プログラミング、および分散アルゴリズムはすべて、分散コンピューティングに言及する別の用語です。
分散コンピューティングの利点
分散システムでは、単一システムコンピューティングよりも多くの利点がもたらされます。その一部を次に示します。
スケーラビリティ
分散システムは、ワークロードと要件に合わせて拡張できます。必要に応じて、新しいノード、つまりより多くのコンピューティングデバイスを分散コンピューティングネットワークに追加できます。
可用性
コンピュータの 1 台がダウンしても、分散コンピューティングシステムがクラッシュすることはありません。個々のコンピュータに障害が発生しても動作し続けることができるため、この設計はフォールトトレランスであることを示しています。
整合性
分散システム内のコンピュータは情報を共有し、それらの間でデータを複製しますが、システムはすべての異なるコンピュータ間でデータ整合性を自動的に管理します。したがって、データ整合性を損なうことなく、フォールトトレランスの利点が得られます。
透明性
分散コンピューティングシステムは、ユーザーと物理デバイスを論理的に分離します。個々のマシンのセットアップや設定を気にすることなく、1 台のコンピュータであるかのようにシステムを操作できます。システムをスムーズに機能させるために、さまざまなハードウェア、ミドルウェア、ソフトウェア、およびオペレーティングシステムを連携させることができます。
効率
分散システムは、基盤となるハードウェアのリソースを最適に使用して、より高速なパフォーマンスを実現します。その結果、ボリュームの急増や高価なハードウェアの使用不足によるシステム障害を心配することなく、あらゆるワークロードを管理できます。
分散コンピューティングのユースケース
分散コンピューティングは、今日どこにでもあります。モバイルアプリケーションとウェブアプリケーションは分散コンピューティングの例です。これは、アプリケーションのバックエンドで複数のマシンが連携して正しい情報を提供するためです。ただし、分散システムをスケールアップすると、より複雑な課題を解決できます。さまざまな業界で高性能分散アプリケーションがどのように使用されているかを見てみましょう。
ヘルスケアとライフサイエンス
ヘルスケアとライフサイエンス業界では、分散コンピューティングを使用して複雑なライフサイエンスデータをモデル化し、シミュレートしています。画像解析、医薬品研究、遺伝子構造解析はすべて、分散システムによって高速化されます。次に例を示します。
- 分子モデルを 3 次元で視覚化することにより、構造に基づく医薬品設計を迅速に行えます。
- ゲノムデータの処理時間を短縮して、がん、嚢胞性線維症、アルツハイマー病に関するインサイトを早期に得ます。
- MRI、X 線、CT スキャンなどの大量の複雑な画像を処理して、医師が患者を診断するのに役立つインテリジェントシステムを開発します。
工学研究
エンジニアは、分散システムで複雑な物理と力学の概念をシミュレートできます。エンジニアはこの研究を使用して、製品設計を改善し、複雑な構造を構築し、より高速な車両を設計しています。次に例を示します。
- 計算流体力学の研究では、液体の動態を研究し、その概念を航空機の設計やカーレースに実装しています。
- コンピュータ支援エンジニアリングでは、新しいプラントエンジニアリング、エレクトロニクス、および消費財をテストするために、計算集約型のシミュレーションツールが必要です。
金融サービス
金融サービス企業は、分散システムを使用して高速経済シミュレーションを実行し、ポートフォリオリスクを評価し、市場の動きを予測し、財務上の意思決定をサポートしています。分散システムの力を利用して次のことを行うウェブアプリケーションを作成できます。
- 低コストでパーソナライズされた保険料を提供
- 分散データベースを使用して、非常に大量の金融取引を安全にサポートします。
- ユーザーを認証し、顧客を詐欺から保護
エネルギーと環境
エネルギー企業は、運用を改善し、持続可能で気候に優しいソリューションに移行するために、大量のデータを分析する必要があります。分散システムを使用して、センサーやその他のインテリジェントデバイスの広大なネットワークからの大量のデータストリームを分析します。以下にそのような企業が行う可能性があるタスクを示します。
- 発電所の構造設計のために地震データをストリーミングおよび統合
- リアルタイムで油井をモニタリングして、プロアクティブなリスク管理を実行
分散コンピューティングアーキテクチャのタイプ
分散コンピューティングでは、1 台のコンピュータだけでなく、複数のコンピュータで実行できるアプリケーションを設計します。これを実現するには、さまざまなコンピュータがさまざまな機能を実行し、通信して最終的なソリューションを開発できるようにソフトウェアを設計します。分散アーキテクチャには主に 4 つのタイプがあります。
クライアントサーバーアーキテクチャ
クライアントサーバーは、分散システムでソフトウェアを編成する最も一般的な方法です。機能は、クライアントとサーバーの 2 つのカテゴリに分けられます。
クライアント
クライアントの情報と処理能力は限られています。代わりに、ほとんどのデータやその他のリソースを管理するサーバーにリクエストを送信します。クライアントにリクエストを行うことができ、クライアントはユーザーに代わってサーバーと通信します。
サーバー
サーバーコンピュータは、リソースへのアクセスを同期して管理し、データまたはステータス情報をもってクライアントのリクエストに応答します。通常、1 つのサーバーで複数のマシンからのリクエストを処理できます。
利点と制限事項
クライアント/サーバーアーキテクチャでは、セキュリティの利点が得られ、継続的な管理が容易になります。サーバーコンピュータを保護することに専念すれば済みます。同様に、データベースシステムを変更する場合、必要となるのはサーバーの変更のみです。
クライアント/サーバーアーキテクチャの制限は、サーバーが通信のボトルネックを引き起こす可能性があることです。それは特に、複数のマシンが同時にリクエストを行う場合に顕著です。
3 層アーキテクチャ
3 層分散システムでは、クライアントマシンはアクセスする最初の階層であり続けます。一方、サーバーマシンはさらに次の 2 つのカテゴリに分類されます。
アプリケーションサーバー
アプリケーションサーバーは、通信の中間階層として機能します。これらには、分散システムを設計する目的となるアプリケーションロジックまたはコア機能が含まれています。
データベースサーバー
データベースサーバーは、データを保存および管理する第 3 階層として機能します。データの取得とデータ整合性を担当します。
サーバーの役割を分割することで、3 層分散システムは通信のボトルネックを減らし、分散コンピューティングのパフォーマンスを向上させます。
N 層アーキテクチャ
N 層モデルには、同じ問題を解決するために相互に通信するいくつかの異なるクライアントサーバーシステムが含まれます。最新の分散システムのほとんどは、n 層アーキテクチャを使用しており、さまざまなエンタープライズアプリケーションがバックグラウンドで 1 つのシステムとして連携して動作します。
ピアツーピアアーキテクチャ
ピアツーピア分散システムは、ネットワークに接続されたすべてのコンピュータに同等の責任を割り当てます。クライアントコンピュータとサーバーコンピュータは分離されておらず、どのコンピュータでもすべての役割を実行できます。ピアツーピアアーキテクチャは、コンテンツ共有、ファイルストリーミング、およびブロックチェーンネットワークで一般的になっています。
分散コンピューティングの仕組み
分散コンピューティングは、分散システムアーキテクチャ内でコンピュータが相互にメッセージをやり取りすることによって機能します。通信プロトコルまたはルールにより、分散システムのコンポーネント間の依存関係が作成されます。この相互依存関係は結合と呼ばれ、結合には主に 2 つのタイプがあります。
疎結合
疎結合では、コンポーネントは弱く接続されているため、1 つのコンポーネントへの変更により他のコンポーネントが影響を受けることはありません。 例えば、クライアントコンピュータとサーバーコンピュータは、時間的に疎結合することができます。クライアントからのメッセージはサーバーキューに追加され、サーバーがそのメッセージに応答するまで、クライアントは他の機能を実行し続けることができます。
密結合
高性能の分散システムは、密結合を使用することがよくあります。通常、高速ローカルエリアネットワークは複数のコンピュータを接続し、クラスターを作成します。クラスターコンピューティングでは、各コンピュータが同じタスクを実行するように設定されています。クラスタリングミドルウェアと呼ばれる中央制御システムは、タスクを制御およびスケジュールし、異なるコンピュータ間の通信を調整します。
並列計算とは
並列コンピューティングは、ネットワーク内の 1 台または複数のコンピュータが同時に多くの計算またはプロセスを実行するタイプのコンピューティングです。並列コンピューティングと分散コンピューティングという用語は、しばしば同じ意味で使用されますが、いくつかの違いがあります。
並列コンピューティングと分散コンピューティング
並列コンピューティングは、分散コンピューティングの特に緊密に結合された形式です。並列処理では、すべてのプロセッサが共有メモリにアクセスして、プロセッサ間で情報を交換します。一方、分散処理では、各プロセッサがプライベートメモリ (分散メモリ) を持ちます。プロセッサは、メッセージパッシングを使用して情報を交換します。
グリッドコンピューティングとは
グリッドコンピューティングでは、地理的に分散したコンピュータネットワークが連携して共通のタスクを実行します。分散グリッドの特徴の 1 つは、複数の個人または組織に属するコンピューティングリソースからそれらを形成できることです。
グリッドコンピューティングと分散コンピューティング
グリッドコンピューティングは、複数のネットワーク間のパフォーマンスと調整を重視する高度にスケーリングされた分散コンピューティングです。内部的には、各グリッドは密結合されたコンピューティングシステムのように機能します。ただし、外部的には、グリッドはより疎結合です。各グリッドネットワークは個々の機能を実行し、結果を他のグリッドに伝達します。
AWS ハイパフォーマンスコンピューティングとは
AWS ハイパフォーマンスコンピューティング(HPC) を使用すると、高速ネットワーキングと実質的に無制限の分散コンピューティングインフラストラクチャでイノベーションを加速できます。例えば、次のサービスを利用できます。
- Amazon Elastic Cloud Compute (EC2) は、安全でサイズ変更可能なコンピューティング性能を使用して、ほぼすべてのワークロードをサポートします。
- AWS Batch は、AWS コンピューティングサービス全体で何十万ものコンピューティングジョブをスケーリングします。
- AWS ParallelCluster は、HPC コンピューティング環境と HPC クラスターを迅速に構築します。
今すぐ無料アカウントを作成して、AWS で分散コンピューティングを開始しましょう。