僕たちの障害対応

こんにちは、マネーフォワードケッサイ(以下MFK)でバックエンドエンジニアをやっていますshoheiです。 サービス提供をおこなっているなら必ず直面するであろう障害対応について書いていこうと思います。 例に漏れずMFKでも障害は発生します。一方で、障害が起きても迅速に解消できるように様々な仕組み・取り組みを導入しています。 今回はそんなMFKの障害対応時の仕組みについてご紹介させていただきます。

障害リアクション→障害対応

MFKの社内コミュニケーションは基本的Slackです、 ご時世的なこともありエンジニアも大半がリモートワークで勤務していることから、 とりあえず勤務中はSlackを常時みておくようにしようねといった前提があります。

なんとMFKのSlackには「障害(:shogai-taio:)」を報告するカスタム絵文字リアクションがあります。

「障害」カスタム絵文字リアクション

リアクションはSlackのメッセージであればなんでも付与できるため、 アラートチャンネルのアラートメッセージやCSから上がってくる問い合わせなど様々なケースで「障害」リアクションをつけることができます。

メッセージに付与される「障害」

「障害」リアクションをつけるのに制限はなく、障害っぽいな、サービス影響ありそうな気がする程度の温度感でも「障害」リアクションを付与しています。 僕の中では「判断に迷ったら押す!」という強い気持ちで付与判断をしています。因みに結果的に障害じゃなくても誰からもお咎めされません。

いずれかのメッセージに「障害」リアクションが付与されると、自動で以下のワークフローが走ります。

  • 障害対応チャンネルを作成
  • 「障害」リアクションを付与した人を障害対応チャンネルへ招待
  • 障害対応用MeetのURLを表示
  • 障害報告書ページを作成
障害対応メッセージ

障害チャンネルが作られたことを検知したらとりあえず障害チャンネルに入ります。

チャンネルに記載されているMeetのURLからビデオチャットに入りメンバーと障害解消を目指して動き出します。 対応内容によっては対応メンバーをグループ分けし、BreakOutルームに別れて対応にあたることもあります。 また、エンジニアだけで対応が完結することはほぼほぼないので必要に応じてセールスメンバーやCSにもSlackチャンネルやMeetに入ってもらい対応を進めます。

障害収束→振り返り

頑張って障害を収束させたら報告書を書きます。

MFKではDocBaseというドキュメント共有サービスを利用しており、障害報告書もDocBaseの1ページとして作成します。 チャンネルが作られたタイミングで障害報告書ページが作成されているのでわざわざページ作る必要はありません。 テンプレートに沿ったページが払い出されているので必要な記載部埋めていきましょう。

報告書が書けたら障害振り返りのミーティングを設定します。 振り返りミーティングではみんなで対応内容の振り返りや再発防止策を考えたりします。 再発防止策のタスクを切ったら障害対応チャンネルをアーカイブ化して一通りの対応は完了とします。

対応お疲れ様でした!

Zapier

前項で紹介しましたワークフローの自動化部はZapierというツールで提供されています。 Zapierの説明は割愛させていただきますが、連携アプリが多く様々な用途で柔軟に利用できることからMFKでも随所で利用しています。 上記のワークフローは全てZapierで構築されています、Slack連携が優秀でワークフローに必要な操作が全てZapierのアクションで準備できます。 なお、DocBaseの障害報告書作成はAPIで使っています。以下、実際のワークフローをキャプチャした内容です。

障害対応メッセージ

GUIをいじくるだけで完結するのでメンテナンスコストがかからない部分も好印象です。

カルチャー

MFKはベンチャー企業のため社員数も少ないです、エンジニアの人数も多いとはいえません。 従って、障害発生時は基本的に全員で戦います。 当然ながら全員が全システム仕様を理解しているわけではないので時には仕様把握していない機能の障害対応を行うこともあります。 仕様がわからないという状況中でもやれることは多くあって、「ログを洗い直す」「障害報告書を書いて事象を整理する」「関係部署と(CS, セールス)と連携する」「対応の相談にのる」… 兎にも角にも障害解消を目指して動きます。メンバーも共通認識を持っていて一丸となって問題解決に多大に協力してくれます。

僕はMFKに入社してから度々障害対応しましたが一度も一人で障害対応したことはありません、 いつも助けてくれるし相談にのってくれるメンバーみんなには多大な感謝とリスペクトです。