こんにちは!株式会社Diverseで働いているsamukeiです。
みなさんのサービスは障害起きていませんか?
100%の可用性を担保しているサービスは空想上以外では存在しないのが現実だと思います。
もし障害が起きたとき・・・をちゃんとフローにした話をします。
ということで、ほぼポエムです
先にネタバレですが、今回決めたこと
- 障害の責任者を決めた
- 事業責任者、エンジニアが なんとなくキャッチ していたが、責任者を明確にすることで問題が起きた時の連絡先がわかるようになった
- 障害発生時にTwilioでコールする
- Slackでの通知、カスタマーサポートからの連絡フローに加えることで即時に気づける仕組みを追加
- 報告やお知らせなどを Slackワークフロー を用意することで共通化 & 単純化 (後述)
- ワークフロー化することで煩雑な情報共有の内容を明確に伝えられるようになった
実際にまとめたフロー
障害発生
障害を検知、Slackでアラート発報、Twilioで 障害の責任者、 エンジニア の電話
(対応されていない場合)
カスタマーサポートチームが検知し、Slackで 障害の責任者、 エンジニア にメンション
(メンションでも対応されていない場合)
カスタマーサポートチームが 障害の責任者、 エンジニア に緊急電話
〜〜〜〜〜〜〜〜
障害の責任者 が Slackワークフロー で各方面に共有、お知らせ
エンジニアが障害対応
〜〜〜〜〜〜〜〜
障害復旧
障害の責任者 が Slackワークフロー で各方面に共有、お知らせ
Slackワークフロー
Slackのワークフローは強力かつ単純で活用しているのですが、今回のケースでも利用できそうだったので定義しました。
実際に定義したものは、
① Slackのワークフローで入力フォームを表示
② 入力内容の変数をSlackで各方面にメッセージ
(例)カスタマーサポートチーム、マーケチーム向けのメッセージ
(例)ユーザ向けのお知らせメッセージ
※ 日々ブラッシュアップしているので、実際のメッセージは若干異なります。
と、これだけです。これだけですが、通知先に状況を明確に伝えることができます。
非常にシンプルな仕組みなので5分くらいで定義できました。
俺たちの戦いはこれからだ!
と、障害時の対応について書いてきました。
本来は障害が起きないことが一番なので、役に立たないことを祈りつつも、障害が起きたときに安心して障害対応に当たれるような仕組み化を含めてこれからも改善していきます!