複数のコンピュータをネットワークで接続して稼働させるシステムのことを「分散システム(distributed systems)」といいます。1台のコンピュータを独立させて使用する時と比べて、高い安定性を保ち、負荷も分散させることができるなど、分散システムにはいくつかのメリットがあります。
今回は分散システムの概要とメリット、デメリット、そしてセキュリティ対策などについて徹底解説します。
この記事の目次
分散システム(distributed systems)とは
分散システムとは、ネットワークで接続された複数のコンピュータから構成されるシステムのことです。複数のコンピュータに作業を分担させて稼働させることで、各コンピュータにかかる負荷を分散させることができ、安定した処理をさせることが可能です。
分散システム(distributed systems)の仕組み
分散システムはミクロな視点で見ると、複数の独立したコンピュータがネットワークで接続されたように見えますが、外部からマクロな視点で見ると、1つの高性能なコンピュータのように見えます。実際には複数のコンピュータで処理を分散させていますが、外部からはそのようには見えません。
現在はインターネット回線を利用した分散システムが普及しています。特にクライアントサーバーシステムは代表的です。クライアントはサーバーに対して様々な処理をリクエストし、サーバーはリクエストされた処理を行い、クライアントに結果を返却します。
分散システム(distributed systems)の種類
分散システムには大きく分けて2つの種類があります。
垂直型分散システム(vertical distribution)
複数のコンピュータに上下関係を持たせて配置する分散システムです。それぞれのコンピュータは異なる処理を実行します。本社に大きなコンピュータを用意して複数の支店にある小型のコンピュータを接続する形態や、クライアントサーバーシステムは代表的な垂直機能分散システムの例です。
水平型分散システム(horizontal distribution)
同じ処理能力を持つ複数のコンピュータを対等に接続させる分散システムです。1つの大きな処理を分散させることで負荷を平均化させる「水平負荷分散システム」や、複数の機能を分散させて1つのコンピュータに1つの機能を処理させる「水平機能分散システム」があります。
分散システム(distributed systems)のメリット
分散システムには以下の3つのメリットがあります。
負荷分散
複数のコンピュータで処理を分担させるため、1つ1つのコンピュータにかかる負荷を分散させることができます。その結果、1台のコンピュータを利用する時より、高速な処理が可能で、1台のコンピュータでは手に負えない処理も実行できます。
故障・障害に強い
分散システムを構築している1つのコンピュータに故障や障害が発生しても、他のコンピュータで処理を継続できるため、システム全体がダウンすることがありません。分散システムを構築しているコンピュータの数が多いほど、1台のコンピュータの故障の影響範囲が少なくなり、故障したコンピュータだけピンポイントで修復すれば、元の分散システムとして処理が再開できます。
低コスト
分散システムで使われるコンピュータの1つ1つは低価格で、それほど性能が高くないコンピュータです。また分散システムに必要な処理スピードや機能に応じて、自由にコンピュータを追加したり削除したりできます。そのため柔軟にシステムのカスタマイズが可能となるため、結果として大型コンピュータを導入するより、コストが低くなります。
分散システム(distributed systems)のデメリット
分散システムにはメリットもありますが、以下のようなデメリットも含まれます。
管理が複雑
分散システムでは複数のコンピュータを管理しなければならないため、管理が複雑になりますます。ソフトウェアやOSのアップデートも全てのコンピュータが対象となるため、かなり時間がかかります。さらにトラブル発生時には、どのコンピュータで障害が発生しているのか、全てのコンピュータをチェックしなければならないため時間も必要です。
セキュリティ対策が難しい
分散システムでは管理しているコンピュータ全てにセキュリティ対策が必要です。またコンピュータだけでなくネットワーク内にファイアウォールなどの機器の設置も必要です。そのため分散システム全体では1台のコンピュータにセキュリティ対策を施す場合より、コストもかかり難易度も上がります。
分散システムで求められるセキュリティ対策
分散システムは、ネットワークを利用して複数のコンピュータを接続しています。そのため、各コンピュータに対して個別のセキュリティ対策を施すだけでなく、接続に使用しているネットワーク回線に対するセキュリティ対策が必要です。ネットワーク回線にセキュリティを確保する概念のことを、セキュアチャネルと言います。
セキュアチャネルは、分散システムを構築しているコンピュータ同士の1つの通信について、受信者と送信者の2つの役割に分けて、通信された情報の盗聴や改ざんから保護することを目的としています。特にネットワーク回線としてインターネットを使用する場合、暗号化プロトコルであるSSLが最も使われています。
また正規の通信相手と通信しているかどうか確認する手段として、認証も必要です。認証は暗号化とセットで用いることが望ましく、セキュアチャネルとしては公開鍵暗号が使用されることが多いです。
先ほども紹介したように、分散システムではスタンドアロンのシステムと比べて、一般的にセキュリティ対策は困難です。だからと言って過剰なセキュリティ対策を施してしまうと、ユーザーの利便性を損なう結果となってしまいます。そのためバランスの取れたセキュリティ対策を施すことが重要となってきます。
分散システムと集中システムの違い
分散システムが複数のコンピュータをネットワークで接続するシステムであることに対して、中央に1台の大型コンピュータを設置して全ての処理を集中させるのが「集中システム(Centralized Systems)」です。中央にある大型のコンピュータは「メインフレーム」と呼ばれます。メインフレームにはデータの入出力だけを行う端末が接続されており、ユーザーはその端末の操作のみを行います。
集中システムの場合、分散システムと比べて、管理やセキュリティ対策は簡便で信頼性が高いのが特徴です。しかしひとたびメインフレームに障害が発生すると、全ての業務が停止するだけでなく、復旧にも多くの時間を要します。現在はインターネットの普及にともない、一部のシステムを除いて、低コストで導入できる分散システムが主流となっています。
まとめ
分散システムは現在、低コストで障害に強いという特徴があり、様々なシステムで使われています。最近では分散システムを進化させた「自律分散システム」も使われています。ただ単純に複数のコンピュータを連携させるだけでなく、1つ1つのコンピュータが自律しながらも、全体として分散システムとして稼働しているシステムのことです。
私たちが普段利用しているインターネットも、広い意味では自律分散システムと言えるでしょう。このように分散システムは様々な用途で進化を続けながら普及していくことが予想されます。