プロジェクトライブラリ
WebアプリDatadog · Software Engineer Intern · 2022

社内on-call引き継ぎダッシュボード

投稿者:M. Chen · 元Datadog SWEインターン

共有者は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倍になったら、何を変えますか?

普通