Instantly share code, notes, and snippets.

Embed
What would you like to do?
FFTT#309

エンジニア 相田

公開情報

相田さんは、本日飲み会に参加していました。

非公開情報

ちょうどアラートがきたタイミングは、帰宅途中の電車の中でした。 そのため、最初の対応は PC からではなくモバイル端末からです。

ターン開始フェイズで進行役からターン数の宣言があった場合に、以下の指示に従ってください。

ターン数 指示
0 飲み会からの帰宅途中で、電車に乗っています。
モバイル端末から 指定の Slack チャンネルにジョインしてください (チャンネルについては進行役から DM で指示があります)。
以降、指示があるまで、相談・行動はモバイル端末からのみ可能です。
2 電車から降りて家に急ぐために、モバイル端末をしまって移動します。
操作していたモバイル端末をテーブルに置き、手を離してください。
対応はできません。
3 自宅に到着して、PCを開きました。
PCの前に着席してください。
以降、相談・行動が可能です。

また、飲み会の帰りでアルコールを摂取しています。 アルコールの影響で、判断が鈍ったり、操作が遅れたりします。 その状況の再現として、相談フェイズに少しのペナルティタイムがあります。 進行役がターン開始を宣言し、相談フェイズになったら、一度 PC の前から立ってください。そのまま 10 秒待って、再度座ります。

エンジニア 垣野

公開情報

垣野さんは、最近チームにジョインしたばかりです。

非公開情報

最近チームにジョインしたばかりで、監視の詳細などをまだあまり把握していません。 また、BigQuery にアクセスするためのアカウントは会社のものですが、自宅 PC で会社のアカウントにログインできない状態です (今まで私物 PC でログインを試みたことがなかったので、今回初めて気付きました)。 なので垣野さんは BigQuery でのログの検索ができません。

ターン開始フェイズで進行役からターン数の宣言があった場合に、以下の指示に従ってください。

ターン 指示
0 PCを開いてプライベートな作業をしていたので、すぐに気付きました。
PC の前に着席してください。
以降、相談・行動が可能です。

エンジニア 佐々木

公開情報

特になし。

非公開情報

佐々木さんは、ちょうどお風呂に入っていました。 そのため、対応開始が他の人より少し遅れます。

ターン開始フェイズで進行役からターン数の宣言があった場合に、以下の指示に従ってください。

ターン 指示
2 お風呂から上がって、ようやくアラートに気付きました。
PC の前に着席してください。
以降、相談・行動が可能です。

プロダクトオーナー 滝田

公開情報

滝田さんは、プロダクトオーナーです。

非公開情報

滝田さんはエンジニアではないので、サーバにログインしたりログを確認したりできません。 監視画面についても、権限を持っていないので直接はできません。

また、以下の目的に従って行動してください。

  • 全てのターンが終了するまでに「発生した事象は何か」「影響がでていた時間はいつからいつまでか」「影響範囲はどのくらいか」をユーザーに対して説明できる状態になっていること
    • ユーザーへの「お知らせ」を書けるだけの情報があるか、が基準です
    • 詳細な原因までは不明でも構いません

滝田さんが判断する優先順位は以下の通りです。

  1. 配信中の RSS フィードへのアクセス不可・エラー
  2. 配信中の RSS フィードの更新が遅れる
  3. 管理画面へのアクセス

判断を求められた場合は、この優先順位に従って判断してください。 エンジニアが優先順位で迷っているようなら、助けてください。

ターン開始フェイズで進行役からターン数の宣言があった場合に、以下の指示に従ってください。

ターン 指示
1 ちょうど寝ようとしているところでした。
PC の前に着席してください。
以降、相談・行動が可能です。

ルール

準備

  • プレイヤーを決めます 3〜4人用です
    • 条件: PC を持っていて、その場で Slack を開ける
    • 相田さんのみ: その場に iPhone などモバイルデバイスを持っていて、そこから Slack にログインできる
  • プレイヤーにキャラクターを割り振ります
    • キャラクターシートを配布します
    • シートには、公開情報と非公開情報が書かれています    - 非公開情報は、終了の合図があるまで、その内容を直接明かしてはいけません    - 中には、特定の条件下で Slack での発言が許可される情報もあります
  • プレイヤー席を用意します
    • スクリーンに背を向ける形で用意します
    • 安定して PC を使える必要があるので、机もあると良いです
    • スクリーンから少し離れてる方が良いですが、マイクの声が聞こえる状態にはしておいてください
  • プレイヤー席に PC を設置したら、プレイヤーはまだ座らずにプレイヤー席から2〜3歩離れた所に立つか座るかしてください
    • スクリーンを見ないように気を付けて、そのままお待ちください

進行

進行は基本的に、今回の進行用の Slack チャンネルで行います。 進行用 Slack チャンネルについては、当日に伝えます。

⚠️ 口頭でのコミュニケーションはとらないでください。皆さんは、それぞれ遠隔地にいます。当然直接喋ることはできません。 (Slack call については進行が難しくなるので、申し訳ないですが今回は禁止とします)

ターン

進行は、ターン制で行います。

障害対応のある程度のまとまりを「ターン」で表します。 (目安としては、3分〜5分程度の経過時間と考えてください)

進行役は、毎ターン現在のターン数とそのターンに発生する事象を伝えます。 プレイヤーは、それに対して何を行うのかを Slack 上で宣言してください。 進行役がそれに対する結果を Slack チャンネル上、あるいは DM で伝えます。

場合によっては追加の行動が必要になる場合もありますし、1ターンで行動が終了しない場合もあります。 前のターンで行動が終了しなかった場合、次のターンのアクション宣言時に、その行動を続けるかやめて違う行動をするかを選ぶことができます。

フェイズ

1ターンの間に

  1. ターン開始フェイズ
  2. 相談フェイズ
  3. 行動フェイズ
  4. 結果フェイズ
  5. ターン終了フェイズ

の5つのフェイズがあります。

プレイヤーがやるべきことは、基本的には以下の通りです。

  • ターン開始フェイズで指示があれば従う
  • 相談フェイズでの相談 (進行役への質問は先頭に をつける)
  • 行動フェイズでの行動の宣言 (発言の先頭に 📣 をつける)
  • 結果フェイズで進行役の指示に従う
  • ターン終了宣言からターン開始宣言までは発言禁止

以下、各フェイズの詳細を説明します。

1. ターン開始フェイズ

  1. 進行役が進行用チャンネルに、現在のターン数を投稿します
  2. 進行役が進行用チャンネルに、そのターンに発生する事象を投稿します
  3. 進行役が口頭で、現在のターン数を宣言します
  4. プレイヤーはキャラクターシートの非公開情報を確認し、非公開情報内にターン数に対応する指示があれば、それに従ってください
  5. ここまで確認できたら、進行役がターン開始を宣言します

2. 相談フェイズ (2分)

  1. 相談フェイズでは、他の進行用チャンネルにジョインしているプレイヤーと、進行用チャンネルでの相談は任意に行えます
  2. プレイヤーから2分経過前に相談フェイズ終了を宣言することも可能です
  3. プレイヤーからの終了宣言、あるいは時間経過で、進行役は相談フェイズの終了を宣言します

3. 行動フェイズ (1分)

  1. 進行用チャンネルにジョインしているプレイヤーは、このターンの自分のキャラクターの行動を Slack 上で宣言してください
    • 行動の宣言は、先頭に 📣 (:mega:)を付けて発言してください (行動の宣言以外の発言と区別をつけるためです)
    • 他のプレイヤーのキャラクターの行動を宣言することはできません
    • 何も行動しないことを宣言することも可能です
  2. 制限時間内に宣言がない場合は「何も行動しない」とみなされます

4. 結果フェイズ

  1. それぞれの宣言に対して、進行役からその結果を伝えます
    • 結果は、進行用チャンネル、あるいは DM で伝えられます
    • DM で伝えられた情報を進行用チャンネルで共有することは可能です
  2. 場合によっては、宣言の内容について進行役から質問があります
    • 求められたら、進行役からの質問に答えてください
    • DM で質問された場合、進行用チャンネルでなく DM で返答してください
  3. 結果によっては、そのターン追加で行動できる場合もあります
    • 追加行動を求められたら、行動フェイズと同じように宣言を行なってください
    • DM で結果を伝えられた場合、行動の宣言も DM で行なってください

5. ターン終了フェイズ

  1. 対応完了条件を満たしている場合、進行役は対応完了の宣言をします
  2. 対応完了条件を満たしていない場合、進行役はターン終了の宣言をします
    • ターン終了の宣言があった後、ターン開始の宣言まで発言を控えてください

対応完了の宣言がなかった場合、次のターンの開始フェイズが始まります。

※ 実在のサービスとは関係ない、架空のサービスです

サービス概要

RSS フィード生成、統合サービス。 色々なものを RSS フィード化します。 Slack に流したりアプリに組み込んだりできて便利。

ユーザーは企業だけでなく、個人もいる。 軽く試せる無料プラン (機能制限・フィード作成数制限あり) から企業向けのエンタープライズプランもある。

構成

SPA (Heroku)

ELB

API (EC2) ... 2台 主に管理画面向け unicorn ワーカー数 2 / nginx Batch (EC2) ... 3台 サービスのメイン処理が1日中動いてる sidekiq ワーカー数 2

S3 - CloudFront ... 静的ファイル配信 生成した RSS フィードの配信はここ

RDS ... multi AZ で replica 用意してる

ElastiCache … Redis

監視

Mackerel 使ってる。 以下のケースでアラートが発生するように設定されている。

  • 外形監視 1分に 1回 SPA ログイン画面と API の外形監視用のエンドポイント
  • ホストのコネクティビティ (インスタンスの疎通) - mackerel エージェントが入っているインスタンス限定 (API, Batch) ネットワーク的に到達できるか
  • メモリ使用量 - (API, Batch)
  • 未処理の queue の数
  • Redis evictions - 排除されたキーの数 1件でもあれば
  • RDS メモリ・ストレージ容量

ログ

BigQuery で確認できる。

  • rails
  • nginx
  • unicorn
  • sidekiq
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment