Transcript
Page 1: Chat opsをはじめよう!

ChatOpsをはじめよう!おしゃべりbotから業務効率化botの開発例をご紹介!

Page 2: Chat opsをはじめよう!

自己紹介

酒葉真祐子

株式会社ビズリーチ

ビズリーチ事業部

インフラチーム所属

anpkt

Page 3: Chat opsをはじめよう!

以前もこんなイベントもやりました。

Page 4: Chat opsをはじめよう!

ChatOpsをはじめよう!

ChatOpsの使用例をご紹介

メリットありそう!

やってみよう!

Page 5: Chat opsをはじめよう!

ChatOpsとは

Chatでサービスやプログラムと連携することによる業務改善

余計なステップを減らして特定の個人や

エンジニアに依存させないオペレーション

つまりはチャットを通じて様々なオペレーション改善を

しちゃいましょうということ。

Page 6: Chat opsをはじめよう!

ChatOpsとは

ビルドやデプロイの管理

外部サービスとの中継

参照コマンドの発行

通知

リアル(ゴミ出し担当・目覚まし)

Page 7: Chat opsをはじめよう!

ChatOpsとは

共通インターフェース常に立ち上げているツールを使える。

ただしコマンドなどが増えると運用コストは結局増加しがち。

通知を受け取る・動作をするためのインターフェースが統一できる。

応答性チャットは常時利用している可能性が高い。

素早く通知などを検知して対応ができる 。

共有チーム内で何をやったかの可視化できる。

記録明示的に記録をするという手続きをしないでも作業記録が残る。

Page 8: Chat opsをはじめよう!

slack + hubotじゃなくてもいけます

チャットツールはChatworkやHipchatでもできます。

ボットツールも最近ではAWS Lambdaでもできます。

なんならBotをつくらなくても

チャットをつかってオペレーション改善すればChatOps。

Page 9: Chat opsをはじめよう!

チーム内ツィッターはじめました

こちらの真似をしてつぶやきChatOps。

http://qiita.com/m_mizutani/items/f7fa7b1d1c077b139f98

Page 10: Chat opsをはじめよう!

BizReachでのChatOps

Chatwork + Original Bot Slack + Hubot

Page 11: Chat opsをはじめよう!

導入の背景

自動化したい!というほんのりな意思な意思が集まった。

本格的にチャットボットを導入する気はない。

それぞれの書いた単発スクリプトを配置。

Page 12: Chat opsをはじめよう!

Chatwork + Original Bot

Page 13: Chat opsをはじめよう!

Chatwork + Original Botリリース管理シートの発行

TasksTasksTasksTasks

Page 14: Chat opsをはじめよう!

Chatwork + Original Botサーバの負荷状況・ビルド結果などをつぶやく

Page 15: Chat opsをはじめよう!

Chatwork + Original Bot定時のお知らせ

ミッション・ビジョンをつぶやく

Page 16: Chat opsをはじめよう!

インフラチームもこれにのっかるのか??

誰でもでも改善できるようにしたい。

使いたい人が自由に使えるようにしたい。

今まで可視化していなかったものも共有できるようにしたい。

Page 17: Chat opsをはじめよう!

Hubot + slackの導入

Page 18: Chat opsをはじめよう!

Hubotとは

GitHub によってつくられた Bot です。

CoffeeScript で書かれています。

OSS であり、HerokuやAWSなどの環境に簡単にデプロイできます。

デプロイをはじめとした タスクの自動化が可能。

独自のスクリプトも追加できます。

アダプター によって異なるチャットにも対応できます。

メジャーな機能のスクリプトは一通り揃っています。

公式サイト ( hubot.github.com )

Page 19: Chat opsをはじめよう!

hubot-scripts

Page 20: Chat opsをはじめよう!

うちのBotのご紹介

mobot(通称もぼさん)

マイペース

あんまり融通がきかない

ツンデレ(ツン多め)

成長期

みんなのために頑張っている

Page 21: Chat opsをはじめよう!

Mobot + Slack (Github)chat経由でdevelopからmasterへのPR作成。

マージ済みを一覧化してパッと見てわかるようにした

PRをわざわざ作成する手間が省けた

Page 22: Chat opsをはじめよう!

MobotのGithub連携

https://github.com/uiureo/github-pr-release

Page 23: Chat opsをはじめよう!

Mobot + Slack (Jenkins)チャット経由で特定のジョブのみを実行可能になりました。

再ビルドが簡単にできるようになりました。

ジョブの実行者の履歴もできました。

ただし、デプロイし放題はさすがに危ないのでまだ一部のみ。

Page 24: Chat opsをはじめよう!

MobotのJenkins連携

公式でサンプルが提供されています。

ただし、jenkins側でボットにどのジョブを実行させるかの権限設定が必要。

https://github.com/github/hubot-scripts/blob/master/src/scripts/jenkins.coffee

Page 25: Chat opsをはじめよう!

Mobot + Slack (JIRA)チケットの作成・更新が簡単になりました。

google spread sheetやgithubと連携すればリリース物の管理もより容易になる。

Page 27: Chat opsをはじめよう!

コマンド実行の可視化

ansible/terraformの実行プラットフォーム

Page 28: Chat opsをはじめよう!

チームのメンタルケア

Page 29: Chat opsをはじめよう!

課題点

セキュリティ面の向上

本番に向けてコマンド実行し放題は絶対さけたい

実装方針のバラ付き

ES6とcoffee scriptのバラ付き

コードが冗長になってしまう問題

モジュール化がたりない

Page 30: Chat opsをはじめよう!

よかったこと!

運用スピードアップ!

数行のコードやプラグインを活用することで業務が圧倒的に改善される。

単純作業・定型化されている業務は自動化するべき。

こころに余裕ができる

エラーをはかれても腹がたたない。

チームの雰囲気づくり

チームのコミュニケーションが活発になります。

オペレーションが楽しくなる!

Page 31: Chat opsをはじめよう!

今後もやりたいこと

複数の外部サービスを連携してもっと便利に

JIRA + SpreadSheet

Github + JIRA etc…

使えるひと、作れる人の拡大

開発チームとの連携

脱・属人化

Page 32: Chat opsをはじめよう!

DEMO

必要なもの

node.js

slackチーム

herokuアカウント

githubアカウント

※nodeがインストールされ、hubotが動く環境である前提です。

Page 33: Chat opsをはじめよう!

install hubot

Page 34: Chat opsをはじめよう!

hubot-scripts

hubotをインストールした時点でデフォルトで提供されます。

hubot-scripts.jsonに使いたいスクリプトを記載して初めて使えます。

今回はgithub-activity.coffeeを使用します。

Page 35: Chat opsをはじめよう!

Deploy to heroku

Page 36: Chat opsをはじめよう!

Connect to Slack

Page 37: Chat opsをはじめよう!

Connect to Github

※package.jsonにdate-utils/githubotを記載してください。

Page 38: Chat opsをはじめよう!

よくきくバッドノウハウ

通知部屋。そして誰も見なくなった・・・

周知不足

企画倒れ。何も始まらない。

http://qiita.com/kotatsu360/items/4fd049de3a9137981e6a

Page 39: Chat opsをはじめよう!

愛されるBotは開発が楽しくなる

ぶれないキャラ設定大事。

ほどよくふざけてみる。

会話のネタになるおしゃべりBotはチームからも愛される。

和む、なんか話しかけたくなると思ってもらえたら使ってもらえる。

Page 40: Chat opsをはじめよう!

変えたい業務フローを考える

本当に自動化する必要があるか。

共通に感じている課題なのか。

通知すべきメッセージの制御は大事。

仕様や手順の周知はしっかりすること。

Page 41: Chat opsをはじめよう!

初期から真面目に開発すること

何するスクリプトかよくわからんを防ぐ。

スクリプトを読んですぐわかる状態が理想。

ドキュメント化は大事だけど更新率が。。。

モジュール化も最初から進めていくとGood。

開発方針は始めに決めたい。

Page 42: Chat opsをはじめよう!

ご清聴ありがとうございました!


Top Related