ChatOpsをはじめよう! おしゃべりbotから業務効率化botの開発例をご紹介!
ChatOpsをはじめよう!おしゃべりbotから業務効率化botの開発例をご紹介!
自己紹介
酒葉真祐子
株式会社ビズリーチ
ビズリーチ事業部
インフラチーム所属
anpkt
以前もこんなイベントもやりました。
ChatOpsをはじめよう!
ChatOpsの使用例をご紹介
メリットありそう!
やってみよう!
ChatOpsとは
Chatでサービスやプログラムと連携することによる業務改善
余計なステップを減らして特定の個人や
エンジニアに依存させないオペレーション
つまりはチャットを通じて様々なオペレーション改善を
しちゃいましょうということ。
ChatOpsとは
ビルドやデプロイの管理
外部サービスとの中継
参照コマンドの発行
通知
リアル(ゴミ出し担当・目覚まし)
ChatOpsとは
共通インターフェース常に立ち上げているツールを使える。
ただしコマンドなどが増えると運用コストは結局増加しがち。
通知を受け取る・動作をするためのインターフェースが統一できる。
応答性チャットは常時利用している可能性が高い。
素早く通知などを検知して対応ができる 。
共有チーム内で何をやったかの可視化できる。
記録明示的に記録をするという手続きをしないでも作業記録が残る。
slack + hubotじゃなくてもいけます
チャットツールはChatworkやHipchatでもできます。
ボットツールも最近ではAWS Lambdaでもできます。
なんならBotをつくらなくても
チャットをつかってオペレーション改善すればChatOps。
チーム内ツィッターはじめました
こちらの真似をしてつぶやきChatOps。
http://qiita.com/m_mizutani/items/f7fa7b1d1c077b139f98
BizReachでのChatOps
Chatwork + Original Bot Slack + Hubot
導入の背景
自動化したい!というほんのりな意思な意思が集まった。
本格的にチャットボットを導入する気はない。
それぞれの書いた単発スクリプトを配置。
Chatwork + Original Bot
Chatwork + Original Botリリース管理シートの発行
TasksTasksTasksTasks
Chatwork + Original Botサーバの負荷状況・ビルド結果などをつぶやく
Chatwork + Original Bot定時のお知らせ
ミッション・ビジョンをつぶやく
インフラチームもこれにのっかるのか??
誰でもでも改善できるようにしたい。
使いたい人が自由に使えるようにしたい。
今まで可視化していなかったものも共有できるようにしたい。
Hubot + slackの導入
Hubotとは
GitHub によってつくられた Bot です。
CoffeeScript で書かれています。
OSS であり、HerokuやAWSなどの環境に簡単にデプロイできます。
デプロイをはじめとした タスクの自動化が可能。
独自のスクリプトも追加できます。
アダプター によって異なるチャットにも対応できます。
メジャーな機能のスクリプトは一通り揃っています。
公式サイト ( hubot.github.com )
hubot-scripts
うちのBotのご紹介
mobot(通称もぼさん)
マイペース
あんまり融通がきかない
ツンデレ(ツン多め)
成長期
みんなのために頑張っている
Mobot + Slack (Github)chat経由でdevelopからmasterへのPR作成。
マージ済みを一覧化してパッと見てわかるようにした
PRをわざわざ作成する手間が省けた
MobotのGithub連携
https://github.com/uiureo/github-pr-release
Mobot + Slack (Jenkins)チャット経由で特定のジョブのみを実行可能になりました。
再ビルドが簡単にできるようになりました。
ジョブの実行者の履歴もできました。
ただし、デプロイし放題はさすがに危ないのでまだ一部のみ。
MobotのJenkins連携
公式でサンプルが提供されています。
ただし、jenkins側でボットにどのジョブを実行させるかの権限設定が必要。
https://github.com/github/hubot-scripts/blob/master/src/scripts/jenkins.coffee
Mobot + Slack (JIRA)チケットの作成・更新が簡単になりました。
google spread sheetやgithubと連携すればリリース物の管理もより容易になる。
MobotのJIRA連携
https://github.com/github/hubot-scripts/blob/master/src/scripts/jira-issues.coffee
コマンド実行の可視化
ansible/terraformの実行プラットフォーム
チームのメンタルケア
課題点
セキュリティ面の向上
本番に向けてコマンド実行し放題は絶対さけたい
実装方針のバラ付き
ES6とcoffee scriptのバラ付き
コードが冗長になってしまう問題
モジュール化がたりない
よかったこと!
運用スピードアップ!
数行のコードやプラグインを活用することで業務が圧倒的に改善される。
単純作業・定型化されている業務は自動化するべき。
こころに余裕ができる
エラーをはかれても腹がたたない。
チームの雰囲気づくり
チームのコミュニケーションが活発になります。
オペレーションが楽しくなる!
今後もやりたいこと
複数の外部サービスを連携してもっと便利に
JIRA + SpreadSheet
Github + JIRA etc…
使えるひと、作れる人の拡大
開発チームとの連携
脱・属人化
DEMO
必要なもの
node.js
slackチーム
herokuアカウント
githubアカウント
※nodeがインストールされ、hubotが動く環境である前提です。
install hubot
hubot-scripts
hubotをインストールした時点でデフォルトで提供されます。
hubot-scripts.jsonに使いたいスクリプトを記載して初めて使えます。
今回はgithub-activity.coffeeを使用します。
Deploy to heroku
Connect to Slack
Connect to Github
※package.jsonにdate-utils/githubotを記載してください。
よくきくバッドノウハウ
通知部屋。そして誰も見なくなった・・・
周知不足
企画倒れ。何も始まらない。
http://qiita.com/kotatsu360/items/4fd049de3a9137981e6a
愛されるBotは開発が楽しくなる
ぶれないキャラ設定大事。
ほどよくふざけてみる。
会話のネタになるおしゃべりBotはチームからも愛される。
和む、なんか話しかけたくなると思ってもらえたら使ってもらえる。
変えたい業務フローを考える
本当に自動化する必要があるか。
共通に感じている課題なのか。
通知すべきメッセージの制御は大事。
仕様や手順の周知はしっかりすること。
初期から真面目に開発すること
何するスクリプトかよくわからんを防ぐ。
スクリプトを読んですぐわかる状態が理想。
ドキュメント化は大事だけど更新率が。。。
モジュール化も最初から進めていくとGood。
開発方針は始めに決めたい。
ご清聴ありがとうございました!