アトラシアン社内事例:IT 部門とサイト信頼性エンジニアリング (SRE) 部門による ChatOps を使用したインシデント管理方法

Incident management with ChatOps in HipChat

コードを取り扱うチームは必ずサービスのインシデントに直面します。緊急事態アラート… 深夜の恐怖のテキスト… サービスが大変な事態に陥ったことを伝える同僚からの忌まわしい ping がどれだけ嫌なものか、皆、痛いほどよく分かっています。しかし、ユーザーへの影響を最小限に抑えて速やかに復旧できる能力こそがサービスを向上します。それを実現する大きな要因は ChatOps です。

ソフトウェアの開発・運営に携わるチームは必ずインシデント管理への対応プロセスを用意すべきです。インシデント管理は開発・運営の一環です。ソフトウェアコミュニティで多くのベストプラクティスを共有すれば、ソフトウェアコミュニティ全体のインシデント対応のレベルが上がります。そこで、アトラシアンで実行している ChatOps を利用したインシデント対応方法の一部を紹介したいと思います。

アトラシアンでは自社製品と数多くの他社製品を利用して、サービスに支障が発生したときインシデント管理を行っています。アトラシアンのサイト信頼性エンジニアリング (SRE) チームは HipChat API の新デプロイメントを使って ChatOps の利用方法を新たな水準に引き上げています。では、SRE チームの利用方法を紹介します。

アトラシアン SRE チームの簡単な紹介

hipchat-chatops-3

継続的デリバリーモデルに従って、アトラシアンのエンジニアリングチームは 1 日に数回コードを製品に追加します。アトラシアン製品はクラウド上で起動し、複雑に機能し合う他の多数のクラウドツールに依存しています。アトラシアンでは複数の SRE チーム (SRE チームは 1 つではありません。ほとんどすべての製品と一握りの Web プロパティに対して専用 SRE チームがあります) が生産の健全性をマクロレベルで監視しているので、インシデントを速やかに解決できます。そして、SRE チームはチケット作成システムとして JIRA Service Desk (JSD) を利用しています。インシデントが発生するとすぐ課題が作成され、ステータス、完了済み作業を追跡し、最終的にはその解決に至ります。

アトラシアン SRE チームはすべての信頼性課題 (バグ、サイトクラッシュ、アラート、アステロイド、その他すべて) の運用基盤として HipChat を使用しています。アトラシアン SRE チームは幅広いツール (JIRA Software、JIRA Service Desk、Datadog、PagerDuty、StatusPage、その他) を使用するので、 HipChat をハブとして活用することで SRE チームは目の前のタスクに集中できます。

それぞれのインシデントの詳細は異なりますが、ChatOps のインシデント管理方法は毎回同じ基本ステップに従います。

ステップ 1: 課題の存在を確認

Inside Atlassian: How IT & SRE use ChatOps to run incident management通常、Datadog、PagerDuty、JSD、StatusPage などの統合ツールからのアラートがチームのチャットルームに表示されることで課題の存在が表面化します。チャットを使わなければ、このプロセスはかなり困難で時間がかかるものです。何か異常があることに適切な人物が気が付いて議論を開始するまでに数分 (または 1 時間) かかるかもしれません。議論が開始されても、その課題の原因を突き止めるためにチームが行っている作業内容を簡単に共有できないので、さらに時間がかかることになります。

この点を社内で測定したところ、インシデント解決にチャットを使用した場合、対応速度が ChatOps 導入前の 5 倍になったことが分かりました。

はじめよう

HipChat の利用は初めてですか? チームで無料サインアップしてください

次に、チームルームで以下のアドオンをインストールします:

ステップ 2. チャットルームで課題の深刻度を評価

Inside Atlassian: How IT & SRE use ChatOps to run incident managementアラートやチケットの表示が始まると、チーム全員がそれを目にし、すぐに議論が始まります。チャット主導型インシデント対応の大きな利点は透明性と情報の流れです。インシデントが適切に処理されているか、または、処理の拡大が必要かをグループで評価します。チャットルームで頻繁にチャート、グラフ、チケットを共有し、より多くの状況説明と共に議論できます。

プロのヒント

すべてのチームがそれぞれ独自の HipChat ルームを持つように設定してください。通知を「ノーマル」に設定すれば、チームメートがあなたの名前やルーム全体をメンションすると必ずアラートが通知されます。

ステップ 3: 「ホットルーム」またはインシデントにひもづいたチャットルームを作成

Inside Atlassian: How IT & SRE use ChatOps to run incident management
アトラシアンチームの HipChat ルームはすべて JSD につながっています。重要コンポーネントに対してチケットがファイルされると必ず自動プロセスが起動します。緊密な統合のおかげです! HipChat は JSD 課題の名前がついた新しいルームを作成し、その課題をウォッチしている全員を新しいルームに招待します。アトラシアンではこのルームを「ホットルーム」と呼んでいます。下記のように手動により JIRA 課題上でボタンをクリックしてインシデント固有ルームを作成することもできます。

HipChat_JIRA_service_desk

ここから、SRE 応答システムはインシデント管理モードに入り、PagerDuty を利用して必要となる開発者に連絡します。その後、さらに多くのチームメンバーが「ホットルーム」に招待され、全員がリアルタイムで発生している内容、誰が何をしているのか、どのようにインシデントが解決されているのかを確認できます。

ホットルームは通常、SRE、エンジニアリング、サポート、IT リーダーシップ、製品管理、製品マーケティング、ソーシャルメディアサポートの部門を超えたグループ構成です。それぞれが解決プロセスで異なる役割を果たします。ホットルームで活発に活動する人もいれば、消極的にホットルームでインシデントのステータスを監視するだけの人もいます。

全員が全員の作業状態を把握できるので、ChatOps は効果的です。透明なコミュニケーションは解決の加速につながります。

ホットルームに入ればインシデントに関する詳細を参照できます。HipChat のサイドバーで JSD 課題から直接引き出せます。HipChat で直接、課題を「Open」「In Progress」「Resolved」へ移動し、課題にコメントを追加することも可能です。

プロのヒント

JIRA Service Desk と共に HipChat を使うことで、チームメンバー全員はインシデントが報告されるとその課題の正確な名前がついたアラート (例. HOT-330) を受け取ることになります。さらに、JSD を使って「ホットルーム」を作成すると、チームメンバー全員がその課題キーを検索することで適切なホットルームを見つけることができます。

ステップ 4: 情報の受信設定、繰り返しタスクを自動化

Inside Atlassian: How IT & SRE use ChatOps to run incident management

決断に必要となる情報や報告がチャットルームで表示されないと、リアルタイムでの問題解決は困難です。例えば、Bitbucket SRE チームは Datadog をチームチャットルームにつなげ、サポートサイトがトラブルの兆候を示すと必ず警告 (グラフ付き) を受信します。ChatOps は複数のツールを使った作業に必要な絶え間ない「Alt+Tab」キーの入力の削減に役立ちます。

この意味では、HipChat ルームは単なる目的地ではなく「炭鉱のカナリア」の役割を果たします。インシデント対応が高速であればあるほど製品ヘルプに関連するサポートチケットの発生を抑えることができ、Bitbucket のさらなる改良に費やせる時間が長くなります。

ステップ 5: 作成した履歴をフル活用

Inside Atlassian: How IT & SRE use ChatOps to run incident management

インシデントの発生を望む人はいませんが、誰もがさらに素早いインシデント解決を望んでいます。そこでチャット履歴が役立ちます。すぐに使えるインシデント全体の記録で、インシデント後の評価や根本原因解析 (RCA) に最適です。

すべての優れたチームと同様、アトラシアンの SRE は「過去を理解しない者は過去を繰り返す」ことを理解しています。インシデントが解決された時点で、アトラシアンチームはすぐに Confluence ページを作成します。何が起きたのか、どのように対応したのか、次回はどのように改善できるのかを正確に説明したページです。このページは社内全体で共有され、ここでもまた透明性を向上し、過去の経験から他のチームが学習するのに役立ちます。

SRE にとって ChatOps は、インシデントに関するすべてのコミュニケーション – グラフ、レポート、データ分析 – を単一のストリームにまとめるものです。ルームを定義し、それに対応する JSD 課題のキーを名前に使うことで、インシデントコミュニケーションの単一の正確な情報源が手に入り、リアルタイムで適切な人物が適切な課題に関して話し合うことができます。社内ステークホルダー (上司) や他のエンジニアを招待して更新情報をすべて確認してもらえる場にもなります。

コラボレーション分野で次に大きな話題になる ChatOps

ChatOps は継続的にチームの生産性を向上し、カスタマーの満足度を高めます。そしてこれは単なる始まりに過ぎません。HipChat のようなツールを使用すれば、ChatOps のアプリケーションの可能性は IT 部門を超えて開発、サポート、PR などのビジネスチームまで広範囲に拡張できます。

ここで説明したプロセスは一晩で完成したものではありません。アトラシアンの SRE はこの点を何カ月もかけて繰り返し取組んできました。とはいえ、これは難解な科学でもありません。アトラシアンの現状をあなたのチームの出発点として役立てていただければ幸いです。いろいろ試して、改良し続けてください。そして、その結果をコメント欄でお知らせください。

チームとシェア!

ChatOps を利用したインシデント管理についてのクリックリファレンスシートをダウンロード/シェアしてください: ChatOps を利用してインシデント解決スピードを 5 倍にする 5 ステップ

ダウンロード シェア

HipChat guide to ChatOps incident management


*本ブログは Atlassian Blogs の翻訳です。本文中の日時などは投稿当時のものですのでご了承ください。
*原文 : 2016 年 2 月 10 日 “Inside Atlassian: how IT & SRE use ChatOps to run incident management