ボイティングとは

ボイティングは、複数のシステムやコンポーネントが算出した結果を多数決で比較し、最も多くの支持を得た結果を採用することで、システムの信頼性を向上させる手法のことです。

ボイティングの概要と目的

ボイティング(Voting)は、フォールトトレラントシステム(耐故障性システム)において、特定のコンポーネントの故障や誤動作がシステム全体に影響を及ぼすのを防ぐために用いられます。この手法では、同じタスクを複数の独立したモジュール(冗長なコンポーネント)に実行させ、それぞれの出力結果を比較します。

ボイティングの主な目的は、以下のような状況でシステムの信頼性を確保することにあります。

  • 単一障害点(Single Point of Failure)の回避
    • もし1つのコンポーネントが故障しても、他の正常なコンポーネントの結果が多数を占めるため、システムは正しい動作を継続できます。
  • 偶発的なエラーの排除
    • 一時的なノイズやソフトウェアの軽微なバグによって生じた誤った結果を、多数決によって排除できます。

これは、宇宙船や医療機器、航空管制システムなど、高い信頼性が求められる分野で特に重要な技術です。

ボイティングの仕組みと種類

ボイティングの仕組みは、冗長構成の設計によっていくつかの種類に分けられます。

1. 2重化(デュアルシステム)

  • 仕組み
    • 同じタスクを2つのモジュールで実行させ、その結果を比較します。
    • 2つの結果が一致すれば正常と判断し、不一致の場合は故障と判断して、システムの停止や再起動を行います。
  • 特徴
    • ボイティングというよりは、相互監視に近い手法です。どちらの結果が正しいか判断できないため、エラーを検知することに主眼が置かれます。

2. 3重化(トリプルモジュール冗長化:TMR)

  • 仕組み
    • 同じタスクを3つの独立したモジュールで実行させ、3つの結果を多数決で比較します。
    • 1つのモジュールが誤った結果を出力しても、他の2つのモジュールが一致すれば、その結果を正しいものとして採用します。
  • 特徴
    • 最も典型的なボイティングの例です。1つの故障に耐えることができ、正常な動作を継続させることができます。

3. 多重化(N重化)

  • 仕組み
    • 3つ以上のモジュール(N個)で同じタスクを実行し、多数決で結果を決定します。
    • k個の故障に耐えるには、$(2k+1)$重化が必要です。
  • 特徴
    • システムの信頼性をさらに高めることができますが、コンポーネントの数が増えるためコストも増大します。

ボイティングでは、多数決を判断する「ボーター(Voter)」と呼ばれる専用のコンポーネントが不可欠です。ボーター自体も故障する可能性があるため、その信頼性も考慮して設計されます。

ボイティングの利点と課題

利点

  • 高い耐故障性
    • 一部のコンポーネントが故障しても、システム全体が停止することなく動作を継続できます。
  • 可用性の向上
    • ダウンタイム(システムが利用できなくなる時間)を最小限に抑え、サービスの可用性を高めることができます。

課題

  • コストの増大
    • 同じコンポーネントを複数用意する必要があるため、ハードウェアやソフトウェアのコスト、そして電力消費が増加します。
  • 共通モード故障
    • すべてのコンポーネントに共通する設計上の欠陥(バグ)があった場合、すべてのモジュールが同じ誤った結果を出力してしまう可能性があります。この場合、ボイティングは機能しません。このリスクを避けるため、異なるメーカーのコンポーネントを採用するといった対策が取られることがあります。
  • 遅延の発生
    • 複数の結果を待ってから多数決を行うため、処理にわずかな遅延が発生することがあります。

ボイティングは、高い信頼性が求められるシステム設計において、故障を前提とした設計思想(Fail-safe Design)を実現するための重要な手段です。

関連用語

フォールトトレラント | 今更聞けないIT用語集
SPOF(単一障害点) | 今更聞けないIT用語集
クラウドソリューション

お問い合わせ

システム開発・アプリ開発に関するご相談がございましたら、APPSWINGBYまでお気軽にご連絡ください。

APPSWINGBYの

ソリューション

APPSWINGBYのセキュリティサービスについて、詳しくは以下のメニューからお進みください。

システム開発

既存事業のDXによる新規開発、既存業務システムの引継ぎ・機能追加、表計算ソフトによる管理からの卒業等々、様々なWebシステムの開発を行っています。

iOS/Androidアプリ開発

既存事業のDXによるアプリの新規開発から既存アプリの改修・機能追加まで様々なアプリ開発における様々な課題・問題を解決しています。


リファクタリング

他のベンダーが開発したウェブサービスやアプリの不具合改修やソースコードの最適化、また、クラウド移行によってランニングコストが大幅にあがってしまったシステムのリアーキテクチャなどの行っています。