ブロックチェーン社会実装のための基礎知識概論〜既存システムの仕組みと制約(サーバ型システムの単一障害点)〜

# 第１章　既存システムの仕組みと制約

本章ではまず最初に、従来のサーバ型システムやデータベースがどのように構成されているのかを解説し、それらが抱える制約を明らかにします。単一障害点や冗長性、データの所有権問題など、ブロックチェーン技術が克服しようとする課題を理解することから始めます。

### 1-1.データと所有権

https://qiita.com/kicnft/items/6badc48ca775d9d2e8c3

### 1-2.データベースのバックアップ
https://qiita.com/kicnft/items/5b3cc592239e53710f35

## 1-3.サーバ型システムの単一障害点

「サーバ型システムの単一障害点」というテーマは、現代のITシステム設計における根本的な問題を指摘するものです。サーバ型システムは、ネットワークの中心に位置するサーバがクライアントにサービスを提供する形態であり、データの処理や管理が中央集権的に行われます。このような構造には効率性や管理のしやすさなど多くの利点がありますが、一方で「単一障害点（Single Point of Failure, SPOF）」という深刻なリスクもはらんでいます。ここでは、単一障害点の具体的な問題点と、それに対処するための方法について論じます。

### 単一障害点の定義と影響

単一障害点とは、システムの特定の部分が障害を起こすと、システム全体が停止したり、正常に機能しなくなる箇所を指します。サーバ型システムでは、通常、中央に配置されたサーバがその役割を担っています。サーバが停止すれば、システム全体が停止するか、重大な性能低下が発生し、ユーザーがサービスを利用できなくなるという結果につながります。

たとえば、電子商取引のウェブサイトでは、サーバが障害を起こした瞬間に全てのユーザーが商品を検索したり購入したりすることができなくなり、ビジネスに重大な損失をもたらします。また、銀行のオンラインバンキングシステムでは、サーバの停止によって顧客が口座へのアクセスができなくなり、経済的損失や信用の低下が発生する可能性もあります。

このように、単一障害点が存在することによって、システム全体の可用性（Availability）や信頼性（Reliability）に大きな影響を与えます。

### サーバ型システムの単一障害点が発生する理由

サーバ型システムにおいて単一障害点が発生する理由は、システムの中心的な役割をサーバが果たしているからです。この中央集権的な構造では、すべてのデータの処理やリクエストがサーバに集まるため、そのサーバがダウンした場合、他に代替手段がない状態となります。単一障害点が発生する具体的な要因は以下の通りです。

#### 1. ハードウェアの障害
サーバのハードウェアが故障することは、最も直接的な単一障害点の原因です。ハードディスクや電源ユニット、ネットワークインターフェースカードなどの物理的なコンポーネントが故障すると、サーバ全体が停止する可能性があります。これにより、クライアントはサーバに接続できなくなり、サービスの中断が発生します。

#### 2. ソフトウェアの障害
サーバ上で稼働しているソフトウェアにバグやセキュリティホールが存在する場合、システム全体に影響を及ぼす可能性があります。特に、サーバのオペレーティングシステムやミドルウェアがクラッシュしたり、外部からの攻撃を受けたりすることで、サーバが応答しなくなるリスクがあります。また、システムが複雑になるほど、依存関係の多いソフトウェア群が障害を引き起こす可能性が高まります。

#### 3. ネットワークの障害
サーバが接続されているネットワークに問題が発生すると、サーバ自体は正常に動作していてもクライアントがアクセスできなくなることがあります。ネットワークインフラの障害や、帯域の逼迫、DNSサーバの問題などが発生すると、サーバの停止に等しい影響を及ぼします。

#### 4. メンテナンスやアップデート
サーバ型システムでは、定期的なメンテナンスやソフトウェアのアップデートが必要です。しかし、メンテナンス中にサーバが一時的に停止する場合、その間にシステム全体が利用できなくなることがあります。これもまた、一時的な単一障害点として機能します。

### 単一障害点を回避する方法

単一障害点が存在することはシステムの信頼性にとって重大なリスクであるため、それを回避するための設計が必要です。以下のような技術やアーキテクチャを活用することで、単一障害点を最小化し、システムの可用性を向上させることが可能です。

#### 1. 冗長化
最も一般的な対策は冗長化です。サーバを複数台用意し、負荷分散（ロードバランシング）を行うことで、一台のサーバが故障しても他のサーバが代替してサービスを提供できるようにします。例えば、複数のサーバに同じデータベースをレプリケーションし、いずれかのサーバがダウンした際に自動で別のサーバに切り替えるフェイルオーバー機能を持つことで、単一障害点を回避できます。

クラウドコンピューティングの普及により、物理的なサーバの冗長化だけでなく、仮想化技術や分散システムを活用した冗長構成も容易になっています。これにより、物理サーバの故障だけでなく、ソフトウェアやネットワークの障害にも柔軟に対応できるようになります。

#### 2. 分散型システムの導入
分散型システムは、サーバ型システムと異なり、単一のサーバに依存しない設計です。分散データベースや分散ファイルシステムなどを活用することで、データや処理を複数のノードに分散させ、いずれかのノードが障害を起こしてもシステム全体には影響を与えません。

たとえば、ブロックチェーン技術は分散型システムの一つの例であり、中央管理者が存在せず、全てのデータが分散ネットワーク上で保持されます。このようなシステムは、単一障害点を持たないため、非常に高い耐障害性を持っています。

#### 3. マイクロサービスアーキテクチャ
従来のサーバ型システムは、モノリシックな設計が主流でしたが、近年ではマイクロサービスアーキテクチャが注目されています。マイクロサービスは、システムを小さな独立したサービスに分割し、それぞれが独自のサーバ上で動作するというアプローチです。これにより、一部のサービスが停止しても他のサービスには影響を与えないため、システム全体としては単一障害点を避けることができます。

#### 4. サーバレスアーキテクチャ
サーバレスアーキテクチャは、サーバの管理をクラウドプロバイダに委ねることで、ユーザーがサーバの障害について心配する必要がなくなるアプローチです。クラウドプロバイダは、自動的に冗長化されたインフラを提供し、スケーラブルなサービスを維持します。これにより、ユーザーはアプリケーションロジックに集中でき、単一障害点のリスクを軽減することができます。

### 結論

サーバ型システムには、その中央集権的な構造に起因する単一障害点の問題が存在します。このようなシステムは、サーバの障害がシステム全体に深刻な影響を与えるリスクを抱えており、企業や組織にとって信頼性の高いサービス提供を妨げる要因となり得ます。

しかし、冗長化、分散型システム、マイクロサービスアーキテクチャ、サーバレスアーキテクチャといった技術を適切に活用することで、単一障害点を回避し、システムの可用性や信頼性を向上させることが可能です。現代の

システム設計においては、単一障害点を避けることが重要であり、これに対応するための技術的な選択肢を柔軟に組み合わせることが求められています。


---
### バックナンバー

#### はじめに
https://qiita.com/kicnft/items/6036c9455a12e99ab5da

#### 第１章　既存システムの仕組みと制約

https://qiita.com/kicnft/items/6badc48ca775d9d2e8c3

https://qiita.com/kicnft/items/5b3cc592239e53710f35