こんにちは、プロモーション戦略室のikariです。ピクシブの各サービスの集客・販促を行う傍ら、Twitterほか各種SNS上にあるpixiv公式アカウントを使ったユーザーアナウンスを担当しています。
さて、Webサービス開発に携わっている方であれば誰しも経験するであろう、自社サービスの「障害」。私自身も、これまでに何度か障害対応を行ってきました。 普段から障害を起こさない工夫をしておくことは当然として、それでも起きてしまう障害に対しては、ユーザーに不利益が生じる時間を極力短くすることを目指し、最速で対応して解決にあたっています。
今回の記事では、「問題の早期発見」と「迅速な解決」に効く、ピクシブの障害対応時の工夫についてご紹介します。
障害の発生を見逃さない
ポイント:
- エラーログ&Slackで兆候を察知しよう
ピクシブでは、デプロイ後の異常を見逃さないよう、デプロイを行ったエンジニアがエラーログを注視します。小さな不具合や思わぬエンバグもなるべくこの段階で見つけ、すぐに修正することにより、速やかにサービスに平和を取り戻しています。
エラーログの一覧は、ブラウザから利用できる開発者向けコンソールで確認できるようにしてあります。また、社内コミュニケーションツールとして利用しているSlackにも、エラーログが流れるChannelを設置し、エラーが増加した場合に通知が飛ぶ仕組みになっています。
また、エラーログには現れない不具合がユーザーの声で発覚することもあるため、サポートへのお問い合わせ等、ユーザーからのフィードバックも各開発チームがこまめにチェックできると盤石です。これらも専用のSlack Channelで見られるようにしてあるので、誰でも手軽に今サービスで起きている問題を把握することができます。ユーザーの声に目を通す習慣を作ることでサービスへのオーナーシップが高まる利点もあり、非常にオススメです!
また、ピクシブ社員のほとんどが日常的に自社サービスを利用しており、細かなバグや表示崩れに気づいた社員から担当チームへの声掛けによってサービスが改善されることもよくあります。日頃サービスを使っていて気づいたポイントやアイディアも、お互い積極的に提案しあっています。
障害が起きたら、人間も情報も1箇所に集まって対応スピードを上げる
ポイント:
- 素早く情報共有して、対応拠点に集合しよう
- その場で全てを決めて必要な対応ができるメンバーを揃えよう
どんなに気をつけて開発していても、時に大規模な障害は起きてしまうものです。大きな異変を察知したら、問題に気づいた社員を中心として、対応可能な人間がすぐにオフィスの中央にある会議机に集まります。複数人で障害の発生を確認したら、そのまま対応開始です。
すぐさま公式Twitter(@pixiv)でアナウンスを出してユーザーへの周知を行いつつ、社内向けにも障害発生を周知します。先ほど紹介した開発者向けコンソールに障害報専用の入力フォームがあり、テンプレート通り記入して送信ボタンを押せば、全社員が含まれているメーリングリストとSlack Channelに障害報が送れるようになっています。
障害対応の進捗や状況は刻々と変わっていくため、障害報に書く情報は最低限にとどめ、「対応状況がわかるSlackのURL」から経緯や状況が追えるようにします。
対応メンバーの物理的な拠点を一箇所に定めるのは、同じ場所に集まり対面で会話することで、高速で齟齬の少ないコミュニケーションができるようにするためです。また、オンラインの対応拠点も1つのSlack Channelに集約することで、情報の分散を防いでいます。
拠点には、エンジニアに加えて以下の役割を担う人が必ず参加するようにします。
- 対応方針の意思決定ができる人間(プロダクトマネージャーや事業責任者など)
- ホワイトボードを使って対応状況やTODO、解決済の問題をまとめていく統括係
- 統括係に追従して、対応状況をオンラインのドキュメントやSlackに転記していく議事録係
- 状況に応じてユーザーへのアナウンスをしたり、問い合わせへの回答方法を決めるカスタマーサポート係
これらのメンバーが揃うことで、全員が常に最新の情報を把握し、その場で議論をして出た結論をすぐに問題への対応・ユーザーへの対応に反映することができます。また、対応を行っているエンジニアが自分の作業に集中できるというメリットもあります。
このように、障害時に必要とされる役割は明確にしているのですが、各役割を誰が担当するかは定めていません。集まった面々が最速で対応を進められるように、その場で自然に役割分担をしていきます。 また、「壁が存在しない」というピクシブオフィスの特徴により、会議机での対応風景が他の社員からも見えるので、様子を見てチーム外のメンバーが自ら手伝いに来てくれるといったことも起こります。
対応者のパフォーマンスを高く保つ
ポイント:
- 差し入れと出前でがんばる気持ちを支えよう
素早い障害対応が成功するかは、対応チームのひとりひとりが最大限力を発揮できるかどうかにかかっています。どんなにスキルが高いエンジニアでも、障害対応をしている間ずっと高いパフォーマンスをあげられるわけではありません。ユーザーに不便をかけている、というプレッシャーの中でも頑張れるような工夫も考えておく必要があります。
長時間の障害対応を乗り切るために欠かせないのが「差し入れ」です。対応開始から2~3時間もすると、対応者の集中力も徐々に切れてきます。ピクシブでは、そんなタイミングになると、障害対応を担当していない社員がスッとやってきて、お菓子やアイスなどを置いて去っていきます。 ちょっとしたことですが、ねぎらいの気持ちと栄養の摂取は、想像以上に対応者の気力・体力を回復してくれます。大変オススメです。
また、障害対応に限らず、ピクシブ社員が気合を入れて何かに取り組むときには、一段落したタイミングで全員分の出前を取って一斉に休憩するのも定番となっています。
空腹は生産性の大敵です。ゴールをともにする仲間で食事を囲むことで、「このメンバーでがんばろうな!」という気持ちも自然と湧いてきます。出前は釜寅や銀のさら、そして藤井四段フィーバーで有名になったみろく庵にお世話になることが多いです。
まとめ
最後にポイントのおさらいです。
- 障害の発生を見逃さないよう、エラーログやSlackを活用して兆候を察知しよう
- 大きな障害が発生したら、人間も情報も1箇所に集まって対応スピードを上げよう
- 差し入れや出前を活用し、対応者のパフォーマンスを高く保とう
ユーザーのためにも自分たちのためにも、急な障害への備えはしっかりしておきたいですよね。みなさまのチームでもスピーディーかつ前向きな障害対応ができるように、今回の記事を役立てていただけたらうれしいです!