Facebook x

ジャンル

システムにおける「冗長性」とは?意味・目的と冗長化を実施する際の注意点
開発技法・工程
開発技法・工程 2024.03.06
x hatenabookmark
0

システムにおける「冗長性」とは?意味・目的と冗長化を実施する際の注意点

監修: 江添 智之

バルテス・ホールディングス株式会社 R&C部 副部長

システムにおける「冗長性」は、信頼性や可用性を左右する重要な性質です。

しかし、冗長性という言葉にはネガティブな意味合いもあります。冗長性がどのようにシステムに関わっているのか、疑問に感じている方も多いのではないでしょうか。

今回はシステムにおける冗長性とは何か、基本から分かりやすく解説します。冗長性の種類や技術、高めるメリット・デメリットも紹介するため、ぜひ参考にしてみてください。

もくじ
  1. システムにおける冗長性とは
    1. 冗長性とは?
    2. 冗長性を持たせる目的
    3. 冗長化とバックアップとの違い
  2. システムの冗長性を高めるメリット・デメリット
    1. メリット:システム障害のリスク・負荷を軽減できる
    2. デメリット:コストやセキュリティ対策の負担がかかる
  3. 冗長性を持たせるシステム構成の主な5つの種類
    1. ホットスタンバイ
    2. コールドスタンバイ
    3. ウォームスタンバイ
    4. アクティブ・アクティブ
    5. マスター・スレーブ
  4. 冗長性を高めるための主な技術
    1. RAID
    2. DRBD
  5. 冗長化を実施する際の注意点
  6. まとめ

1.システムにおける冗長性とは

システムにおける「冗長性」の意味や目的、バックアップとの違いについて解説します。

1-1 冗長性とは?

冗長性には、「重複している」といった意味があります。つまり、システムにおける冗長性とは、システムの構成要素が重複的に存在する性質のことです。

本来の「冗長性」は、「無駄がある」といったネガティブな意味合いで使われることが多いでしょう。しかし、システムにおいては「備えがある」といったポジティブな意味合いで使われることが一般的です。

たとえば、システムの稼働に必要なサーバーを2台用意し、両者の機能やデータを同等に揃えます。そうすれば、仮に1台のサーバーが故障しても、もう1台のサーバーで稼働を続けることが可能です。

このように、重複要素により備えのあるシステムは「冗長性がある」といえます。また、冗長性を持たせることを「冗長化」と呼びます。

上記はサーバーの例ですが、ストレージ(データ保存領域)の冗長化、ネットワークなどを含むシステム全体の冗長化など、ケースはさまざまです。

1-2 冗長性を持たせる目的

冗長性を持たせる目的は、主にシステムの信頼性や可用性を高めることです。信頼性や可用性には、それぞれ次のような意味があります。

  • 信頼性:システムがダウンしにくい性質
  • 可用性:システムがダウンせずに稼働し続けられる性質

先ほどの例では、サーバーの二重化(重複要素が2つの冗長化)によってシステムの障害が発生しにくくなり、継続稼働が可能となりました。これは、信頼性・可用性が高まったといえます。つまり冗長化は、安心して使い続けられるシステムの実現に有効です。

1-3 冗長化とバックアップとの違い

冗長化と「バックアップ」の意味を混同する方が少なくありません。しかし、両者には明確な違いがあります。

バックアップとは、データ損失時に備えてデータを複製することです。あくまで「データ損失時の復旧」が目的であり、冗長化のように信頼性・可用性の向上は目的としません。

このように、冗長化とバックアップはそもそもの目的が異なります。しかし、システムの安定的な運用のためには、いずれも重要となることを知っておきましょう

2.システムの冗長性を高めるメリット・デメリット

システムの冗長性を高めるメリットは大きいものの、デメリットもあります。システムの冗長性を高めるメリット・デメリットを、順番に解説します。

2-1 メリット:システム障害のリスク・負荷を軽減できる

システムの冗長性を高めるメリットは、主に次の2つです。

障害の発生リスクを低減できる

正しく冗長化すれば、システムの一部で障害が発生しても、全体として稼働の継続が可能です。

システム全体の障害は、多大な工数・コストを要するだけでなく、多くの利用者にも迷惑をかけてしまいます。こうしたシステム障害のリスクを低減できることは大きなメリットです。

システムの負荷を軽減できる

冗長化の方法によっては、複数台のサーバーに処理を分散させることも可能です。

1台のサーバーに役割を集中させると、大量のリクエスト送信といったサイバー攻撃に弱くなります。

冗長化で負荷を分散させれば、サーバーやシステム全体への負荷を軽減できるでしょう。

2-2 デメリット:コストやセキュリティ対策の負担がかかる

システムの冗長性を高めるデメリットは、主に次の2つです。

構築や運用にコストがかかる

冗長化の実現方法によっては、同じスペックの機器を複数台用意しなければなりません。また、冗長化の構成によっては各機器を常に稼働させることになります。

そのため導入時の構築や、導入後の運用には多くのコストがかかるでしょう。

セキュリティ対策の負担が増大する

機器の台数が増えるということは、サイバー攻撃者にとって標的が増える側面もあります。運用・保守の担当者は、複数台の機器を正しくケアしなければなりません。

仮にOSのアップデートを怠り、1つの機器に脆弱性が生じれば、そこからシステムに侵入されるリスクもあります。つまり、セキュリティ対策にはより慎重さが求められます。

3.冗長性を持たせるシステム構成の主な5つの種類

冗長性を持たせるためのシステム構成には、さまざまな種類があります。ここで紹介する、5つのシステム構成を知っておきましょう。なお、ここでは分かりやすくするために、二重化構成(重複要素が2つの構成)の前提でお伝えします。

3-1 ホットスタンバイ

「ホットスタンバイ」は、本番機器・予備機器の2台を常に稼働させておく構成です。予備機器もアプリケーションを稼働させておき、常に本番機器と同期させます。

仮に本番機器が故障した場合でも、迅速に予備機器へ移行できるため障害に強いです。その反面、予備機器も常時稼働させる必要があるため、運用コストがかかりやすい面もあります。

3-2 コールドスタンバイ

「コールドスタンバイ」は、本番機器だけ稼働させ、予備機器は電源OFF状態で待機させる構成です。

予備機器を常時稼働させない分、ホットスタンバイよりも運用コストはかかりにくいといえます。

ただし、本番機器が故障してから予備機器の起動・同期を行う必要があるため、障害からの復旧には時間がかかります。

3-3 ウォームスタンバイ

「ウォームスタンバイ」は、ホットスタンバイとコールドスタンバイの間を取った構成です。

予備機器も電源ONはしておきますが、本番機器と同じアプリケーションは起動させません。

ホットスタンバイと比べて運用コストを抑えやすく、コールドスタンバイと比べて障害からの復旧が迅速に行えます。

3-4 アクティブ・アクティブ

「アクティブ・アクティブ」は、2台の機器をともに本番機器として稼働させる構成です。それぞれが稼働時の処理を分担するため、負荷を分散できます。

ただし、リクエストを振り分けるための仕組み作りや、2台の機器の常時監視が必要となるため、構築や運用のコストは特にかかりやすいでしょう。

3-5 マスター・スレーブ

「マスター・スレーブ」は、2台の機器にマスター(中枢機器)・スレーブ(従属機器)と異なる役割を与え、稼働させる構成です。

マスターが中心的な制御・管理を担い、スレーブが補助的なタスクを担います。マスターが故障した場合、スレーブがマスターの代理となります。

各機器が自らの役割だけに専念できますが、機器間の連携や故障時の切り替えなどのための仕組み作りが必要です。

4.冗長性を高めるための主な技術

システムの冗長化を図るにあたって、採用される主な技術を知っておきましょう。冗長性を高めるための技術としては、次の2つが代表的です。

4-1 RAID

「RAID(Redundant Arrays of Inexpensive Disks)」は、複数のハードディスク(データ保存用の機器)を組み合わせ、1台のサーバーで扱える技術です。

ホットスタンバイなどのシステム構成を、1台のサーバーだけで実現できます。

RAIDにはさまざまなモードがあり、それぞれ高速化・大容量化・冗長化などメリットが変わります。冗長化を図りたい場合は、「RAID1」「RAID5」「RAID10」などを採用しましょう。

4-2 DRBD

「DRBD(Distributed Replicated Block Device)」は、ストレージ(データ保存領域)の冗長化を実現するためのソフトウェアです。

ネットワークを介して複数サーバーのストレージを同期させるため、1台のサーバーでデータが消失しても復旧できます。同じデータを複数台のハードディスクに保存する「RAID1」の実現に採用されます。

5.冗長化を実施する際の注意点

冗長化を実施する際は、予算や人員に合った構成や技術を選定しましょう。

なぜなら、冗長化にはコスト面やセキュリティ面でのデメリットもあるからです。冗長化が適切に行えないと費用対効果にはつながらず、リスクだけが増大しかねません。

また、冗長化にはさまざまな構成や技術があり、メリット・デメリットも変わってきます。冗長化を実施する際には、予算や人員に合った構成や技術を選定し、リスクも加味して構築することが大切です。

まとめ

システムにおける冗長性とは、システムの構成要素が重複的に存在する性質のことです。

冗長性を持たせることで、システムの信頼性や可用性を向上でき、リスク低減や負荷軽減が期待できます。一方で、コスト面やセキュリティ面のデメリットもあります。

システムを新たに開発する場合は、要件定義の段階で冗長化について検討する必要があります。

メリット・デメリットを加味してシステムの冗長化を効果的に取り入れ、品質の担保に努めましょう。

開発技法・工程
x hatenabookmark
0

監修: 江添 智之

バルテス・ホールディングス株式会社 R&C部 副部長

WEB系、エンタープライズ系、医療系など様々な開発業務にプログラマ、システムエンジニア、プロジェクトリーダーとして携わった後、バルテスにてテストエンジニア・コンサルタント業務に従事。現職では主にテスト業務に関する研究開発および人材育成を担当。Scrum Alliance認定スクラムマスター、ディープラーニング検定(G資格)、ネットワークスペシャリスト、データベーススペシャリスト、JSTQB Advanced Level(テストマネージャ、テストアナリスト)など、ソフトウェアの開発およびテストに関する資格を多数取得。JaSST Kansai 実行委員。現在の関心は機械学習のテスト分野への応用と効率的なテスト自動化。