ChatOpsとNoOpsとは
ChatOpsとは?
- 「Chat」と「Ops」という2つのワードを掛け合わせて作られた造語
- チャットサービス(Chat)をベースとして、システム運用(Ops)を行うという意味がある
- みなさんご存知の
Slack
、Chatwork
などがチャットサービスにあたります
NoOpsとは?
- 運用のうれしくないことをなくす「No "Uncomfortable" Ops」のこと
- システム運用そのものをなくしてしまう“No Ops” という意味で発言されることもある?
システム運用、監視について私が思うこと
監視ツール、サービスって結構いっぱいある
Zabbix, NewRelic, Mackerel, Prometheus, Nagios, Sensu...etc.
CloudWatch, Datadog, Stackdriver...etc.
なんだこれ、どれ使ったらいいの ってなりません この時に私が考えたこと
どれも基本的にやってくれることってこんなことですよね
- モニタリング(Monitoring)
- ロギング(Logging)
- リソース(CPU負荷、メモリ使用率)レポート
- アラート(Notification)
・・・ん アラートまではやってくれるけど、それで終わり
アプリの設計にも同じこと言える
バッチ開発時、エラーはメール or Slackで通知後して終了ってなりがち
え?じゃあアラート来たら家のパソコン開くの もしくは会社行くの
気持ちよく飲んでる時 とかすごい嫌じゃない
可能なら自動 or リモートで簡単に対応したいですよね
そこで ChatOps と NoOps
まずはChatOpsからお話
Chatサービスをベースとして、システム運用(Ops)を行うことを実践してみました
以前に別の場所で話している資料があるので、こちらをご参照お願いします ぜひ読んでね
続いてNoOpsのお話
NoOps = 運用のうれしくないことをなくす(自動化)するってことと解釈し、実践してみました
アプリの現在の設計が影響して、「定期的に○○しないといけない」とか、「エラー(もしくはアラート)が起きた時に何かしらのOpsをしないといけない」とかってことよくありますよね
監視ツールからアラートがきた時に何かアクションできればいいはず
通知後にアクションできるやついた
それできるよ、そうCloudWatchさんならね(ちょっと古いですが・・・ )
実は皆さんも既に NoOps してるはず
- CPU負荷監視のアラートからのAutoScaling
- SQS監視にて処理速度低下検知アラートからのAutoScaling
- アラート時にLambda動かしてWEBサーバのプロセス再起動など
これだ これでNoOpsしよう
今回のNoOps化したい課題
- アプリケーションにて、S3からファイルのDL(download)を繰り返し、削除されないことでEC2のフルディスクによる障害が発生
- Slackへアラートがきたら手動対応を繰り返してた
解決策
-
AWS Lambda で CloudWatch アラームからの障害対応自動化 - Qiita
- 先駆者というのはいるもんなんだなと感動しました
- 今回対応したのはまさに↓これw
対応した結果
- 毎朝、アラートが来てないか Slackを確認する手間もなくなり、ChatOpsでコマンド打つこともなくなったので、ChatOps -> NoOps化できた
- アラートが発生しても自動で解決する状態ができた
これで心置きなくお酒が飲めますね
開発時、エラーが起きたらメール等での通知っていう設計もありですが
アラートのたびに会社行きたくないので自動復旧させるなら CloudWatch & Lambda でNoOpsかなーと思いました
アプリちゃんと直すまで手動対応なやつは自動化しちゃおう
それでこそエンジニア・・・ですよね
その仕組みが他のPJでも役にたつはず
まとめ
- 導入する監視ツールと運用(Ops)はセットで考えよう
- アプリの設計も同じ
- 運用時の手動対応をChatOpsで自動化すると会社行かなくていいしスマホ(Slack or Chatwork)で対応できるよ
- さらに、NoOps化すると会社行かなくていいし、自動障害対応できるよ