2018年10月01日
システムを自律的に運用させよう
~NoOps~
進むシステム自動化
近年、クラウドを利用して情報システムの運用を行う企業も増え、クラウドのメリットをより活かす方法が求められています。その方法の一つとして、システム運用の自動化が挙げられます。従来、人手で行っていたサーバーの設定といったシステムインフラをコード化※1して自動運用することができるようになり、システム運用の自動化が進んでいます。
また、システム運用だけでなく、システム開発からシステム運用までクラウドのメリットを活かすことができる、DevOps※2が浸透してきています。開発チーム(Development)と運用チーム(Operations)が協同し、ビジネスニーズに沿って、システムを素早く提供するようになっています。
今回のテーマである「NoOps(No Operations)」はシステムに自律的な運用能力を持たせることで、人間による運用を最小限にすることを実現します。クラウド上のインフラを利用して、システムの問題に自動的に対応したり、ツールを用いて追加リリースの手順を自動化することができます。
変化することを前提に
これまでのシステム設計では、「システムの問題をゼロに近づける」「追加修正のない、完璧なアプリケーションをリリースする」ことを目標にしてきました。そのため、問題が起きると、システム担当者が駆けつけシステム修復を実施し、一方アプリケーション機能に追加を行う際には、入念なシステム改修計画、数日にわたるシステム停止期間を設けることを行っていました。しかし、どんなに完璧なシステム設計を目指しても、システムに問題が起きることはあります。また、システム設計や運用を完璧にできるだけの時間や労力をかけられるシステムばかりではありません。
そこで、NoOpsでは、システムに対する問題や修正の発生、新しい機能が必要になることを前提にした運用のための設計にしています。問題発生時や追加リリース時に、決められた修復処理やリリース処理を実施することで、システムが自律的に運用を行います。自律的な運用を想定した例として、問題発生時の自動回復や、追加リリース時の実施手順を下記に示します。
問題発生時
- どのような問題が起こった場合に何をするのかを設定しておく。
- サーバーに問題がないか監視し、問題があれば対処する。
- 自動的に容量を拡張したり、新しくサーバーを作り直すなどの処理を自律的に行い、問題を解決する。
図1:問題発生時の自動回復
追加リリース時
- 新しい機能やバグの修正を既存のプログラムにプログラマが追加する。
- 新しい機能を追加しても問題ないか、自動的にテスト・検証する。
- 検証に問題がなければ、本番にリリースする。問題がある場合は、差し戻される。
(本番へのリリースは、人手を介して、任意のタイミングで実施することも多いが、自動リリースすることも可能である。)
図2:追加リリースの実施手順
NoOpsを実施すると
NoOpsを実施することで、追加リリースの実施手順が明確になるため、変更が容易になります。ビジネスニーズに合わせて、システムの修正や新しい機能の追加を、効率よく実施することができます。 システムの問題発生時の対応も均一になり、担当者によって、対応内容が変わってしまうということがありません。また、システム自身が修復することで、問題が起きるとすぐに修復処理が実行されます。
各クラウドベンダーもNoOpsを実現するツールやノウハウを提供しており、クラウドで自動化を実現するツールや環境も充実してきています。
これらの環境やツールを用いて、問題が起こりそうなことを事前に予測し、自動化の設定や運用手順を改善していくことがこれからの運用チームのタスクになります。
システムが変化することを前提に、人間による運用負荷を最小限にするNoOpsはこれから一般的になるでしょう。
※1:サーバー運用の概念を変える! Infrastructure as Code
https://www.kobelcosys.co.jp/column/itwords/292/
※2:サービスの開発と運用を一体化! ユーザーに素早く価値を届ける「DevOps」
https://www.kobelcosys.co.jp/column/itwords/279/
2018年10月
最新の記事
年別
ITの可能性が満載のメルマガを、お客様への想いと共にお届けします!
Kobelco Systems Letter を購読