読者です 読者をやめる 読者になる 読者になる

matsukaz's blog

Agile, node.js, ruby, AWS, cocos2d-xなどなどいろいろやってます

トランスリミットのChatOps事情と愉快なbotたち

ChatOps hubot

こんにちは!BrainWars 遊んで頂けてますか?
最近はcocos2d-xを勉強中で、BrainWars内の「ドライブ ザ ギア」というゲームを作りました。
まだ綺麗な実装には程遠い。。。引き続き勉強しまくらねば。

という感じで、インフラとかフロントとか関係なくいろんな技術にチャレンジ出来る楽しい会社です。
弊社に興味ある方、お待ちしております!


本題

さて本題。
弊社では、昨年10月からコミュニケーションツールとしてSlackを採用しています。
そしてSlackの採用とともにChatOpsを推し進めてきました。

ChatOpsって?

ChatOpsって?という方は↓で。

簡単に言うと、チャット上にコマンドラインツールを持ち込んで運用タスクもチャットでやってしまおうというもの。

Chat + Ops = ChatOps

ですね。これによって

  • 誰もが運用に関われる
  • 同じ時間を共有しているので、運用しながら教えられる
  • Chatだけで運用できればいろんなツールを使いこなさなくていい
  • 携帯からでも扱える

というメリットがある、と。
GitHub では Hubot を使ってこれを実現しているそうで。

国内でも、Hubotを使ってChatOpsしている事例は何社かあります。
話題になったところでは

とか。

トランスリミットのChatOps

弊社でもSlack + HubotでChatOpsしています。
ChatOpsって考え方が面白かったのと、管理画面とか作るよりよっぽど効率いいんじゃないかなとの判断です。
特徴的なのは、Hubotが1体ではなく3体いることと、bot間でちょっとした連携してること。
今日は3体それぞれの特徴を説明してみます。

ちなみに全部自分が担当しました。
我ながら良い名前と役割を与えられたんじゃないかなとw

1. tibo

f:id:matsukaz:20150227004751p:plain

1体目はTranslimit Intelligence RoBot の頭文字を取ってtibo(チボ)です。

弊社デザイナーがいろいろ模索してる合間に出てきたキャラを使わせてもらってます。
BrainWarsで今後登場するかは不明w

主な役割は、

  • ネタ系(Google画像検索、Youtube検索、画像にひげ生やす、などのよくあるやつ)
  • hubot-schedule によるメッセージスケジューラ
    • 「観葉植物の水やりしてね」みたいな、この日時になったら通知して欲しいメッセージを登録

ぐらい。みんなのお友達的なbotです。

2. boss

f:id:matsukaz:20150227010027p:plain

2体目はBrainWars Operation Support System の頭文字を取ってboss(ボス)です。

bossはBrainWarsの脳みそアイコン。
BrainWarsの脳みそは、実はbotだったのです(嘘

主な役割は、

  • AndroidのAPK作成(ccacheで高速ビルド。詳しくは こちら
    • GitHub上のタグやブランチやコミットID指定可能
    • Google向けやAmazon向け、デバッグやリリースビルドの指定も可能
    • 作成したAPKはS3にアップロード
    • S3のURLのQRコードを作成してSlack上で表示(Android端末にすぐインストールできるように)
    • ビルド中のログもS3にアップロード
  • ユーザへのプッシュ通知
    • 「5分間隔で100万人ずつプッシュ通知する」みたいな感じで、指定したメッセージのプッシュ通知を飛ばす
  • リソースファイルの本番アップロード
  • 静的コンテンツの本番アップロード

といったところ。
BrainWarsの主要なChatOpsはbossにお任せしています。さすがボス!
ちなみに裏の処理は fabric とか rake tasks を使ってます。
いまはHubot経由で実行してるけど、いつでも別のインタフェース(CIツールとか)に切り替えできるように、という配慮。

面白いのはプッシュ通知の運用。
人手ででももちろんできますが、定期的とか、特定の時間になったらプッシュ通知したいメッセージもあるので、tibo のメッセージスケジューラと連携しています。

tibo「おいboss、12時になったからユーザにプッシュ通知飛ばせや。メッセージはコレな。(# ゚Д゚)」
boss「はい、すみません!すぐ通知させて頂きます!(`・ω・´)ゞ」

というイメージ。ボスなのにw

ボスには今後、もっといろんなお仕事をしてもらう予定です。
補填作業、メンテ振り、プロジェクトの自動ビルド、デプロイ作業などなど。ボスなのにw

3. kira

3体目はkira(キラ)。本名はLight Yagamiです。
画像は自重で。例のノートのアイコンです(ΦωΦ)フフフ…

主な役割は

  • 通報されたユーザのリスト表示
  • 通報されたユーザを尾行する(詳細情報を見る)
  • 通報されたユーザを対処する
    • 見逃す(不対応)
    • 別人にする(名前に問題がある場合に変更)
    • 顔を変える(プロフィール画像に問題がある場合に変更)
    • デ○ノートに名前を書く(BAN)

といったところ。
神気分が浸れるやつです。たまらんヽ(=´▽`=)ノ
こちらも裏の処理には fabric とか rake tasks を使ってます。
bossと一緒にしなかったのは、かなり危険なOpsになるのでセキュリティ面を考えて分けました。

まとめ

本格的にChatOpsに乗り出してからまだ2ヶ月ぐらい?ですが、いまんとこ楽しく出来てます。
ChatOpsにしてよかった点は

  • 管理ツールとか作るよりよっぽど楽
  • いつ誰が実行したかひと目で分かる
  • 思った以上に運用が楽しい!

今後課題だったり考慮が必要な点としては

  • 全部同じチャネルでやるとカオスになる
    • のでチャンネルをいくつか分けてる。bossが活躍するbw-chat-opsとか、kiraが粛清を行うbw-chat-110とか
  • だれでも実行できちゃうので、人が増えてきたら権限管理が必要
  • Slack落ちたら困る
    • fabricやrake tasksのスクリプトを直接実行すればいけるけども
  • hubotの限界
    • botは基本的にステートレスなので、対話形式で実行とかは向いてない(がんばれば実装出来るだろうけど)
    • なのでうかつに実行すると危ないコマンドは、--run オプションとかを指定させて実行確認してる
  • redis-brainを使ったbot複数立ち上げる場合は、必ずredisのキーを変更すること
    • 最初これしてなくて、スケジュール登録したデータがロストしたりして焦った(・_・;


まだまだやりたいことはいっぱいあるので、弊社では引き続きChatOpsで楽しい運用を目指していきます!


WEB+DB PRESS Vol.82

WEB+DB PRESS Vol.82

  • 作者: 山口徹,Jxck,佐々木大輔,横路隆,加来純一,山本伶,大平武志,米川健一,坂本登史文,若原祥正,和久田龍,平栗遵宜,伊藤直也,佐藤太一,高橋俊幸,海野弘成,五嶋壮晃,佐藤歩,吉村総一郎,橋本翔,舘野祐一,中島聡,渡邊恵太,はまちや2,竹原,河合宜文,WEB+DB PRESS編集部
  • 出版社/メーカー: 技術評論社
  • 発売日: 2014/08/23
  • メディア: 大型本
  • この商品を含むブログ (1件) を見る

↑ hubot特集してた