デュアルシステムとは
デュアルシステム(Dual System)とは、信頼性を高めるためのシステム構成方式の一つで、2組の全く同じシステムを「同時に稼働」させ、常に同じ処理を行わせる仕組みのことです。2つのシステムは常に同じデータを処理し、それぞれの処理結果が一致しているかを照合(クロスチェック)しながら動作します。もし一方のシステムにエラーや故障が発生した場合は、故障した側を自動的に切り離し、正常なもう一方のシステムだけで処理を継続します。処理を中断することなく、瞬時に異常を検知して切り替えられるため、極めて高い信頼性が求められる金融機関の取引システムや鉄道の運行管理システムなどで採用されています。
具体例
身近な例で例えると、車の運転で「メインドライバー」と「助手席のサブドライバー」が全く同じハンドルとペダルを持ち、常に二人で同じ操作をしている状態です。どちらか一人が意識を失ったり誤った操作をしたりしても、もう一人が正しい操作を続けているため、車は事故を起こさずに走り続けることができます。システム処理のイメージは以下の通りです。
[入力データ] ---+---> [システムA] ---+
| |---> [結果の照合(一致)] ---> [出力]
+---> [システムB] ---+
もう少し詳しく
デュアルシステム(Dual System)は、社会インフラや金融システムなど、システムが1秒でも停止したり、計算結果に誤りが発生したりすることが許されない「超高信頼性」が求められる環境で採用されるシステム構成方式です。デュアル(Dual)には「二重の」や「2つの」という意味があり、全く同じ構成のシステムを2セット用意して、それらを完全に並行して稼働させます。
デュアルシステムの最大の特徴は、「クロスチェック(照合)」を行う点にあります。入力されたデータは、2つのシステム(システムAとシステムB)の両方に同時に送られます。それぞれのシステムは独立して全く同じ計算処理を行い、出力結果を出します。そして、最終的な処理結果を外部に送る前に、システムAの結果とシステムBの結果が完全に一致しているかを専用の装置で照合します。もし結果が一致していれば正しい処理が行われたと判断して結果を出力しますが、万が一結果が異なっていた場合は、どちらかのシステムに異常が発生したと判断し、エラーを検知することができます。
どちらかのシステムが故障して停止した場合、デュアルシステムは直ちに故障した側をネットワークから切り離し、正常に動いているもう一方のシステム単独で処理を継続します(縮退運転と呼びます)。このように、システムの停止時間を限りなくゼロに近づけることができるため、航空管制システムや銀行のオンライン取引システムなど、人命や莫大な財産に関わるミッションクリティカルな分野で活用されています。ただし、システムを丸ごと2セット用意し、さらに照合の仕組みも構築する必要があるため、導入および運用にかかるコストは非常に高額になります。
試験でのポイント
基本情報技術者試験や応用情報技術者試験のシステムアーキテクチャ分野において、デュアルシステムは非常によく出題されます。最も重要なのは、名前が似ている「デュプレックスシステム」との違いを明確に区別できるようにすることです。
試験問題ではキーワードに注目してください。「2つのシステムが同時に同じ処理を行う」「処理結果を照合(クロスチェック)する」という記述があれば、それは「デュアルシステム」です。一方、「片方のシステムがメイン(主系)として処理を行い、もう片方は予備(従系)として待機しておく」という記述であれば、それは「デュプレックスシステム」です。デュアルシステムは「2人で同じ計算をして答え合わせをする方式」、デュプレックスシステムは「1人が計算をして、もう1人は倒れた時のために準備をしておく方式」とイメージすると覚えやすいでしょう。コストと信頼性のトレードオフに関する問題としても出題されるため、それぞれの特徴を正確に把握しておく必要があります。
関連する用語
デュアルシステムと比較して出題されることが多い、主系と予備系に分かれる「デュプレックスシステム」や、一部の部品が故障してもシステム全体としては停止せずに動き続ける設計思想である「フォールトトレランス」、複数のコンピュータを連携させて信頼性を高める「クラスタリング」などが関連用語として挙げられます。