分散システムとは、別々のコンピュータ同士を接続し、端末ごとに作業を割り振って動かすシステムのことです。
いくつもの端末に作業を割り振るので1台ごとの負荷が軽くなり、高い安定性を確保できます。しかし、端末ごとやネットワークに対して外部攻撃への対策を考える必要があり、運用管理が難しいといった課題もあります。
システムについてよくわからないまま導入すると、外部からの攻撃を受けるリスクを増大させ、管理業務の負担を増やすだけになるでしょう。
本記事では、分散システムの概要とメリットとデメリット、これを使用したサービス例について解説します。
分散システムとは
分散システムは、端末ごとに作業を割り振って動かすシステムです。複数の端末に作業を割り振ることで1台あたりの負荷を軽くし、処理の安定化を実現できます。
このシステムは大きく2種類に分けることができるので、詳しく確認していきましょう。
分散システムの種類
分散システムは以下の2種類に大別されます。
垂直型分散システム
垂直型分散システムとは、それぞれ別々の役割をもった端末を階層構造的に設置するシステムのことです。大型のコンピュータを頂点とし、それにぶら下がる形で中規模や小規模のコンピュータが接続された形式です。
代表的なモデルにはクライアントサーバーが該当し、本社に大きい端末を置き、支店にそれ以外の端末を置いています。
水平型分散システム
水平型分散システムとは、処理能力がほぼ等しい端末を対等につなげるシステムのことです。プログラムを端末同士で共有しており、同じ処理を複数台に任せるタイプと機能ごとに異なる処理をさせるタイプがあります。
異なる用途に対応したサーバーを用意し、それぞれに処理を任せる場合はこのタイプに該当します。
分散システムと集中システムの違い
分散システムとよく似た言葉に集中システムがあります。
集中システムは単体のコンピュータに大きな処理を任せて処理を集中させるシステムで、運用と点検や管理がしやすいという点が利点です。
しかし、大きな端末1台に処理を任せるため負荷が大きく、一度問題が発生すればそれだけで全てのシステムが停止する危険性を持っています。
分散システムのメリット・デメリット
分散システムは、負荷や処理を端末ごとに割り振ることで問題が発生しづらく、仮に障害が発生したとしても復旧しやすいという利点があります。
一方で外部からの攻撃への対策が難しい点など無視できない問題もあります。利点と問題点をそれぞれ詳しく確認していきましょう。
分散システムの利点
分散システムがもつ利点は以下の4つが挙げられます。
端末の負荷を軽くできる
複数の端末を使って処理を行うので、1台の端末にかかる負荷を軽くできます。
いくつもの端末に処理を任せることによる処理速度の高速化や単体では不可能な処理ができるので、大掛かりなプログラムの実行に適しています。
問題が起きてもシステムへの影響が少ない
分散システムでは仮に問題が生じてもシステムそのものへの影響は小規模です。
接続されている端末の全てがダウンしない限りは処理を継続でき、システムを構成するコンピュータの数が多いほど、1台分の障害による影響範囲が少なくなります。
また、ダウンした端末を修理することもシステムの修復に比べると簡単な点も特徴です。
コストをおさえられる
分散システムは中規模以下の端末をつなげるだけでシステムを構築できるので、導入コストをおさえられます。
問題が起きた場合の修理費も低くおさえられるので、万が一の場合でも安心です。
端末の追加や削減がしやすい
分散システムは拡張性が高く、端末の追加や削減をしやすくなっています。
問題があった場合でも予備の端末を接続できるので、トラブルに強いシステムを構築しやすい点も特徴として挙げられます。問題が生じた際に柔軟な対応がしやすい点もメリットだといえるでしょう。
分散システムの問題点
分散システムが抱える問題点は以下の2つです。
システム管理が複雑になる
分散システムは多数の端末を使って処理を実行するので、端末ごとの管理が必要になり、管理が複雑になりやすい傾向があります。
外部攻撃に備えたアップデートや定期点検は端末ごとに行わなければならないので、徹底した管理体制の構築が必要です。また、障害発生時は問題の端末を特定しなければならないので時間がかかります。
外部からの攻撃への対策が難しくなる
分散システムでは使用している端末全てに外部からの攻撃の対策をする必要があります。
ネットワークにも外部からの攻撃に対応するための機器を設置する必要があり、端末単体について対策をする場合に比べると手間とコストがかかります。
外部からの攻撃に備えるために手間と費用を使わなければならない点が、問題点だといえるでしょう。
分散システムを使ったサービスの例
分散システムを使ったサービスはいくつも存在しますが、以下では一般的な例を解説します。
クライアントサーバー
ユーザーとクライアントサーバーがネットワークを通じて通信し、動作するシステムです。
ユーザーがサーバーに処理をリクエストし、サーバーからリクエストに応じた処理が返ってくるもので、代表的なものがWebブラウザとWebサーバーです。
最初は1台の端末に処理と負荷を担わせて動作させていましたが、現在ではコンピュータの低価格化によって分散システムでの運用が主流になっています。
ピアツーピア
コンピュータ同士が対等の立場で情報をやり取りするシステムです。
サーバーを通さずにいくつもの端末同士で直接データを交換でき、代表的な例として、SNSアプリの「LINE」や、仮想通貨の「ビットコイン」のシステムなどがあります。
Microsoftに買収される前のSkypeも、この通信方式を使って運用していました。
分散システムに必要なセキュリティ対策
分散システムでは個々の端末とネットワークに外部からの攻撃への備えをする必要があります。
回線に対する外部からの攻撃への対策として、暗号化通信技術のSSLの導入はもちろん、通信相手が本人かを確認するための認証機能も備えておきましょう。また、認証機能には暗号化技術と併せた暗号鍵を採用すると良いでしょう。
また、外部に分散システムを使用していることや端末ごとの仕様、スペックなどを明かさないようにすることも安全性を高めるために必要です。
過剰な対策をするとユーザーの利便性が低下するので、バランスを重視した対応をしましょう。システム開発においてどのようなセキュリティ対策が必要なのか、より詳しく知りたい方にはこちらの記事もおすすめです。
分散システムの重要性は今後も高まっていく
分散システムはコストをおさえたうえで障害に強いネットワークを形成できるという強みがあり、いくつものサービスで活用されています。
運用管理の複雑さや各種対策や点検に時間と費用がかかるという問題もあるので、これとどう向き合い、適切に扱うかが今後の課題といえるでしょう。
分散システムの導入や大規模プロジェクトの実行を考えているのであれば、専門家へのご相談をおすすめします。
また、システム開発の外注先選びでお困りの方は、弊社までお気軽にご相談ください。 当社がこれまで支援してきた開発事例の共有、企画・コンサルティング、要件定義や実際の開発支援まで包括的にサポートさせていただくことが可能です。
システム開発を失敗しないために、弊社が相見積もりの取得までをサポートさせていただくことも可能です。むやみな営業電話などは決して行いませんので、まずは無料のご相談をお待ちしております。