Reading Time: 1 minutes
この記事の所要時間: 約 4分

人間によるシステム運用作業の最小化を目指す継続的な活動「NoOps」が注目を集めています。NoOpsが実現されると、システムの運用管理にどのようなメリットがもたらされるのでしょうか? 本記事では、NoOpsのメリット、ならびに実現のために必要な環境について解説します。

NoOpsとは?

NoOpsは、「No Operations」を省略した言葉です。つまり、NoOpsとは、「人間によるシステム運用作業の最小化」を目指す継続的な活動のことを指します。

従来のシステム運用保守では、夜間の緊急連絡や休日出勤をはじめ、担当者への負担は「当然のもの」と考えられていました。また、システムを運用保守するために、利用者に一時的な不便を強いる「システムの一時停止」も仕方のないことと考えられていました。

ところが近年では、技術が大幅に進化し、システムに高い柔軟性や弾力性を持たせられるようになったため、運用保守にかかる負荷は徐々に軽減されつつあります。その影響を受けて、システム管理者がシステムに求める要件にも変化が出てくるようになりました。

例えば、従来は「いかにして障害が発生しないシステムを作るか」といった堅牢性を重視していましたが、最近は「万が一、どこかで障害が発生したとしても確実に復旧できるか」といった回復性を重視する傾向が強くなっています。

NoOpsは、システムの運用保守に関わる人々が抱える課題を解決し、今の時代にふさわしいシステム運用保守を実現する活動です。具体的には、以下のようなことを実現する運用保守を目指しています。

  • 障害が発生した際に、それをシステムが自動検知し、回復処理を施して正常稼働に戻す
  • 障害発生から復旧までの間、サービスは無停止状態を維持する
  • 障害の発生から復旧までのプロセスで、人間が携わらなければならない作業を最小化する

NoOpsのメリット

NoOpsの実現によって得られる主なメリットは次の2つです。

1.運用リソースとコストが最小化され、攻めのITを実現しやすくなる

システムに自律運用能力を持たせることで、人間による運用を最小化できます。運用フェーズでは、リリースの手続きやパッチの適用など、こまごまとした作業が日々発生します。一つひとつの作業が少量で簡単なものであったとしても、システム全体で同様の作業を行うと工数が多くなり、とても手が回らなくなります。
一般的に、情報システム部門は運用保守に多くの人員やリソースを費やさない傾向があります。こうした状況に置かれているシステム運用部門にとって、NoOpsにより従来の運用タスクを最小化できることは業務負荷の軽減につながります。
また、NoOpsはビジネス推進にも大きく貢献します。運用保守のような「守りのIT業務」に当たる時間を減らすことで、新たなビジネス創造や業務効率改善につながる「攻めのIT業務」に時間を割り当てやすくなります。

2.サービス停止時間を最小化できる

サービスの停止時間を最小化できるのも大きなメリットのひとつです。システムを利用するユーザーにとっては、レスポンスタイムが安定することで、ストレスを感じることなくシステムを利用できるようになります。
システムの運用管理者側においては、障害が発生してもアプリケーションが完全に機能している状態を維持できるのが利点となります。運用管理者は障害からの復旧にリソースを集中させて、早期回復に向けて取り組むことが可能となります。障害の原因特定や再発防止策の検討は、障害対応が完了したあとで慎重に進められます。

NoOpsを実現するために必要な環境と能力

NoOpsを実現するためには、次のような環境が求められます。NoOpsが備えるべき能力もあわせて紹介します。

環境1:オペレーションを自動化するツール

人間がやるべき業務を最小化できるといっても、既存のツールやサービスだけですべての運用業務を自動化できるとは限りません。中長期的な視点で運用業務の効率化・簡素化を考えるなら、自律的な運用を実現するツールを新たに導入することも検討しなければなりません。
また、自社のシステム環境や業務フローの要件を満たすツールを見つけられない、想定以上にコストがかかる、といった場合は、自社で自動化ツールを開発した方がよい場合もあります。

環境2:モジュール化したインフラ環境

自社で自動化ツールを開発する場合は、開発時によく使う構成をモジュール化しておくと、少ないコストで多種多様な環境に対応できるようになります。突発的に新しいサービスや構成が必要になったときも、モジュール化された構成を活用し、新しい部分だけを追加作成することで早期の適用が可能となります。

環境3:回復性の設計

NoOpsが広まる以前は、「いかに壊れないシステムを作るか」といった堅牢性を重視した設計思想が一般的でした。しかし、障害が発生することを前提とした設計思想を経て、現在では「障害が発生してもすぐに回復できる」回復性を重視した設計が求められるようになりました。万が一、障害が発生した場合は、速やかに回復し、継続して稼働する能力を備えたシステム環境を整備しておく必要があります。
システムの回復性は、設計段階から考慮しておくべき要件です。ただし、最初のうちは、回復性の設計が適切であるかを手動で検証する期間が必要になるでしょう。検証を繰り返すうちに、自動化できる処理を見極め、徐々に自動化へと移行していくのが理想です。

検証作業や回復性の設計に求められる基本的なポイントは以下の通りです。

  • 複数の小さな処理
  • 非同期処理を前提とした設計
  • すべての処理結果の記録

最終的には、自律運用の実現を目指していくのが望ましいと言えます。そのためには、以下のような能力が必要となります。

能力1:復元力

高い回復性を持つシステムを実現するには、障害が発生したときに「素早く復元できる能力」が非常に重要となります。

能力2:観察力

システム上で障害が発生した際に、それを「いち早く検知する観察力」も求められます。いくら復元力が優れていたとしても、障害が起きてから検知するまでにタイムラグが生じてしまうと、経過した時間の分だけ障害がシステムに及ぼす影響範囲は拡大し、深刻化していきます。「管理者がログを見て、ようやく障害を検知する」といったスピード感覚ではNoOpsを実現することはできません。

能力3:再構成力

障害を検知したら、いち早く復元に努めるとともに、場合によってはシステムの再構成も行わなければなりません。発生した障害の種類や原因を見極めて、短時間でもとのサービスを提供できるように「システムを再構成する力」も必要になります。

まとめ:NoOpsの実現はシステムの監視から始まる

NoOpsを実現する環境は徐々に整備されつつあるものの、まだ完全に自動化するまでには至っていません。また、NoOpsを実現してもシステム障害が発生するリスクはゼロにはならないため、いざ障害が発生したときに迅速かつ的確に原因を特定する必要があります。そのためには、日ごろから監視を行っておくのが有効です。例えば、それを容易に実現する、以下のような監視ツールの導入を検討してみてはいかがでしょうか。

OpManager

ネットワークの運用管理を自動化する機能をもつネットワーク監視ソフトウェア。
製品概要無料版ダウンロード