エンジニアBLOG

2023/03/03

運用自動化のススメ

現在の職場(システム運用業務)で運用自動化するぞ!と謳われてから早3年。
やるぞやるぞと言われている中、なかなか進捗しない現状をどう打破すべきかが、日々の悩みどころとなっている・・・
今回はそんな状況下での勝手な独り言(当たり前のことしか言ってないが)、現場で利用されている運用自動化プラットフォームのご紹介をさせて頂こうと思う。

運用自動化とは

文字通り、システム運用を自動化すること。システムと一言で言っても、サーバ/ネットワーク、各種アプリ等さまざまなモノが複雑に絡み合い、運用方法は多種多様化している。
限られたリソースの中で効率の良い対応が求められる中、より効率的なシステム運用を実現するための手段として運用自動化が注目される。

image

運用自動化がなぜ必要なのか

ICTの発達により新技術が続々登場する中で、システムは新技術を取り込むことで多様化・複雑化する傾向にある。多様化・複雑化するシステムは規模も大きくなり、人手での管理が難しくなる。
そういったシステムの運用業務には人もコストも多くかかり、人手不足に陥る結果を招きかねない。
その状況下でより効率的且つより安全にシステム運用をするために運用自動化が必要だと考える。

image

運用自動化が進まない理由

自動化しなければいけないことは判っているのになぜ進まないのか、その原因を現場の状況を鑑み自分なりに考えてみた。大きくは2つ。

理由1:システムと人の柔軟性の欠如
一部自動化ができていても、全体的に最適な自動化が構築できていない。
また、システム構成が複雑になり、運用資材の標準化ができていない為運用業務が属人化しやすい。

理由2:業務の棚卸と標準化
170以上の運用対象システムを抱えており、各システム毎に多種多様な業務があり、業務全体を管理しきれていない。
システム監視部門と開発部門とのITILベースの役割分担が明確になっていない。システム単位で運用業務の粒度が異なる。
システム毎に運用資材が整理できておらず、属人的判断に委ねられる傾向にある。
また、棚卸や標準化には膨大な工数がかかる。日々の業務に追われていると棚卸や標準化の優先度が低いものとなり、後回しにされてしまう。

おそらく、いろんな企業で抱えている問題なんだろうと思う・・

image

運用自動化を実現するとどんなメリットがあるのか

ポイントとして以下の3つを挙げてみる。

・オペレーションのヒューマンエラー削減
システムの多様化・複雑化に伴いシステム運用に膨大な工数がかかる。その状況下で人手のオペレーションを続けていると人的ミスによるトラブルを発生させる可能性が高くなる。
運用自動化によって業務を効率化することで、人的ミスを減らしトラブルの発生を抑えることが出来る。

・コスト削減
運用自動化をすることで、システム運用に関わる多くのコスト削減が期待できる。

・人材の有効活用
システム運用業務はコストセンタ業務である。が、業務の根幹を支えるシステムを継続的に利用できるようにするためには必須業務となる。
とはいえ、システム運用業務に多くの人材を配置すると、企業にとっては利益を生み出す重要業務を進めるための人材不足にもつながる可能性がある。
運用自動化を実現できれば、運用にかかわる人材を最小限に抑え、事業発展のための人材を増やすことが可能になるのではないだろうか。

運用自動化を実現させるためには

運用自動化を絶えず進めていくためには以下の3つのポイント進める必要がある。

・業務の標準化
自動化を行う上でネックとなるのが、属人化した業務の存在である。オペレーター暗黙知による業務があると自動化は難しい。
システマチックな運用を構築するためには、業務の標準化が欠かせないと思う。属人化するような業務は誰もが行えるよう具体的な手順を共有して標準化することが重要だと思う。
また、システム運用を支える各種資材を管理する方法もバラバラとなっており、構成管理として標準的な管理方法やルールを定める必要がある。

・定型業務の自動化
定型・非定型のどちらの業務も存在するが、定型業務を中心に自動化を進めていくことが効果を得られやすいと思う。
非定型業務においてはまず標準化を進め、その中で多くの業務に共通点が生まれてくるので、その業務を定型業務として自動化を進めていくことで、より大きな効果を得られることが期待できる。

・システムと人の柔軟性確保
運用自動化を実現するためには、システムだけでなく人も柔軟に対応する必要がある。
運用自動化を進めるにあたり、従来の運用の仕組みを大きく変える必要性も出てくる。その際、従来の業務の仕組みに人が固執すると自動化が進まない。
また、運用の現場だけでなく、開発部門や管理層まで巻き込んで一丸となってやらなければ、全体最適な運用とはほど遠いモノが出来上がるだろう。

image

運用自動化プラットフォームのご紹介

現在現場で利用されている運用自動化プラットフォーム、Ansibleについて簡単に触れておきたい。
Ansibleとは、ザックリ言うと「プロビジョニング、構成管理、アプリケーションのデプロイ、オーケストレーション、その他多くのITプロセスを自動化する、オープンソースのIT自動化ツール」。
※詳しくは、

https://www.redhat.com/ja/technologies/management/ansible/what-is-ansible

image

運用現場で利用されるAnsible概略図

よく利用される用途としてはサーバ構築、パッチあて等のデプロイ利用が多数を占める。
システム運用業務としてはそのほかに、サービスリブート、OSリブートの他、サーバ正常性確認、ログ取得などでの利用シーンがある。
やろうと思えばもっとできるが、システム監視運用の一時対処としてはこのくらいだろう。
このくらいなのだが、システム毎に膨大な手順書があり、それぞれ段取りが異なるので、Ansibleで共通定型業務として構築することで、業務の標準化を図れる、という狙いがある為Ansibleを利用した自動処理の構築を進めている。
Ansibleの特徴を簡単に。
・エージェントレス
・プログラミング不要(実行ファイルのplaybookはYAML形式のテキストでものすごくシンプル)
・Ansibleモジュールが充実(管理対象サーバやサービスごとに便利なモジュールが提供されている)
・記述方法さえ理解すればだれでもとっつきやすい
IT運用を自動化するプラットフォームはほかにもあるが、個人的にはAnsibleが好みである。
機会があれば是非Ansibleで自動処理を作ってみてもらいたい。
他にもいろいろ便利な機能や拡張機能があるが、長くなるのでこの辺で。

まとめ

長々と述べさせていただいたが、運用自動化を進めることでヒューマンエラーやコスト削減、人材の有効活用などが期待でき、効率的で最適なシステム運用が可能になると思う。
ぶっちゃけ道具は何でもよいと思っている。業務の特性に合わせた製品選定をすればよい。
肝要なのは、運用自動化を進めるにあたって根気よく継続していくこと。
そして、目的をはっきりさせメリットを理解したうえで思い切った変革にも進んで取り組めること。
運用自動化は運用現場だけに関わらず、企業の利益に直接インパクトを与えるものであるということを認識し、部署やさらには立場のメリデメで判断せず、横断的に取り組まねばならないことを理解しないと進まないと思う。
コスト計算のみで運用自動化PJが発動しないよう、計画的に実行されることを切に願い、本項のまとめとする。