

工学およびシステム理論において、冗長性とは、システムの信頼性を高めることを目的として、システムの重要な構成要素または機能を意図的に複製することであり、通常はバックアップまたはフェイルセーフの形で、あるいはGNSS受信機やマルチスレッドコンピュータ処理の場合のように、実際のシステム性能を向上させることを目的としている。
航空機のフライバイワイヤや油圧システムなど、安全性が極めて重要な多くのシステムでは、制御システムの一部が三重化されている場合があり、[ 1 ]これは正式には三重モジュール冗長(TMR) と呼ばれます。 1 つのコンポーネントのエラーは、他の 2 つのコンポーネントによって打ち消される可能性があります。 三重冗長システムでは、システムは 3 つのサブコンポーネントを持ち、システムが故障する前に 3 つすべてが故障する必要があります。 それぞれが故障することはまれであり、サブコンポーネントは共通の故障モードを排除するように設計されているため (その後、独立した故障としてモデル化できます)、3 つすべてが故障する確率は非常に小さいと計算されます。 これは、人的ミスなどの他のリスク要因によってしばしば打ち消されます。落雷による電気サージは、コンポーネントが独立した電源バスから給電され、相互接続部に直接の電気経路がない限り (投票のために何らかの手段による通信が必要)、完全に分離することが難しい故障モードの例です。冗長性は、「多数決システム」[ 2 ]または「投票ロジック」[ 3 ]という用語でも知られています。

冗長性は、信頼性を高めるどころか、かえって信頼性を低下させる場合がある。冗長性によって、さまざまな問題が発生しやすい複雑なシステムが構築され、人間の職務怠慢につながる可能性があり、生産要求の増加につながり、システムに過度の負荷をかけることで安全性が低下する可能性がある。[ 4 ]
冗長性は、コンピュータサイエンスにおいて実践される堅牢性の一形態である。
データセンター業界では、自然災害や政情不安からデータを守るために、地理的な冗長性が重要になってきている(下記参照)。
コンピュータサイエンスでは、冗長性には主に4つの形態があります。[ 5 ]
ハードウェアに適用された、ソフトウェア冗長性の改良版としては、以下のようなものがある。
構造物は通常、冗長な部品を備えて設計されており、部品の一つが破損しても構造物全体が崩壊しないようになっています。冗長性のない構造物は「破壊臨界構造」と呼ばれ、一つの部品が破損するだけで構造物全体が崩壊する可能性があります。冗長性の欠如が原因で崩壊した橋梁には、シルバーブリッジやスカジット川にかかる州間高速道路5号線の橋梁などがあります。
並列システムと複合システムは、異なるレベルの冗長性を示します。これらのモデルは、信頼性および安全性工学の研究対象となっています。[ 6 ]
従来型の冗長化は同一のものを複数使用するのに対し、異種冗長化は異なるものを使用します。これは、異なるものには同一の欠陥が含まれる可能性が低いという考えに基づいています。2つのものの処理時間が異なる場合、投票方式はより複雑になる可能性があります。異種冗長化は、同一のソフトウェアには同一の欠陥が含まれることが多いため、ソフトウェアでよく使用されます。
以下のそれぞれについて少なくとも2種類の異なるタイプを使用することで、失敗の可能性を低減できます。
地理的冗長性は、バックアップ機器を地理的に分離することで、冗長機器の脆弱性を解消します。地理的冗長性により、停電、洪水、空調設備の故障、落雷、竜巻、建物火災、山火事、銃乱射事件などによってシステム全体、あるいはその大部分が機能停止に陥る可能性を低減します。
地理的な冗長拠点は
以下の方法を用いることで、火災による被害のリスクを軽減できます。
地理的冗長性は、Amazon Web Services (AWS)、Google Cloud Platform (GCP)、Microsoft Azure、Netflix、Dropbox、Salesforce、LinkedIn、PayPal、Twitter、Facebook、Apple iCloud、Cisco Meraki、その他多くの企業で、地理的冗長性、高可用性、耐障害性を提供し、クラウドサービスの可用性と信頼性を確保するために使用されています。[ 15 ]
別の例として、強風や水害による被害のリスクを最小限に抑えるために、建物は海岸から少なくとも 2 マイル (3.2 km) 離れた場所に、海抜 5 フィート (1.5 m) 以上の高さに建設することができます。さらに保護を強化するために、洪水氾濫原から少なくとも 100 フィート (30 m) 離れた場所に建設することもできます。[ 16 ] [ 17 ]
冗長性の機能は、受動的冗長性と能動的冗長性の2つである。どちらの機能も、余剰容量を用いることで、人間の介入なしに性能低下が仕様限界を超えることを防ぐ。
受動的冗長性とは、余剰容量を利用して部品の故障による影響を軽減する仕組みです。受動的冗長性の一般的な例として、橋梁に使用されるケーブルや支柱の強度を高めることが挙げられます。この強度によって、橋梁が崩壊することなく、一部の構造部品が破損することが可能になります。設計において用いられるこの強度を安全マージンと呼びます。
目と耳は、受動的冗長性の実例を示している。片目の視力低下は失明には至らないが、奥行き知覚は損なわれる。片耳の聴力低下は難聴には至らないが、方向感覚は失われる。受動的冗長性は、限られた数の故障が発生した場合に、性能低下を引き起こすことが一般的である。
アクティブ冗長性は、個々のデバイスのパフォーマンスを監視することでパフォーマンスの低下を解消し、この監視は投票ロジックに利用されます。投票ロジックは、コンポーネントを自動的に再構成するスイッチングと連動しています。エラー検出訂正と全地球測位システム(GPS)は、アクティブ冗長性の2つの例です。
電力配電は、能動冗長性の好例です。複数の送電線が各発電施設と顧客を結んでいます。各送電線には過負荷を検知する監視装置と遮断器が設置されています。これらの送電線の組み合わせにより、余剰容量が確保されます。監視装置が過負荷を検知すると、遮断器が送電線を遮断します。電力は残りの送電線に再分配されます。 トロント空港には、4本の冗長な送電線があります。4本の送電線はそれぞれ空港全体に十分な電力を供給します。スポットネットワーク変電所は、逆電流リレーを使用して故障した送電線の遮断器を開きますが、空港への電力供給は継続します。
電力システムは、電力スケジューリングを用いてアクティブ冗長性を再構成します。コンピュータシステムは、他の発電設備が突然停止した場合に、各発電設備の発電量を調整します。これにより、地震などの大規模災害発生時の停電を防ぐことができます。
『ノーマル・アクシデンツ』の著者であるチャールズ・ペローは、冗長性が裏目に出て信頼性を高めるどころか低下させる場合もあると述べている。これは次の3つの方法で起こり得る。第一に、冗長な安全装置によってシステムが複雑化し、エラーや事故が発生しやすくなる。第二に、冗長性によって労働者の責任回避につながる可能性がある。第三に、冗長性によって生産圧力が高まり、より高速で動作するが安全性の低いシステムになる可能性がある。[ 4 ]
Voting logic uses performance monitoring to determine how to reconfigure individual components so that operation continues without violating specification limitations of the overall system. Voting logic often involves computers, but systems composed of items other than computers may be reconfigured using voting logic. Circuit breakers are an example of a form of non-computer voting logic.
The simplest voting logic in computing systems involves two components: primary and alternate. They both run similar software, but the output from the alternate remains inactive during normal operation. The primary monitors itself and periodically sends an activity message to the alternate as long as everything is OK. All outputs from the primary stop, including the activity message, when the primary detects a fault. The alternate activates its output and takes over from the primary after a brief delay when the activity message ceases. Errors in voting logic can cause both outputs to be active or inactive at the same time, or cause outputs to flutter on and off.
A more reliable form of voting logic involves an odd number of three devices or more. All perform identical functions and the outputs are compared by the voting logic. The voting logic establishes a majority when there is a disagreement, and the majority will act to deactivate the output from other device(s) that disagree. A single fault will not interrupt normal operation. This technique is used with avionics systems, such as those responsible for operation of the Space Shuttle.
Each duplicate component added to the system decreases the probability of system failure according to the formula:-
where:
This formula assumes independence of failure events. That means that the probability of a component B failing given that a component A has already failed is the same as that of B failing when A has not failed. There are situations where this is unreasonable, such as using two power supplies connected to the same socket in such a way that if one power supply failed, the other would too.
It also assumes that only one component is needed to keep the system running.
You can achieve higher availability through redundancy. Let's say you have three redundant components: A, B and C. You can use following formula to calculate availability of the overall system:
Availability of redundant components = 1 - (1 - availability of component A) X (1 - availability of component B) X (1 - availability of component C) [18][19]
その結果として、それぞれがXの可用性を持つN個の並列コンポーネントがある場合、次のようになります。
並列コンポーネントの利用可能性 = 1 - (1 - X)^N

冗長コンポーネントを使用すると、システム全体の可用性を飛躍的に向上させることができます。[ 19 ] 例えば、各ホストの可用性が50%しかない場合、10台のホストを並列で使用することで、99.9023%の可用性を達成できます。
冗長性が必ずしも可用性の向上につながるわけではないことに注意してください。実際、冗長性は複雑さを増大させ、結果として可用性を低下させます。Marc Brooker によると、冗長性を活用するには、次の点を確認してください。[ 20 ]