NoOpsという言葉のニュアンスは、「サーバレス」が意味することに似ている。サーバレスの文字通りの意味は「サーバなし」となる。だが実際にはサーバは関与しており、サーバがどこか別の場所にある。これを参考にすると、NoOpsとはある意味、運用の仕事を他人の問題に替えることだと言える。
先進的な運用チームは、インフラのクラウド化と自動化に着目しているはずだ。これらはNoOpsの重要な要素になる。とはいえ全ての運用を自動化することは難しく、全てを自動化する必要もない。クラウド化も同じだ。ITシステムの全体をクラウドインフラに移行する必要はない。一方では、反復するタスクに人員のリソースやコストを当てることは得策ではない。
Netflixが開発したテストツール「Chaos Monkey」を考えてみよう。故意にシステム障害を引き起こすこのツールを使って、エンジニアはシステム障害からの回復力(レジリエンス)を高める仕組みを検討できる。この手法は運用チームの負荷軽減に直結する。ITチームがNoOpsによって実現を目指すのは、この種の回復力と効率性だ。より具体的に言えば、想定通りに稼働しているかどうかを誰かが手作業でチェックする必要のないシステムを選択し、自動化を実装する。
自動化
開発者やエンジニアが目指すべきところは、「自己修復システム」の設計だ。自己修復に失敗したときに明確なアラートを発するシステムの設計も必要になるだろう。自己修復でまず実現しなければならないのは、問題を引き起こす根本原因を自動的に解決することだ。運用への影響は全くなくすことが理想だが、最小限に抑える程度でもいい。
自己修復の実装方法として、次のような手法がある。本番運用に移行したソフトウェアで何らかの障害が発生した場合、エンジニアはその障害を監視するための実行ファイルを、コマンドラインツール「PowerShell」や「Bash」のスクリプトで作成できる。このスクリプトは、特定の問題が再発した際にエンジニアにアラートを発し、同時にシステムを再起動させるための各種のコマンドを実行する。
TechTarget発 先取りITトレンド
米国TechTargetの豊富な記事の中から、最新技術解説や注目分野の製品比較、海外企業のIT製品導入事例などを厳選してお届けします。