
システム運用の自動化を目指すNoOps 実現のためのアプローチは?

夜間のシフト勤務や障害発生時の対応など、システムの運用管理には苦労がつきものです。加えて、IT需要の高まりからITスキルを持った人材が不足しており、人的リソースの確保も難しくなっています。
そのような中で、システムの運用業務を自動化・効率化し、最終的に運用業務において人間の介在をなくすことを目指すNoOpsは有効なアプローチとなりえます。すぐに全ての運用業務を自動化できるわけではありませんが、NoOpsは省力化や効率化のヒントとなるでしょう。
この記事では、NoOpsという考え方や具体的なアプローチ方法をご紹介します。
NoOpsとは
NoOpsとはどのような概念なのでしょうか。ここではまず、NoOpsの概要を紹介します。
運用管理の省力化を目指すNoOps
NoOpsとは「No Operations」から生まれた言葉であり、システムの運用管理においてできる限り省力化を進めていく取り組みのことを指します。
運用監視や障害時の復旧作業には人手が必要です。NoOpsの考え方では、運用監視や障害対応時に発生する作業をできるだけ自動化し、またそもそも障害対応が発生しないように障害の発生を減らしていくことを目指します。
NoOpsのコンセプト
NoOps JapanというNoOpsを推進するコミュニティによれば、NoOpsの定義は以下のとおりです。
NoOpsはNo Uncomfortable Ops(システム運用の嬉しくないことをなくす)を目指すための技術、アーキテクチャ、それを実現するための活動を指します。このアプローチの代表例に、コンテナを活用した高回復性設計、DevOpsの活用、モニタリングと構成設定の自動化、SREによるToil削減活動、などがあります。
引用:NoOps Definition v1.0
https://github.com/noopsjapan/community/blob/master/DEFINITION.md
この定義のポイントは「システム運用の嬉しくないことをなくす」という点にあるでしょう。NoOpsは運用作業を完全に不要にする取り組みというよりも、運用において苦労する作業を減らしていくというコンセプトの取り組みであると考えられます。
NoOpsが求められる背景
IT人材の不足が叫ばれて久しいですが、システムの運用管理業務においては特に人材の確保が難しい状況にあるのではないでしょうか。運用管理においては24時間のシフト制勤務や休日出勤も多く、また障害発生時には長時間対応作業を行わなければなりません。ただでさえ不足しているIT人材が選びにくい職種となってしまっている現状があります。
システム運用担当者の負荷を軽減するために、また働きやすい環境を構築していくために、NoOpsは有効なアプローチとなります。
NoOpsを実現するメリット
NoOpsの考え方を取り入れていくことの主なメリットは以下のとおりです。
人的リソース不足への対応
上述した通り、人的リソース不足の対応としてNoOpsの考え方を取り入れていくことは有効なアプローチとなります。NoOpsという言葉からは「運用業務を完全になくす」というニュアンスが感じられるかもしれませんが、NoOpsは上述のとおり「運用業務の苦労を減らす」ための取り組みです。「No Operations」という考え方に基づき、システムの運用管理における業務を減らしていくことは、運用業務を担っている担当者にとって有益なものといえるでしょう。
サービス稼働率の向上
NoOpsのアプローチの一つに「そもそも障害を発生させない」ための高回復性設計というものがあります。システムに自己修復機能を持たせ、部分的なシステムのダウンであれば自動的に復旧させることで、運用負荷の軽減だけでなく、サービスの稼働率向上にもつながるというメリットが得られます。
運用コスト削減
もちろん、NoOpsの考え方によって自動化などの効率化を進めていくことで、運用担当者の工数削減効果も期待できます。サービスの障害発生を減らすことで、緊急で対応しなければならない場面も減らすことができます。休日出勤や夜間対応の削減にもつながるでしょう。
NoOps実現のためのアプローチ
NoOpsを実現していくためには、具体的にどのようなアプローチが有効なのでしょうか。ここでは、3つのアプローチを取り上げてご紹介します。
SREの概念を踏まえたToil削減
まずご紹介するのは、SRE(Site Reliability Engineering:サイト信頼性エンジニアリング)の概念を踏まえたToil削減というアプローチです。SREはGoogleが提唱した概念であり、サイトやサービスの信頼性を向上させるため、システムの運用において手作業を自動化していく取り組みのことです。
インフラのクラウド化が進む中、ソフトウェアによるインフラの制御がしやすい環境が生まれています。このような中で、コードによりインフラを制御するという考え方(Infrastructure as Code)が進んでいます。このようなアプローチにより、システムの信頼性を向上させていくのがSREです。
SREの導入における重要な項目の一つとして「Toil」の削減というものがあります。Toilとは手動での作業や繰り返し行われる作業のことです。Googleによれば、以下のような作業はToilと判断できるとされています。
・クオータ(サービスの上限値)の制御
引用元から翻訳:Google Cloud Blog「Identifying and tracking toil using SRE principles」
・データベーススキーマ変更の適用
・重要でないアラートの確認
・作業手順書からのコピー&ペースト
https://cloud.google.com/blog/products/management-tools/identifying-and-tracking-toil-using-sre-principles?hl=en
このような面倒な作業に苦労されている方もいらっしゃるのではないでしょうか。Toilはサービスの成長に伴い増加していくという特徴があります。SREにおいては、Toilを洗い出し自動化などの手法で削減を目指すことが推奨されています。
Toilの削減により、作業ミスを防ぐとともに、運用作業の負荷軽減にもつながります。
高回復性設計
そもそも障害を発生させないようにするアプローチもNoOpsの実現に向けて有効となります。システム自体にチェック機能を備え、異常発生時に簡単な復旧を自動で行う仕組みを設けることで、障害の発生自体を防ぐことができます。
近年では、マイクロサービスモデルに基づき、Kubernetesやコンテナにより分散化されたアーキテクチャを採用するケースも増えています。このようなシステムにおいては、あるべき姿を監視し、その状態と一致していなければシステムを復旧させることも比較的容易に実現できます。
高回復性設計を実現するためには、オブザーバビリティも重要です。オブザーバビリティとは日本語で「可観測性」を意味する言葉であり、システムの内部的な情報を詳細に把握しようとする概念のことです。マイクロサービスモデルのような分散型システムにおいては、システムの稼働状況を把握しにくくなります。よって、アプリケーション側においてもデータを収集・可視化しやすいような設計としていくことが求められます。
オブザーバビリティを高めたシステムに対して、運用監視ツールなどでモニタリングしていき、障害時に自動で復旧させる仕組みを構築していくことがポイントとなります。

AIの活用(AIOps)
AIOpsとは、AI技術の活用により運用管理を高度化していこうという取り組みのことです。AIOpsは2016年に大手ITリサーチ会社であるGartner社が提唱した造語であり、運用業務を効率化するための手法として注目されています。
AIOpsの考え方に基づき、動的しきい値による高度な異常検知やリソース消費量の予測、過剰なアラートの判別などを実現していきます。AIOpsの機能を備えたツールも登場しつつあり、ツールの活用により運用業務の負荷軽減につなげることができます。
AIOpsについては以下の記事でも詳しく解説しているため、併せてご覧ください。

AIOpsはNoOpsに向けたファーストステップとして取り組みやすい
ここまでNoOpsを目指すための様々なアプローチを紹介しました。その中でも、AIOpsの活用は取り組みやすいと考えられます。高回復性設計を実現するためには、マイクロサービスモデルの導入やオブザーバビリティの向上など、システムのアーキテクチャを抜本的に変える必要があります。また、SREの取り組みも、SRE担当者の設置をはじめとして運用業務のやり方を大きく変えていかなければなりません。
これらと比較して、既存の業務を効率化・高度化していくアプローチであるAIOpsは、既に運用中のシステムに対しても適用しやすい取り組みといえるでしょう。NoOpsを目標に運用業務の負荷軽減を進めたいと考えている方は、まずAIOpsによる改善から進めてみてはいかがでしょうか。
AIOps機能を備えたSaaS型運用監視サービス「LogicMonitor」とは?
当社では、AIOps機能を備えたSaaS型のIT統合運用監視サービス「LogicMonitor」を提供しています。LogicMonitorでは、以下のような運用負荷軽減に有効なAIOps機能を利用することができます。
- 過去のデータを基に稼働状況に関する正常パターンを蓄積・学習し、リアルタイムに予兆検知を実現する機能
- 適切なタイミングで根本原因のアラートを発報することで、ノイズアラートを削減する機能
- コンピューティングリソースやストレージ量のキャパシティを予測し、適切なタイミングでのIT投資を実現する機能
これらの機能を活用することで、運用業務の負荷軽減につなげることができます。NoOpsを実現するための第一歩として、LogicMonitor導入を検討してみてはいかがでしょうか。
まとめ
この記事では、NoOpsというキーワードについてご紹介しました。NoOpsという言葉を聞くと「運用オペレーション不要」のようにとらえやすいですが、実際には運用現場の困りごとを減らしていくアプローチがNoOpsです。NoOpsを実現するためのアプローチは様々ですが、特にアプリケーション側に手を入れにくい現行システムの運用改善においては、AIOpsに対応した運用監視ツールの採用が有効となります。無駄で面倒な「Toil」に悩まされている方は、ぜひ検討してみてください。