Hubot導入後半年で感じた事

hubot

こんにちは、開発メンバーの濱田です。複数サービスにまたがる定時処理はHubotにしてもらおうでも紹介していますように、社内のチャット(Slack)にHubotを導入してから約半年が経ちました。半年間Hubotを運用、メンテナンスしてきて感じた事をお話します。


Hubotにやってもらっていること

主にHubotにやってもらっている事は以下のようになります。

  • 1. Asanaのミーティング用タスクを作ってチャットでミーティングを告知
  • 2. 運営サービスで購入が発生したら知らせてくれる
  • 3. 運営しているサービスのCron(定期処理)が失敗時に知らせてくれる
  • 4. 運営サービスがダウンしていたら特定メンバーに通知を送る
  • 5. 運営サービスの毎日のアクセス数を教えてくれる

HubotはChatOpsの要という感じで今流行りになっていますが具体的に便利な機能として、HTTPのリクエストを絡めた処理が出来るという点です。
Hubotに対してHTTPでPOSTするとチャットに投稿したり、逆にHubotが外部サービスにHTTPリクエストを送る事が出来ます。
この仕組によりWeb APIが絡んだ定型作業はHubotにやってもらうことができます。

上記の2,3については運営サービスで何かが起こるとHubotにHTTPリクエストを送り、それをHubotが教えてくれます。4についてはサーバーの死活監視をNewRelicで行い、何か起こるとチャットに通知されるようにしています。このNewRelicからの投稿をHubotが監視し、サイトダウンに関する投稿なら特定の開発メンバーなどにチャット上でメンションを飛ばすようにしています。
5については毎日、HubotがGoogle Analytics APIにアクセスし、運営サービスのPVを教えてくれます。


Hubotの効能

Hubotを運用してみての利点は大きく言えば「様々な情報をチャットに集約出来る」の一点に尽きます。
上記のような仕組みを作ることによって、これまでサイトの管理画面やGoogle Analyticsにアクセスしないと分からなかった情報をチャットにまとめる事が出来ます。
これをやることによって、今までの運用メンバーが楽を出来るのももちろんですが、今までそういう情報をしっかりキャッチ出来ていなかったメンバーにも状況を共有しやすくなりました。

Hubotを使えば特定の情報はメンバーにメンションを送るという事も可能ですので、重要度のコントロールも簡単にできます。


Hubotをメンテしてみて感じたこと

約半年ほどHubotのコード(Node.js)を書いてみて思ったのは、思ったより簡単という印象でした。Node.jsは初めてでしたが、npmによって大抵の機能は賄う事が出来ます。
Hubotで必要な処理は定期処理や正規表現によるテキストの加工、日時やJSONのパース、HTTPリクエストなど決まりきったコードになりますので、いくつかスクリプトを書けばそれを使いまわす事は十分可能になります。


その他チャットで共有している情報

ShareWisのチャットでは上記のようにHubotを絡めた通知以外にも、以下のような情報をチャットに流しています。

  • 社内ドキュメントの作成、更新情報
  • コードの配備スタート/完了と、その配備内容
  • ShareWisのブログが更新されたら通知
  • Asanaでタスクが作られたら通知

このようにShareWisでは何かアクションが起こるとチャットにゆるく通知するという風になっています。