従来、モノリシック システムを複数のコンピューターで実行することは、システムを個別のクライアント コンポーネントとサーバー コンポーネントに分割することを意味していました。 このようなシステムでは、クライアント コンポーネントがユーザー インターフェイスを処理し、サーバーはデータベース アクセス、印刷などのバックエンド処理を提供しました。 コンピューターが急増し、コストが低下し、ますます高い帯域幅ネットワークによって接続されるようになったので、ソフトウェア システムを複数のコンポーネントに分割する方が便利になり、各コンポーネントは異なるコンピューター上で実行され、特殊な機能が実行されます。 このアプローチでは、開発、管理、管理が簡素化され、多くの場合、パフォーマンスと堅牢性が向上しました。これは、1 台のコンピューターの障害によってシステム全体が無効になるとは限らないためです。
多くの場合、次の図に示すように、分散システムは個々のノードで構成されている場合でも、必要な操作を実行する不透明なクラウドとしてクライアントに表示されます。
クライアントの代わりにコンピューティング操作が呼び出されるため、クラウドの不透明度は維持されます。 そのため、クライアントはクラウド内でコンピューター (ノード) を見つけて、特定の操作を要求できます。操作を実行する場合、そのコンピューターは、追加の手順や実行されたコンピューターをクライアントに公開することなく、クラウド内の他のコンピューターで機能を呼び出すことができます。
このパラダイムを使用すると、クラウドに似た分散システムの仕組みを、多数の個別のパケット交換、または個々のノード間の会話に分割できます。
従来のクライアント/サーバー システムには、固定の役割と責任を持つ 2 つのノードがあります。 最新の分散システムは 2 つ以上のノードを持つ場合があり、多くの場合、それらの役割は動的です。 ある会話ではノードをクライアントにすることができますが、別の会話ではノードをサーバーにすることができます。 多くの場合、公開される機能の最終的なコンシューマーは、ユーザーがキーボードに座って出力を見ているクライアントです。 それ以外の場合、分散システムは無人で機能し、バックグラウンド操作を実行します。
分散システムには、特定のパケット交換ごとに専用のクライアントとサーバーが存在しない場合がありますが、呼び出し元 (またはイニシエーターのいずれか、多くの場合、クライアントと呼ばれます) があることを覚えておくことが重要です。 呼び出しの受信者 (多くの場合、サーバーと呼ばれます) もあります。 分散システムの要求/応答形式で双方向パケット交換を行う必要はありません。多くの場合、メッセージは 1 つの方法でのみ送信されます。