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へアラートがきたら手動対応を繰り返してた
- Slackへアラートがきたら手動対応を繰り返してた
解決策
-
AWS Lambda で CloudWatch アラームからの障害対応自動化 - Qiita
- 先駆者というのはいるもんなんだなと感動しました
- 今回対応したのはまさに↓これw
- 先駆者というのはいるもんなんだなと感動しました
対応した結果
- 毎朝、アラートが来てないか Slackを確認する手間もなくなり、ChatOpsでコマンド打つこともなくなったので、ChatOps -> NoOps化できた
- アラートが発生しても自動で解決する状態ができた
これで心置きなくお酒が飲めますね
![]()
開発時、エラーが起きたらメール等での通知っていう設計もありですが
アラートのたびに会社行きたくないので自動復旧させるなら CloudWatch & Lambda でNoOpsかなーと思いました ![]()
アプリちゃんと直すまで手動対応なやつは自動化しちゃおう ![]()
それでこそエンジニア・・・ですよね
![]()
その仕組みが他のPJでも役にたつはず ![]()
まとめ
- 導入する監視ツールと運用(Ops)はセットで考えよう
- アプリの設計も同じ
- アプリの設計も同じ
- 運用時の手動対応をChatOpsで自動化すると会社行かなくていいしスマホ(Slack or Chatwork)で対応できるよ
- さらに、NoOps化すると会社行かなくていいし、自動障害対応できるよ
