社内on-call引き継ぎダッシュボード
共有者はDatadogのリターンオファー面談でまさにこのプロジェクトを語り、リターンオファーを獲得しました。
この面接を練習する
実際の深掘り4問 · うち難問1 · 約12分
各質問に自分で答えると、本人の実際の答えが見られます。
本人はこう語った
on-callエンジニアが3つの別々のシステムを掘り返さなくても、サービス引き継ぎの状態を一目で把握できる社内ツールです。
全文を読む
私のチームのon-call引き継ぎはぐちゃぐちゃでした。引き継ぐ側のエンジニアがSlackにサマリを貼るのですが、進行中のインシデント、直近のデプロイ、ミュート済みアラートがそれぞれ別の場所にあって、みんなコンテキストを見落としていたんです。私のインターンプロジェクトは、この3つを1ページに集約する小さな社内ダッシュボードでした。フロントエンドはReactで作り、薄いNode/Expressのバックエンドから社内のインシデントAPIとデプロイサービスを呼び、レスポンスはRedisにTTL 60秒でキャッシュして、リフレッシュのたびにそれらのAPIを叩きまくらないようにしました。データモデルは実質、リクエスト時に3つのソースから組み立てる1つの「引き継ぎ」ビューだけです。source of truthとなるシステム側がすでにデータを持っているので、あえて自分では保存しませんでした。一番難しかったのはコードではなく、on-callの人が実際に最初に何を見るのかを突き止めることで、実際の引き継ぎを2回シャドーイングして、彼らが挙げた4項目までページを削ぎ落としました。インターン終了までに約9人のエンジニアからなる自チームにリリースされ、他の2チームからも試したいと声がかかりました。書き込みを頼られるシステムにならないよう、意図的にread-onlyのままにしました。
実際に聞かれた質問
APIをライブで呼べばいいのに、なぜRedisにTTL付きでキャッシュしたのですか?
普通引き継ぎビューをリクエスト時に3つのシステムから組み立てていますね。どれか1つが落ちていたら何が壊れますか?
難しい9人しか使わない社内ツールに、なぜReactを?
易しいチーム数が10倍になったら、何を変えますか?
普通