LINE今さら聞けない!冗長化とバックアップの違いを解説フリーランスの働き方サイバー攻撃などが増加したことによって、システムの可用性を高めることが重要になっています。適切な対策を取っておかなければ、攻撃によってシステムが停止してしまい、大きな問題になりかねません。社外に公開するシステムについては、適切な対応が求められます。対応の方法はいくつも考えられますが、それらの中でも特に多いものが「冗長化」と「バックアップ」です。どちらも重要な考え方であるため、それぞれを理解して使い分けしなければなりません。今回は、それぞれの基本から違い、使い分けなどを解説します。冗長化とバックアップの4つの違い冗長化やバックアップを取り入れる際のポイントまとめシステムの冗長化とバックアップとは最初に、システムの冗長化とバックアップとは、それぞれどのような活動であるのか理解を深めましょう。冗長化とは冗長化とは、システムの信頼性や多様性を高めるための手法です。IT業界で利用されることが多く、コンポーネントの一部やサービスが停止しても、システム全体が停止してしまうことを避けることを指します。その対象はアプリケーションやネットワーク、データベースなど幅広いものです。特定のコンポーネントだけを冗長化することもあれば、全体を冗長化することもあると考えましょう。一般的には、システムの重要性やコストの制約などを踏まえて、どの部分を冗長化するか決定されます。冗長化の例として、ハードウェアの場合は同性能のハードウェアを複数用意しておきます。トラブルなどで停止した際は、別のハードウェアが選択され、処理を続けられる仕組みです。一般的には、影響を最小限に抑えるため、自動的に切り替わります。ソフトウェアの場合は、データのバックアップやレプリケーションによって、データの喪失やサービスの停止を防ぐ方法が一般的です。リアルタイムでデータレプリケーションを実施したり、地理的に異なる場所にデータセンターを設置することで、複数のソフトウェアを安全に実行することもあります。バックアップとはバックアップとは、システムやデータの安全性を確保するための仕組みです。コンピューターのファイルやデータベース、アプリケーションの設定などを別の媒体にコピーして保存しておくことを指します。データをバックアップしておくことで、紛失や破損、不正アクセスやシステム故障など幅広いトラブルに対応しやすくなるのです。基本的にはデータがバックアップの対象になりますが、近年はサーバの構成などもバックアップの対象になる場合があります。クラウド環境に構築するサーバやデータベースのIPアドレスなど、実装に関わる部分をバックアップしておくのです。以前と比較すると、バックアップの対象は非常に増えてきました。バックアップにおいては、その頻度やバックアップ先などを検討することが大切です。適切に運用されなければ、バックアップの目的をほとんど果たせなくなってしまいます。冗長化やバックアップと似た概念はいくつも存在しています。エンジニアとして、適切に運用できるようになるためにも、誤りやすい概念についても知識を持っておきましょう。二重化との違いシステムの可用性を高めるために、二重化と呼ばれる仕組みが採用されることがあります。これは、サーバやネットワークなど、システムやアプリケーションの信頼性や耐障害性を高めるための手法です。一般的には、同じ構成のシステムやアプリケーションを2つ用意しておき、必要に応じて切り替えられるようにしておきます。二重化は冗長化の一部であると考えられます。冗長化の構成については特段の指定がないため、二重化でも三重化以上でも、冗長化と呼ぶことは可能です。完全な別物だと理解されていることも多いですが、二重化は冗長化に内包されるものだと理解してください。ミラーリングとの違いミラーリングとは、データの更新が発生した際に、リアルタイムで複数の場所にデータをコピーしておく方法を指します。地理的に異なった場所にコピーしておくことが多く、これにより災害などデータに関するトラブルが発生しても、必要な情報の確保が可能です。複数のハードディスクに保存することの名残で「ディスク二重化」と呼ばれることもあります。データを複数の場所に保存する行為であるため、ミラーリングも冗長化の一種だと考えて良いでしょう。冗長化はシステムやアプリケーション全体を指すのに対して、ミラーリングはデータに関する部分だけを指します。冗長化の一部でミラーリングを採用することもあるぐらいであり、意味を理解して使い分けできることが求められます。冗長化とバックアップの4つの違い冗長化とバックアップにはいくつもの違いが存在します。使い分けができるように、4つの違いについて認識を深めておきましょう。冗長化は、システムの可用性を高めることが主な目的です。システムを起動するハードウェアに部分的な故障や障害が生じても、システム全体が正常に稼働するようにします。複数のハードウェアを準備しておくなどして、ダウンタイムを最小限に抑えるのです。ハードウェアだけではなく、ネットワークやアプリケーションの可用性を高めることもあります。それに対して、バックアップは、データの消失や破損からデータを保護することが目的です。アナログなツールよりはデータを保護しやすいとはいえども、デジタルも完璧なものではありません。災害やハードウェアの故障、ソフトウェアの不具合などによりデータが消失する可能性があります。これを防ぐために、バックアップが必要なのです。冗長化を実現するためには、一般的に同じ機能やサービスを提供する複数のデバイスやコンポーネントなどを用意します。これらを同時に利用したり切り替えたりできるようにしておくことで、可用性を高めるのです。複数のサーバーやネットワークを同時に設置しておき、故障した場合は別のものに切り替えられるようにします。バックアップを実現する際は、ある時点のデータを別の場所やメディアにコピーして保存します。一般的には、バックアップ用のストレージを用意して、そこにデータをコピーしておくのです。データベースサーバに格納されている内容を、異なるサーバにコピーしておきます。論理的または物理的に異なる環境にコピーすることが多く、トラブルに備えやすい方法を採用しなければなりません。実行タイミング厳密には、冗長化に実行タイミングというものはありません。トラブルに備えて、常に切り替えられる状態を保っています。実行タイミングと呼ぶならば、常に実行されていると表現して良いでしょう。サーバやネットワークなどは、いつでも切り替えられる状態になっています。それに対し、バックアップは定期的に取得されることが大半です。1日1回、決まった時間にデータをコピーします。中には、リアルタイムで常に実行されるものもありますが、多くは決まったタイミングにのみ実行されるのです。運用コスト冗長化を運用するためには、複数のハードウェアやソフトウェアを同時に用意しなければなりません。複数のサーバなどハードウェアを同時に運用することが求められます。日頃、利用する機会の少ないサーバなども運用する必要があり、コストが生じる方法だと考えたほうが良いでしょう。冗長化のためにサーバを2倍用意するならば、単純な計算で2倍のコストが発生します。対して、バックアップもデータを保管しておく必要があるため、専用のストレージを準備しなければなりません。冗長化とは異なり、サーバなどインフラ部分を完璧に用意することはなく、ストレージ部分だけがあれば良いのです。そのため、運用コストは冗長化に比較すると大きく抑えられるようになっています。冗長化やバックアップを取り入れる際のポイント皆さんの中には「冗長化やバックアップを採用したほうが良いのか」と悩んでいる人がいるはずです。続いては、冗長化やバックアップを取り入れる際のポイントについて解説します。影響が大きいシステムから選択する基本的な考えとして、システムが停止したりデータが消失した場合の影響が大きいシステムから選択すべきです。社内のデータを大量に扱う「基幹システム」は、万が一、停止してしまうと業務の大半が停止することになりかねません。そのため、このような重要なシステムは積極的に冗長化やバックアップの対象とします。社内だけではなく、社外に対して影響を与えるシステムも対策したほうが良いでしょう。外部に向けてクラウドサービスを提供しているならば、サービスの停止を防ぐために冗長化すべきです。サービスが停止して利用者に迷惑をかけてしまうと、サービスとしての信頼が失墜してしまいます。どのようなシステムでも、停止しないに越したことはありませんが、停止を許容できるものとそうではないものがあるはずです。影響が社内の一部であれば、許容できる場合もあるため、停止が許容できないものから冗長化やバックアップを進めていきます。サーバの冗長化には力を入れる現在は、多くのアプリケーションがサーバ上で動作し、必要なデータもサーバに保存されているはずです。そのため、どのような冗長化やバックアップ構成にするか悩むならば、サーバを軸に進めると良いでしょう。これらだけで十分とは限りませんが、基本的な方針は立てられるはずです。アプリケーションを安定して動作させたいならば、アプリケーションサーバを冗長化しておきます。これによって、トラブルでサーバが停止したり、アクセス過多で負荷が高まった場合でも、安定したサービスの提供ができるのです。データベースサーバも冗長化しておければ、データの読み込みに時間がかかる状態も回避できます。冗長化には、サーバだけではなくネットワークやストレージなど、いくつもの対象があります。これらから対象を完璧に選び設計することは難しいため、優先順位をつけて段階的に取り組むことも重要です。AWSやAzureなどのサービスも検討する冗長化やバックアップを実現したいならば、AWSやAzureなどのクラウドサービスに頼ることも検討してみましょう。これらのサービスには、標準で冗長化やバックアップに関する機能が用意されています。これらを活用することで、必要な対策を簡単に講じることができるためおすすめです。データベースのバックアップを取得したいならば、設定するだけで自動的に取得できます。データを日本に保存するのではなく、海外に保存することも可能です。これにより、データの消失に、今まで以上に備えられるようになるのです。サーバの可用性を高めるために、オートスケーリングなどの機能が用意されています。これは、接続が増えた時にはサーバの台数を増やし、減った際にはサーバの台数も減らす機能です。これを利用すると、実質的には冗長化のような取り組みができ、ユーザの利便性を担保できます。クラウドサービスによる冗長化やバックアップの構築には、専門的なスキルが必要です。導入にあたっては、構築ベンダーなどと相談すると良いでしょう。まとめ冗長化とバックアップの違いについて解説しました。目的が似ている部分はありますが、基本的には異なるため注意が必要です。冗長化は可用性を高めるものであり、バックアップはデータを保護するものだと考えましょう。これを取り違えていると、導入しても効果をあまり実感できなくなります。今までは自力で冗長化やバックアップの仕組みを作ることが求められました。今はパブリッククラウドを活用することで、簡単に構築できるようになっています。AWSやAzureなどを利用すれば、低いハードルでどちらも導入できるため、これらの活用も検討してみてください。