NTTドコモ様 事例
NTTドコモのシステムにおける
「DevOps推進と運用効率化」
NTTドコモが提供するサービスのシステム開発・運用では積極的にDevOpsを推進しています。
「オブザーバビリティの強化、PagerDutyの導入」により初動対応の迅速化や運用の効率化を実現。
サービスの価値を高める活動に多くの時間を割けるようになった事例をご紹介!→ PagerDutyの資料をみる(無料)
企業にとって甚大な損失とともに伝えられるシステム障害のニュースを耳にすると、自社のシステム障害対策に不安を覚える方もいるのではないでしょうか。現代のシステム障害対策では、予防策に加え、より迅速な障害対応が求められます。システム障害が発生すると大きな損失につながり、1分1秒でも早い復旧が望まれるためです。そこで、システム障害の対策と対応において重要性が増しているのが「インシデント管理」です。適切なインシデント管理は、サービスの正常な利用を妨げるあらゆる事象への素早い対応を実現し、迅速な復旧につながります。本記事では、システム障害のリスクや対応策、そしてシステム障害への対策を考える際に知っておきたい「インシデント管理」とは何かを解説します。
目次
システム障害とは、「システムに問題が発生して正常な状態を維持できなくなる状況」あるいは「その問題の原因や不具合」を指します。ハードウェアやソフトウェア、ネットワークなど、システムを構成するさまざまな要素において問題は発生します。システム障害は、一部またはすべてのサービスを利用できなくなるなど、ユーザーに直接的な影響を及ぼす恐れがあります。近年の業務やサービスの多くはITシステムを利用しているため、障害がユーザーへ及ぼす影響はより大きくなっていると考えられるでしょう。システム障害によりユーザーが不便や困難な状況にさらされれば、企業への信頼喪失にもつながります。インターネットやITの普及にともない、システム障害の発生件数は年々増加傾向にあるため、企業におけるシステム障害対策はより重要性を増しているといえます。
システム障害の原因やユーザーへの影響、企業の損失などは、サービス内容や業種によってさまざまです。しかし、いずれの場合も、ユーザーへの影響が大きいほど企業が甚大な損失を受ける点は変わりません。ここでは、過去にユーザーへの甚大な影響と企業損失をもたらしたシステム障害として、2つの事例を紹介します。
ある金融機関では、過去に2度発生したシステム障害への対策として、数千億円という巨額の資金を投入して新たなシステムを開発しました。金融機関でシステム障害が発生すると、ユーザーが預貯金を引き出せなかったり、送金できなかったり、ということが起こります。個人や企業の資産を預かる金融機関でこのようなトラブルが起こると、著しく企業への信頼を失うことにつながります。そのため、信用回復に向けて巨額の資金を投入し、システムの開発に踏み切ったのです。
それにもかかわらず、新しいシステムでも幾度となくシステム障害が発生し、さまざまな問題が発生しました。新システムの投入後にも繰り返し障害が発生した主な要因には、危機管理の甘さや経費削減によるIT分野の人員削減が挙げられています。一連のシステム障害の影響により、この金融機関は数十億円にのぼる赤字を計上しました。システム障害対策への投資は決して安いものではありません。しかし、不十分な対策でシステム障害が発生してしまえば、投資額に及ぶほどの損失が出てしまうのも確かです。
ある通信会社では、メンテナンス作業におけるマニュアルの取り違えから設定ミスが発生した結果、音声電話が15分間不通になる大規模な通信障害が起こりました。即座に対応したものの、その対応により別のトラブルが発生し、完全な復旧までには3日以上を要しました。日々のやり取りから緊急の連絡まで、事業や生活に欠かせない通信サービスの停止は、連絡が取れないことによる実害や不安といった大きな影響をユーザーに与えます。そのため、この通信会社ではユーザーに利用料を返還することになり、その補償額は70億円以上にものぼりました。
また、障害の影響は既存ユーザーだけに留まらず、サービスの新規契約にも影響を及ぼしました。障害の発生や対応が、企業の信用喪失につながった結果だと考えられます。システム障害による損失は一時的なものだけでなく、信用を失うことになればユーザー離れによる売上の減少など、その影響が長期に及ぶことがわかります。
システム障害にはさまざまなものがありますが、主な要因があり、要因に応じていくつかの種類に分けられます。どのような要因や種類があるのかを解説します。
システム障害は、内的要因で引き起こされるものと外的要因で引き起こされるもの2つに大きく分けられます。
システム障害の内的要因とは、社内におけるシステムの利用状況や操作状況が要因となっている場合を指します。例えば、新しいエンジニアが既存システムへの理解が不十分であったためにバグを埋め込んでしまった、というようなケースです。ほかにも、社内で利用している機器が故障してしまい、障害が発生するケースなどもあります。
システム障害の外的要因とは、自社内の状況や環境に依らない、外部からの影響を指します。例えば、落雷などの自然災害によるハードウェア故障や、サイバー攻撃によるデータの改ざんなどです。ほかにも、マーケティングの一環でキャンペーンを実施したところ、Webサイトにアクセスが集中してしまい、サイトがダウンするといったケースもあります。
システム障害は、要因に応じていくつかの種類に分けられるため、ここでは内的要因に該当するシステム障害の種類について解説します。
ソフトウェア障害とは、システムを構成するOSやアプリケーションといったソフトウェアの不具合によって発生する障害のことです。例えば、ソフトウェアにバグが存在していたり、最新バージョンに更新していなかったりして発生します。このほかにも、CPUやメモリ不足でソフトウェアが停止するようなケースもあります。
ハードウェア障害とは、サーバーなどのハードウェアが物理的・論理的に故障して発生する障害のことです。物理的なハードウェア障害は、製品不良や経年劣化、自然災害などによって、そのハードウェア機器自体が破損して発生します。一方、論理的なハードウェア障害とは、ハードウェア内のデータにエラーや故障が発生しているケースを指します。この場合、OSの再インストールなどにより初期化することでデータは消失するものの、ハードウェア自体は再度利用できます。
ヒューマンエラーは人為的なミスを指し、利用者の設定ミスや操作ミスによって障害が発生するケースが該当します。運用・保守や操作などでシステムに人が関わる限り、起こり得る問題だといえるでしょう。
現在はシステムが複雑化していることから、システム障害への対策はより難しくなっています。必要となる保守・運用コストは年々増加傾向にあり、経営を圧迫するような規模になっている企業もあることでしょう。コストを考えると、システム障害対策にどこまで取り組めばよいか悩んだり、最小限の対策に留めたいと思ったりするかもしれません。しかし、システム障害対策が不十分だと、企業経営において大きなリスクを抱えることになるでしょう。ここでは、不十分なシステム障害対策により発生するリスクについて解説します。
現代では、あらゆるサービスがITシステムに依存しており、システム障害が社会に与える影響は増しています。例えば、医療システムであれば、障害発生が人命に関わるような事態になりかねません。そのため、障害発生時の損失額も大きく、システムが「1分停止すると数百万円、24時間の停止で数十億円の損失が生じることもある」といわれます。
障害発生における損失は、復旧にかかる費用だけではありません。事例にもあったように、ユーザーなどへの賠償金が発生することもあります。さらに、復旧して賠償金を支払ったからといって、企業への信用喪失を免れるとは限らない点も問題です。企業イメージの低下は、ユーザー離れや新規顧客獲得の妨げとなり、中長期にわたって損失を招きます。したがって、一つのシステム障害の発生が企業の存続を脅かすことは、十分にあり得ます。システム障害により発生する損失は、システム障害対策に必要なコストとは比べものにならない規模になる可能性があることを理解しておきましょう。
システム障害への予防策が不十分だと、重大な障害が発生するリスクだけでなく、日々の細かな運用・保守対応も増えることになります。さらに、運用面での対策が不十分であれば、一つひとつの対応に時間がかかるでしょう。そして、多量に発生する問題をとにかく早く解決しようとして、優秀なエンジニアに連絡がひっきりなしに入るかもしれません。このように急な保守対応が続くような状況下では、優秀なエンジニアであっても疲弊してしまいます。通常業務のパフォーマンス低下にもつながり、最終的には離職することになりかねません。
また、システム障害の発生やその規模を事前に予想することは困難です。そのため、システム障害に備えて十分な人員を確保する必要がありますが、保守・運用コストが上昇することから、実現が難しい場合があるでしょう。また、新しい人員の確保ができない場合には、十分な保守体制を整備することも難しいと考えられます。
リスク管理については以下の記事で詳しく解説しています。ぜひ併せてご覧ください。
>ITリスク管理 (マネジメント)の必要性を解説!
システム障害の種類はさまざまなため、対策も多方面から実施する必要があります。また、会社の規模や障害対応の体制、サービス内容に応じても適切な対策は異なるため、自社の状況に合わせた対策が必要です。ここでは、対策の観点と実施内容の例を解説します。
サービスの継続性を高めるには、障害の発生を回避するためのシステムや、障害発生時にも使い続けられるシステム構成であることが大切です。例えば、サイバー攻撃への対策としては、セキュリティシステムの強化が挙げられます。サイバー攻撃はシステムのセキュリティの弱点を狙うため、脆弱性を診断でセキュリティリスクを把握し、対策することが有効です。有事の際にも事業を継続できるシステム構成にするためには、適切な冗長化構成を取ることが重要です。従来のデータセンターでもそのような構成は可能ですが、クラウドを導入しその機能を適切に活用することで、コストを抑えながら地理的にも分散した環境を構築することが可能になります。
システム障害は、保守・運用時のヒューマンエラーによっても発生します。そのため、マニュアルの作成やチェックリストの活用、複数人によるチェックなど、ミスを予防する仕組みを構築することが必要です。また、作業の自動化により、ヒューマンエラーを回避することもできます。
システムの品質を上げるためには、開発中のソフトウェアのテストも重要です。障害発生につながるようなバグや不具合を発見して事前に対処できるように、テストを実施できる体制を整えましょう。CI(Continuous Integration)と呼ばれる、継続的にテストを実行する仕組みを導入することも有用です。また、システム障害を防ぐために体制やプロセスを見直す際には、過去の障害対応を参考にしましょう。障害発生時のログやデータ、対応内容の記録などを分析することで企業における問題点の把握や、必要な対応の検討につながります。
システム障害の発生を素早く検知することも重要ですが、障害発生だけでなく、障害につながる予兆の検知も重要です。例えば、通常よりも処理に時間がかかるという事象が見られた場合、ハードウェア故障の前兆である可能性もあります。通常とは異なる状況をいち早く検知して事前に対応するためには、監視ツールを使ったシステムのモニタリングが有効です。監視ツールがシステムをモニタリングし、異常があればすぐにアラートを発します。
障害からの復旧対応を迅速に行なうためには、障害発生時用のワークフローの策定と、平時における訓練の実施が必要です。迅速な初動対応の実現に向けて、症状や原因、機器の種類などをもとに障害対応の担当者やフローを整備しておきましょう。
障害復旧における問題の切り分けや原因の調査には、対象とするハードウェアやアプリケーションなどの異常の発生を確認できる各種診断ツールを活用します。より迅速な障害復旧の実現を目指す際には、障害対応の自動化も有効です。障害対応では、繰り返し発生する作業を人手で行なっているケースも少なくありません。手順が決まっている作業などがあれば、自動化を進めるようにしましょう。
次に、システム障害が発生した際の基本的な対応の流れについて解説します。
まず、ユーザーからの問い合わせや監視ツールのアラートをもとに障害の発生を把握し、障害の内容や発生範囲、発生時刻などの確認を進めます。初動対応の遅れにつながらないためにも、ポイントを絞って確認することが重要です。
障害の内容に応じて、事前に決められたルールに沿って関連する部門へ一次連絡をします。関連する部門が連絡を気付くまでにタイムラグが発生する可能性もあるため、詳細な内容を伝えることよりも、迅速に伝えることを重視します。不明点や調査中の内容が含まれることもあるため、情報のステータスを併せて伝えることも重要です。
一次連絡を受けた担当者は、障害に関係する監視ツールのログやデータを確認し、詳しい内容の調査を進めます。具体的には、障害が発生した箇所を特定し、関連するサービスの利用には問題がないかを確認するなどして、業務やサービスへの影響を調査します。この調査結果をもとに緊急度を判断し、対応の体制を決定します。その後、システム障害の原因を特定するために、より詳しい調査や分析を進めます。過去の記録から類似障害への対処を参考にしたり、関係者で集まって相談したりしながら、原因特定に向けた分析を進めます。
業務やサービス利用への影響を最小限に留め、いち早く利用再開できることを念頭に復旧作業を進めます。そのため、障害の原因がわからない場合は暫定的な対処を行なってサービスを再開し、その後恒久的な対応にあたることもあります。ただし、本番環境で復旧作業を行なう場合には、暫定的といえども慎重に対応しなければなりません。
復旧作業が済んだら、障害に関する内容を報告書にまとめ、関係者に提出します。報告書には、障害の概要や対応内容、障害の原因と対策、再発防止に向けた取り組みなどを記載します。障害の原因究明にあたっては、直接的な原因だけではなく、間接的に障害発生に影響を及ぼしたと考えられる事象も把握することが大切です。また、再発防止に向けた取り組みや障害対応の迅速化のために、障害対応で得られた知見やノウハウは関連する部門に共有します。障害対応を振り返り、ノウハウを文書化して蓄積したり、ほかのメンバーに共有したりする場を設けましょう。
システム障害対応については以下の記事でも詳しく解説しています。ぜひ併せてご覧ください。
> 理想的な障害対応の流れとは?〜6つのStep、6つのポイント〜
ここまでシステム障害対策方法についてご紹介しましたが、問題解決へのスムーズな対応を実現し、問題の再発を防止する方法として「インシデント管理」が注目されています。インシデントとは何か、そしてインシデント管理とはどのような取り組みなのか解説します。
本来、インシデントという言葉には「将来的に重大な事件に発生する可能性を含む事象」という意味があります。そこから派生し、ITシステムの運用では「ユーザーが正常にサービスを利用できない状態」を指します。インシデントは、ユーザー視点でサービスを見た際に重要な概念です。現代のユーザーにとって「サービスをいつでも利用できる」のは当たり前のことであり、それを前提に契約がなされるサービスも少なくありません。
インシデントの要因には、システム障害やネットワークトラブル、人的ミスなど、幅広い事象が含まれますが、要因が何であれ、サービスを正常に使えないこと自体が問題です。適切な対応がなされなければ、サービスや企業に対する信頼の喪失につながります。そのため、企業はシステム障害に限らず、幅広い視点でユーザーのサービス利用を阻害する事象、つまりインシデントに対応することが求められています。
インシデント管理とは、システムが正常に利用できないインシデントが発生した際に、迅速にシステムやサービスを復旧させるための取り組みを指します。システムでは昼夜問わず、多岐にわたる内容のインシデントが発生します。例えば、システムが停止してまったく利用できないという重大なものから、利用はできるもののWebページの表示が遅いといったレベルまで、その内容はさまざまです。
限られたリソースの中では、優先順位を付けてインシデントに対応しなければなりません。しかし一方で、その時点では重大ではなかったインシデントを放置したことで、のちに重大な問題が発生してしまうケースもあります。そのため、発生するインシデントを適切に管理することは重要です。インシデント管理によって適切に対応すれば、システム障害をはじめとした重大な問題の再発防止や、問題の迅速な解決につながります。
システム障害の発生要因や種類はさまざまであるため、システム障害が発生した際に迅速に対応するには、適切なインシデント管理が欠かせません。インシデント管理は迅速な復旧対応を実現するだけでなく、再発防止やエンジニアの負荷の軽減など、将来にわたって大きなメリットを得られる取り組みです。そのため、システム障害への対策をお考えの方は、ぜひインシデント管理も併せて検討してください。なお、さらに詳しいインシデント管理の解説については、こちらの記事「インシデント管理」とは?〜システム障害を未然に防ごう〜で解説しています。
PagerDutyはインシデント対応を一元化し、迅速な障害対応を実現するインシデント管理プラットフォームです。700を超える外部サービスと連携し、インシデント対応のプロセス改善に役立ちます。また、監視ツールから発生する大量のアラートをAIが分析してノイズを除去し、運用担当者の負担を軽減します。そのほかにも、多くの強力なインシデント管理機能を備えていることから、より少ないリソースで迅速なシステム障害への対応が可能です。
NTTドコモが提供するサービスのシステム開発・運用では積極的にDevOpsを推進しています。
「オブザーバビリティの強化、PagerDutyの導入」により初動対応の迅速化や運用の効率化を実現。
サービスの価値を高める活動に多くの時間を割けるようになった事例をご紹介!→ PagerDutyの資料をみる(無料)
目次