项目库
Web 应用Datadog · 软件工程实习生 · 2022

内部值班交接看板

分享者:M. Chen · 前 Datadog 软件工程实习生

分享者在 Datadog 的回归 offer 沟通里讲的就是这个项目,后来拿到了回归 offer。

走进这场面试

4 个当年真实追问 · 1 个 hard · 约 12 分钟

答完每一题,才翻开当事人当年的接法。

他们当时是怎么讲的

一个内部工具,让值班工程师一眼就能看清一次服务交接的状态,不用再翻三个不同的系统去拼信息。

展开全文

我们组的值班交接一直很乱。下班的工程师会往 Slack 里贴一段总结,但正在处理的故障、最近的部署、被静音的告警全散在不同地方,大家经常漏掉上下文。我的实习项目就是做一个小的内部看板,把这三样东西拉到一个页面上。前端我用 React 写,后端是一个很薄的 Node/Express,去调我们内部的故障 API 和部署服务,然后把响应用 Redis 缓存起来、设了 60 秒的 TTL,这样每次刷新就不会一直去打那些 API。数据模型基本上就是一个『交接』视图,在请求的时候临时从三个来源拼出来;我特意没有把它存下来,因为那几个权威系统本来就存着。最难的其实不是写代码,而是搞清楚值班的人到底最先看什么,所以我跟着旁观了两次交接,把页面砍到他们点名要的那四样东西。实习结束前它上线给了我们组大概九个工程师用,另外两个组也来问能不能试用。我特意让它保持只读,免得变成一个大家写数据也依赖的系统。

当年真实被问到的

为什么要用 Redis 加 TTL 缓存,而不是直接实时调 API?

中等

你这个交接视图是在请求时从三个系统拼出来的。如果其中一个挂了会怎样?

困难

就九个人用的内部工具,为什么要用 React?

简单

如果用的团队变成 10 倍,你会改什么?

中等