ChatOpsはじめました

はじめまして、こんにちは。エンジニアのなかむらです。

もうすぐクリスマスですね。オフィス内でもクリスマスツリーが点灯していて、クリスマス気分を盛り上げています。

ChristmasTree

クリスマスツリーの近くのシステム開発グループでは、 より早く、より多くのソリューションをお客様へお届けするために、開発スピードを上げていくためのツール導入や作業の自動化をどんどん進めています。

その中で今回は、アトラスでのChatOpsな取り組みをご紹介します。

ChatOps

「ChatOps」とは、チャット機能を持つコミュニケーションツールとHubotを連携させて、これまで人が作業していた様々なタスクを自動化するスタイルです。

チャットには、GitHubやCI(継続的インテグレーション)ツールからの通知を受けたり、チャットからコマンドを実行したりします。

チャット上でオペレーションを行うことで、チャットに参加しているメンバーはいつ、だれが、どんなオペレーションで作業したのかを把握できるので、作業の属人化を排除できるメリットもあります。

新しくアトラスのシステム開発グループに参加したメンバーは、チャットのログをさかのぼることでそのときの対応方法も把握することもできます。

アトラスではコミュニケーションツールは「Slack」を利用しています。

Slack

Slackとは、2014年に正式に公開された北米発のチームコミュニケーションサービスです。

slacklogo

Slackは、グループチャットと通知のサービスで、数多くの他のサービスと連携し、他サービスからの通知を受け取ることができます。 アトラスでは、利用している全ての他サービスからの通知をSlackで受けとれるように設定して、タイムライン感覚でみんなの動きを確認できるようにしています。

  • GitHubのプルリクエスト
  • GitHubのプルリクエスト時のレビュー結果
  • Jenkinsの実行結果
  • NewRelic(監視ツール)結果
  • Asana(タスク管理ツール)のタスク追加やタスク完了
  • Qiita:Team(情報共有ツール)への投稿や投稿へのコメント

GitHubとJenkinsとQiitaからの通知の例がこちら。

スクリーンショット 2014-12-18 15.40.06

いつ、誰が、どのようなことをしたか、Slackを見るだけで全て把握できるので、とても便利です!!(お休みの日にサーバの不調がお知らせされるときは、悲しくなりますけどね。)

また、Slackでは、bot(ボット)というツールを利用して、チャット上でオペレーションを実行することもできます。

「bot」とは作業を実行してくれるプログラムのことで、定期的な処理や、特定のキーワードに応じて自動で作業をしてくれます。

身近な例だと、Twitterのbotアカウントなどがあります。

アトラスのSlackでは「Hubot」と言うbot を利用しています。

Hubotはじめました

Hubotは対話的にタスクを実施できるGitHub社製のシンプルなBotフレームワークです。

hubot

Hubotでできること

  • 画像を検索してチャットに通知
  • 検索した画像にひげをつけてチャットに通知(誰得!?)
  • 今日の天気情報をチャットに通知
  • 地図情報をチャットに通知

アトラスではチャット内で、Hubotに依頼して、HubotにJenkins(CIツール)で最新のアプリケーションを開発サーバーにデプロイしてもらったり、 GitHubのプルリクエスト時のコードレビューの担当を、Hubotにランダムでメンバーをアサインしてもらったりしています。

また、Hubotにキーワード指定で画像を検索するように頼むと、チャットの返信で画像を表示してくれるので、よく動物の画像がチャット上に表示されていて、メンバーを癒したりもしてくれています。実はこれが良く使われてます。(笑)

slack img

Hubotは拡張ができるところが特徴で、チャットとつなげるためのアダプターや、追加機能を提供するスクリプトがオープンソースでたくさん公開されています。

公開されていなくても、HubotのスクリプトはCoffeeScriptかJavaScriptで作成されているので、比較的簡単に作成、追加することもできます。

今後、アトラスでは開発チームに役立つ便利な機能を拡充していく予定です。

これからも便利なツールを使って、可視化、自動化、効率化をはかっていきます!!

今回はざっくりなChatOpsの紹介になってしまったので、改めてSlackなどツールについての紹介できればいいなと思います。