Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.
Translimitの
ChatOps事情
@matsukaz
2015.04.28
〜 愉快なbotたち 〜
@matsukaz
松下 雅和
株式会社トランスリミット
CTO
• インフラ全般 (AWS, Chef, BigQuery)
• サーバ (Rails, Node.js)
• フロント (cocos2d-x, C++)
• 開発/運用支援 (Docker, Adminサーバ)
• ChatOps推進 (sl...
書籍
アジェンダ
ChatOpsとは
愉快なbotたち
ChatOps導入に向けて
BrainWars概要
ChatOpsの取り組み
ChatOpsとは
愉快なbotたち
ChatOps導入に向けて
BrainWars概要
ChatOpsの取り組み
GitHub社が
生み出した
新たなOpsスタイル
Chat + Ops
Chat上に
CLIを持ち込んで、
運用もChatで行う
どうやれば
導入できるの?
GitHub社が
独自に開発した
Hubot!
様々な
サービスと
アダプター連携
• Shell
• Campfire
• Flow dock
• HipChat
• IRC
• Party chat
• Talker
• Twill
• Twitter
• XMPP
• Talk
• Yammer
• Skype
• Ja...
• 誰もが運用に関われる
• 運用する = 教えられる、共有できる
• 複雑な運用ツールを隠せる
• 携帯からでも操作可能
ChatOpsのメリット
(GitHub社の人いわく)
GitHub社の例
ほとんど
CLIをそのまま
持ち込んでいる
https://speakerdeck.com/jnewland/chatops-at-github
詳しくはこちら
ほんとに導入する
価値はある?
Opsの内容は
組織や環境、
扱うプロダクトに
よっても異なる
あらゆる環境に
導入できる
スタイルでは
ないかも?
弊社は社長が
エンジニア出身
(まだ開発もしてる)
メンバーも9割が
エンジニア
(他はデザイナー)
エンジニア文化が
根付いた環境
だからこそ
導入しやすかった
弊社ならではの
ChatOpsを
ご紹介します
ChatOpsとは
愉快なbotたち
ChatOps導入に向けて
BrainWars概要
ChatOpsの取り組み
ゲームの流れ
ホーム
バトル開始!
同一リーグの
ユーザと対戦
マッチング
スタンプによる
コミュニケーション
3ラウンド・バトル
(現時点で)
26種類のゲームの
中からランダムで決定
x3
1ラウンド
20秒バトル
バトル結果
3ラウンドの
合計点数で勝敗決定
各種SNSへ
結果を共有
毎週日曜24時に
ランキング確定と
リーグが昇降格
ランキング
面白そうでしょ?
(・∀・)
11ヶ月で
1200万突破!
海外ユーザ比率
95.4%
男女比ほぼ同じ
20代が約半数
AKB48もハマる!
乃木坂46や
芸人まで
創業者たち
( ;゚Д゚)。oO(ラーメン屋か…?)
高場社長
工藤CTO
デザイナー
花城氏
BrainWarsの
アーキテクチャ
MySQL
ELB
EC2
EC2
S3
OpsWorks
ElastiCache
(Redis)
DynamoDB
RDS
(MySQL)
SES SNS SQS
EC2
SNS
Route 53
Slack
リアルタイム対戦
Socket ...
MySQL
ELB
EC2
EC2
S3
OpsWorks
ElastiCache
(Redis)
DynamoDB
RDS
(MySQL)
SES SNS SQS
EC2
ゴースト用
バトルログ
ランキング,
一時データ
プロフィール画像,
...
ChatOpsの取り組み
ChatOpsとは
愉快なbotたち
ChatOps導入に向けて
BrainWars概要
2014年10月
チャットを移行
「Slackって外部サービス連携が

 いろいろできるみたいですね。」
「みたいですねー。
 せっかくSlackに移行したんだし、
 これを機にChatOpsとかどです?
 管理画面を増やしていくより
 よっぽど効率的かも。
 (botに命令と...
導入決定!
ガンバリマス!
基本方針
• CLIというよりツールとして利用
• 複雑な処理はFabricかrake tasksで

(Hubotに非依存 & Rails実装の活用)
• ステートレスなので対話形式は不可
• 危険なコマンドは--run指定必須に
• 役割別...
基本方針
• SlackのチャネルもOps内容で分離

(Opsに関われるユーザを限定するため

招待制のprivate groupを活用)
それぞれにOpsを
担当するbotを配置
基本方針
• Slack Integrationも活用

(GitHub、Google Driveなど)
• botに愛を (役割に合わせて命名)
• ネタものはほどほどに
• Slack無料枠に頑張って収める…
MySQL
ELB
EC2
EC2
S3
OpsWorks
ElastiCache
(Redis)
DynamoDB
RDS
(MySQL)
SES SNS SQS
EC2
SNS
Route 53
Slack
プッシュ通知
リアルタイム対戦
...
ChatOpsの取り組み
ChatOpsとは
愉快なbotたち
ChatOps導入に向けて
BrainWars概要
「みんなの勤怠を
 しっかり管理!
 きょうも1日
 励みましょう 」
名付け親は社長…(;´Д`)
担当チャネル : #timesheets
① 修行僧
社長の若かり頃の姿
Facebookの写真もコレ
正直止めt(自重
役割
• 勤怠管理bot「みやもとさん(*)」を改良
• Google Spreadsheetsに勤怠を記録
http://blog.masuidrive.jp/2014/10/19/miyamoto-san/(*)
「仕事ばっか
 してないで
 オレと遊ぼうぜ」
② tibo
#random, #bw-chat-ops,
etc…
担当チャネル :
(Translimit Intelligence Robot)
BrainWarsの没キャラ
個人的に好きだったので
使うことにした
「ちぼ」かわいいよ
役割
• ネタ系もろもろ
• コーヒーメーカー掃除当番決め
役割
• メッセージスケジューラ
• cron/日時指定(*)
https://github.com/matsukaz/hubot-schedule(*)
• 実は他のbotを呼び出せるチカラが…!

(詳しくは後述)
日時指定
日時になったら...
Slack
Admin Server
tiboの世界
指定日時に
メッセージ
tibo
スケジュール
登録
EC2
「開発支援なら
 ワタシに任せなサイ」
#bw-chat-ops担当チャネル :
(BrainWars Operation Support System)
BrainWarsそのもの
開発タスクの全てを扱う
我らのボス!カコイー!
でもtiboは苦手らしい…
③ boss
役割
• Androidビルド
• コミット, env, platformを指定

(ccacheを効率よく使えるので

個人マシンより遥かに高速ビルド!)
役割
apk生成
s3にアップロード
apkダウンロード用の
QRコード生成
役割
• DEV環境デプロイ
• コミット, マイグレーションを指定
ビルド対象変更
デプロイ
役割
• ユーザへのプッシュ通知
• 全ユーザを100のグループに分割
• 日本語/英語メッセージ, 同時送信数,

送信間隔を指定 (負荷対策)
• 手動実行はほとんどしていない
• tiboのメッセージスケジューラを

利用してtibo →...
役割
• tiboにメッセージをスケジューリング
• 時間になったらtiboがbossに命令
通知よろ
怠けんじゃ
ねーぞ
ワ、ワカリマシタ!
(;´Д`)
役割
• その他
• 静的コンテンツのS3アップロード
• 本番のメンテ振り (開発中)
• 対応予定
• 本番デプロイ
• iOSビルド
• クラッシュレポート分析
EC2
Slack
Admin Server
bossの世界
SNS
OpsWorks
S3
EC2
スケジュール
登録
指定日時に
通知メッセージ
tibo boss
プッシュ通知
デプロイ
Android
ビルド
APKを配置 APK
静的...
「アラートきたで〜
 はよ対応せんと
 道頓堀に沈めるで」
#tl-alert担当チャネル :
システムアラートを
通知してくれるbot
ほんとは顔も見たくない
弊社のテストアカウント
「虎州太郎」は実は…
(Translimit Alerting Robot)
④ taro
役割
• CloudWatchのALARMをSlackに表示
taroの世界
CloudWatch SNS lambda
アラート
通知
Slack
taro
ML送信
taroとして
メッセージ
「真実は一つ!」
#bw-chat-cs担当チャネル :
見た目は子供、頭脳はbot
ユーザの問合せに対応
「課金履歴」という
ただ1つの真実を守りぬく
⑤ conan
役割
• ユーザの課金履歴を一覧表示
• 購入処理に失敗したユーザに対し、

コインやハートを付与
Slack
Admin Server
conanの世界
conan
MySQL
RDS
(MySQL)
課金履歴を
表示
コインや
ハート付与
EC2
「僕は新世界の
 神となる!」
#bw-chat-110担当チャネル :
ユーザの通報対応用bot
通報されたユーザに
裁きを下す
暴走に要注意…
⑥ kira
役割
• 通報されたユーザを一覧表示
• 詳細な通報内容を表示
• ユーザの名前を強制変更
• ユーザのプロフィール画像を削除
• ユーザをBAN
Slack
Admin Server
kiraの世界
kira
MySQL
RDS
(MySQL)
被通報者一覧表示,
通報内容詳細表示,
名前変更, BAN 画像削除
S3
EC2
ChatOpsとは
愉快なbotたち
ChatOps導入に向けて
BrainWars概要
ChatOpsの取り組み
GitHub社と弊社は
Opsの内容が
全く違う
同じやり方をしても
きっと失敗する
弊社ならではの
ChatOps!
得られたメリット
• 管理ツールを作るより早くて簡単
• 必要なものをすぐに用意できる
• Slackでほとんどの作業が完結
• 人が増えたときも、チャネルに

入れるだけでOpsを理解してもらえる
• 適度なネタ系botは会話を活発化
注意点
• hubotがまだ安定しきれてない
• 特にhubot-brainまわりは危険

(変なライブラリを導入すると

永続化してたデータが消える)
• hubot-slackも通信が不安定になると

勝手にプロセスを再立ち上げする
• botが勝手に実行されないように

セキュリティ面の考慮が必要

(Slackのprivate groupにしたが、

実はbotにDMしても実行可能…)
• ワークフローやパラメータが複雑な

ジョブ実行は不向き
注意点
御社ならではの
ChatOpsを
探してみてください
もしくは
うちで一緒にw
Happy
ChatOps!!!
ただいま
メンバーを募集中!
• エンジニア
• プロデューサー
• CFO/COO候補
• デザイナー
• プランナー
5億DL〜 17億DL〜5億DL〜
世界をターゲットに
DL数で億超えを目指す
社内勉強会 T-Cube
(Translimit Tech Talk)
バランスボールや
スタンディングデスク
お待ちしてます!
TranslimitのChatOps事情と愉快なbotたち
Upcoming SlideShare
Loading in …5
×

TranslimitのChatOps事情と愉快なbotたち

16,282 views

Published on

DevOps合同勉強会【トランスリミット×ビズリーチ】で話した内容です。
http://d-cube.connpass.com/event/13415/

Published in: Technology
  • Be the first to comment

TranslimitのChatOps事情と愉快なbotたち

  1. 1. Translimitの ChatOps事情 @matsukaz 2015.04.28 〜 愉快なbotたち 〜
  2. 2. @matsukaz 松下 雅和 株式会社トランスリミット CTO
  3. 3. • インフラ全般 (AWS, Chef, BigQuery) • サーバ (Rails, Node.js) • フロント (cocos2d-x, C++) • 開発/運用支援 (Docker, Adminサーバ) • ChatOps推進 (slack, hubot) • その他必要なことはなんでも
 (コーヒー豆購入, 卓球王者,
 バランスボール&スタンディングデスク布教) 主な担当
  4. 4. 書籍
  5. 5. アジェンダ
  6. 6. ChatOpsとは 愉快なbotたち ChatOps導入に向けて BrainWars概要 ChatOpsの取り組み
  7. 7. ChatOpsとは 愉快なbotたち ChatOps導入に向けて BrainWars概要 ChatOpsの取り組み
  8. 8. GitHub社が 生み出した 新たなOpsスタイル
  9. 9. Chat + Ops
  10. 10. Chat上に CLIを持ち込んで、 運用もChatで行う
  11. 11. どうやれば 導入できるの?
  12. 12. GitHub社が 独自に開発した Hubot!
  13. 13. 様々な サービスと アダプター連携
  14. 14. • Shell • Campfire • Flow dock • HipChat • IRC • Party chat • Talker • Twill • Twitter • XMPP • Talk • Yammer • Skype • Jabbar • iMessage • Hall • ChatWork • QQ • AIM • Slack • Lingr • Gitter • Proxy • Visual Studio
 Online • Type talk • Fleep • Let’s Chat • VictorOps • 独自開発も可能
  15. 15. • 誰もが運用に関われる • 運用する = 教えられる、共有できる • 複雑な運用ツールを隠せる • 携帯からでも操作可能 ChatOpsのメリット (GitHub社の人いわく)
  16. 16. GitHub社の例
  17. 17. ほとんど CLIをそのまま 持ち込んでいる
  18. 18. https://speakerdeck.com/jnewland/chatops-at-github 詳しくはこちら
  19. 19. ほんとに導入する 価値はある?
  20. 20. Opsの内容は 組織や環境、 扱うプロダクトに よっても異なる
  21. 21. あらゆる環境に 導入できる スタイルでは ないかも?
  22. 22. 弊社は社長が エンジニア出身 (まだ開発もしてる)
  23. 23. メンバーも9割が エンジニア (他はデザイナー)
  24. 24. エンジニア文化が 根付いた環境 だからこそ 導入しやすかった
  25. 25. 弊社ならではの ChatOpsを ご紹介します
  26. 26. ChatOpsとは 愉快なbotたち ChatOps導入に向けて BrainWars概要 ChatOpsの取り組み
  27. 27. ゲームの流れ
  28. 28. ホーム バトル開始!
  29. 29. 同一リーグの ユーザと対戦 マッチング
  30. 30. スタンプによる コミュニケーション 3ラウンド・バトル (現時点で) 26種類のゲームの 中からランダムで決定 x3 1ラウンド 20秒バトル
  31. 31. バトル結果 3ラウンドの 合計点数で勝敗決定 各種SNSへ 結果を共有
  32. 32. 毎週日曜24時に ランキング確定と リーグが昇降格 ランキング
  33. 33. 面白そうでしょ? (・∀・)
  34. 34. 11ヶ月で 1200万突破!
  35. 35. 海外ユーザ比率 95.4%
  36. 36. 男女比ほぼ同じ 20代が約半数
  37. 37. AKB48もハマる! 乃木坂46や 芸人まで
  38. 38. 創業者たち ( ;゚Д゚)。oO(ラーメン屋か…?) 高場社長 工藤CTO デザイナー 花城氏
  39. 39. BrainWarsの アーキテクチャ
  40. 40. MySQL ELB EC2 EC2 S3 OpsWorks ElastiCache (Redis) DynamoDB RDS (MySQL) SES SNS SQS EC2 SNS Route 53 Slack リアルタイム対戦 Socket Server API Server Admin Server APK CloudWatch SNS lambda Google BigQuery 全体構成 x6
  41. 41. MySQL ELB EC2 EC2 S3 OpsWorks ElastiCache (Redis) DynamoDB RDS (MySQL) SES SNS SQS EC2 ゴースト用 バトルログ ランキング, 一時データ プロフィール画像, 言語ファイル, etc SNS Route 53 Slack プッシュ通知 リアルタイム対戦 Socket Server API Server Admin Server APK ビルド 不正画像削除 CloudWatchユーザ データ メアド登録 メール失敗時 Dynamic DynamoDB Auto-Scale 名前変更, BAN, コイン付与, … SNS lambda 各種スクリプト アラート 通知 Google BigQuery 行動 ログ 全体構成 x6 AutoScale devicetoken登録 デプロイ
  42. 42. ChatOpsの取り組み ChatOpsとは 愉快なbotたち ChatOps導入に向けて BrainWars概要
  43. 43. 2014年10月 チャットを移行
  44. 44. 「Slackって外部サービス連携が
  いろいろできるみたいですね。」 「みたいですねー。  せっかくSlackに移行したんだし、  これを機にChatOpsとかどです?  管理画面を増やしていくより  よっぽど効率的かも。  (botに命令とかカッコいいし)」 「いいですね、それ。
  やりましょう!」
  45. 45. 導入決定! ガンバリマス!
  46. 46. 基本方針 • CLIというよりツールとして利用 • 複雑な処理はFabricかrake tasksで
 (Hubotに非依存 & Rails実装の活用) • ステートレスなので対話形式は不可 • 危険なコマンドは--run指定必須に • 役割別にbotを分離, 現状6体
 (管理上 & セキュリティ面の考慮)
  47. 47. 基本方針 • SlackのチャネルもOps内容で分離
 (Opsに関われるユーザを限定するため
 招待制のprivate groupを活用) それぞれにOpsを 担当するbotを配置
  48. 48. 基本方針 • Slack Integrationも活用
 (GitHub、Google Driveなど) • botに愛を (役割に合わせて命名) • ネタものはほどほどに • Slack無料枠に頑張って収める…
  49. 49. MySQL ELB EC2 EC2 S3 OpsWorks ElastiCache (Redis) DynamoDB RDS (MySQL) SES SNS SQS EC2 SNS Route 53 Slack プッシュ通知 リアルタイム対戦 Socket Server API Server Admin Server APK ビルド 不正画像削除 CloudWatch Dynamic DynamoDB Auto-Scale 名前変更, BAN, コイン付与, … SNS lambda 各種スクリプト アラート 通知 Google BigQuery ChatOpsに関わる部分 x6 デプロイ
  50. 50. ChatOpsの取り組み ChatOpsとは 愉快なbotたち ChatOps導入に向けて BrainWars概要
  51. 51. 「みんなの勤怠を  しっかり管理!  きょうも1日  励みましょう 」
  52. 52. 名付け親は社長…(;´Д`) 担当チャネル : #timesheets ① 修行僧 社長の若かり頃の姿 Facebookの写真もコレ 正直止めt(自重
  53. 53. 役割 • 勤怠管理bot「みやもとさん(*)」を改良 • Google Spreadsheetsに勤怠を記録 http://blog.masuidrive.jp/2014/10/19/miyamoto-san/(*)
  54. 54. 「仕事ばっか  してないで  オレと遊ぼうぜ」
  55. 55. ② tibo #random, #bw-chat-ops, etc… 担当チャネル : (Translimit Intelligence Robot) BrainWarsの没キャラ 個人的に好きだったので 使うことにした 「ちぼ」かわいいよ
  56. 56. 役割 • ネタ系もろもろ • コーヒーメーカー掃除当番決め
  57. 57. 役割 • メッセージスケジューラ • cron/日時指定(*) https://github.com/matsukaz/hubot-schedule(*) • 実は他のbotを呼び出せるチカラが…!
 (詳しくは後述) 日時指定 日時になったらメッセージ
  58. 58. Slack Admin Server tiboの世界 指定日時に メッセージ tibo スケジュール 登録 EC2
  59. 59. 「開発支援なら  ワタシに任せなサイ」
  60. 60. #bw-chat-ops担当チャネル : (BrainWars Operation Support System) BrainWarsそのもの 開発タスクの全てを扱う 我らのボス!カコイー! でもtiboは苦手らしい… ③ boss
  61. 61. 役割 • Androidビルド • コミット, env, platformを指定
 (ccacheを効率よく使えるので
 個人マシンより遥かに高速ビルド!)
  62. 62. 役割 apk生成 s3にアップロード apkダウンロード用の QRコード生成
  63. 63. 役割 • DEV環境デプロイ • コミット, マイグレーションを指定 ビルド対象変更 デプロイ
  64. 64. 役割 • ユーザへのプッシュ通知 • 全ユーザを100のグループに分割 • 日本語/英語メッセージ, 同時送信数,
 送信間隔を指定 (負荷対策) • 手動実行はほとんどしていない • tiboのメッセージスケジューラを
 利用してtibo → boss連携!
  65. 65. 役割 • tiboにメッセージをスケジューリング • 時間になったらtiboがbossに命令 通知よろ 怠けんじゃ ねーぞ ワ、ワカリマシタ! (;´Д`)
  66. 66. 役割 • その他 • 静的コンテンツのS3アップロード • 本番のメンテ振り (開発中) • 対応予定 • 本番デプロイ • iOSビルド • クラッシュレポート分析
  67. 67. EC2 Slack Admin Server bossの世界 SNS OpsWorks S3 EC2 スケジュール 登録 指定日時に 通知メッセージ tibo boss プッシュ通知 デプロイ Android ビルド APKを配置 APK 静的コンテンツ配置 x1200万
  68. 68. 「アラートきたで〜  はよ対応せんと  道頓堀に沈めるで」
  69. 69. #tl-alert担当チャネル : システムアラートを 通知してくれるbot ほんとは顔も見たくない 弊社のテストアカウント 「虎州太郎」は実は… (Translimit Alerting Robot) ④ taro
  70. 70. 役割 • CloudWatchのALARMをSlackに表示
  71. 71. taroの世界 CloudWatch SNS lambda アラート 通知 Slack taro ML送信 taroとして メッセージ
  72. 72. 「真実は一つ!」
  73. 73. #bw-chat-cs担当チャネル : 見た目は子供、頭脳はbot ユーザの問合せに対応 「課金履歴」という ただ1つの真実を守りぬく ⑤ conan
  74. 74. 役割 • ユーザの課金履歴を一覧表示 • 購入処理に失敗したユーザに対し、
 コインやハートを付与
  75. 75. Slack Admin Server conanの世界 conan MySQL RDS (MySQL) 課金履歴を 表示 コインや ハート付与 EC2
  76. 76. 「僕は新世界の  神となる!」
  77. 77. #bw-chat-110担当チャネル : ユーザの通報対応用bot 通報されたユーザに 裁きを下す 暴走に要注意… ⑥ kira
  78. 78. 役割 • 通報されたユーザを一覧表示 • 詳細な通報内容を表示 • ユーザの名前を強制変更 • ユーザのプロフィール画像を削除 • ユーザをBAN
  79. 79. Slack Admin Server kiraの世界 kira MySQL RDS (MySQL) 被通報者一覧表示, 通報内容詳細表示, 名前変更, BAN 画像削除 S3 EC2
  80. 80. ChatOpsとは 愉快なbotたち ChatOps導入に向けて BrainWars概要 ChatOpsの取り組み
  81. 81. GitHub社と弊社は Opsの内容が 全く違う
  82. 82. 同じやり方をしても きっと失敗する
  83. 83. 弊社ならではの ChatOps!
  84. 84. 得られたメリット • 管理ツールを作るより早くて簡単 • 必要なものをすぐに用意できる • Slackでほとんどの作業が完結 • 人が増えたときも、チャネルに
 入れるだけでOpsを理解してもらえる • 適度なネタ系botは会話を活発化
  85. 85. 注意点 • hubotがまだ安定しきれてない • 特にhubot-brainまわりは危険
 (変なライブラリを導入すると
 永続化してたデータが消える) • hubot-slackも通信が不安定になると
 勝手にプロセスを再立ち上げする
  86. 86. • botが勝手に実行されないように
 セキュリティ面の考慮が必要
 (Slackのprivate groupにしたが、
 実はbotにDMしても実行可能…) • ワークフローやパラメータが複雑な
 ジョブ実行は不向き 注意点
  87. 87. 御社ならではの ChatOpsを 探してみてください
  88. 88. もしくは うちで一緒にw
  89. 89. Happy ChatOps!!!
  90. 90. ただいま メンバーを募集中! • エンジニア • プロデューサー • CFO/COO候補 • デザイナー • プランナー
  91. 91. 5億DL〜 17億DL〜5億DL〜 世界をターゲットに DL数で億超えを目指す
  92. 92. 社内勉強会 T-Cube (Translimit Tech Talk) バランスボールや スタンディングデスク
  93. 93. お待ちしてます!

×