題幹與適用場景
這是平台與系統設計題。目錄保存元件、系統、領域、API、負責人與相依關係,資料來自程式碼儲存庫、部署系統與人工宣告。它服務發現、事故回應與治理,不應成為另一套無法維護的手工 CMDB。
面試官考察什麼
- 能否把「找服務負責人」拆成實體模型、來源可信度與可搜尋體驗。
- 能否處理宣告式中繼資料與自動掃描衝突、過期和刪除。
- 能否說明相依圖查詢、權限隔離、租戶邊界與新鮮度 SLO。
- 能否在平台價值與維護成本間做漸進式上線取捨。
回答前需要釐清的問題
先確認元件數量、每日變更量、可接受的中繼資料延遲、查詢峰值、是否跨組織或客戶隔離、相依關係是靜態還是執行期觀測,以及誰有權宣告負責人。若目錄用於高風險事故決策,就需要來源等級、過期標記和稽核;若只是開發導覽,可以先接受較寬鬆的新鮮度。
30 秒回答框架
我會把目錄設計成宣告式實體圖:元件、系統、領域、API、團隊和關係都有穩定識別。儲存庫中的目錄檔是事實入口,部署和執行期訊號補充版本與相依,採集器把事件寫入版本化儲存。查詢服務提供負責人、反向相依與搜尋,並顯示來源與更新時間。衝突不靜默覆蓋,而是依來源優先級產生待處理狀態;權限在實體和欄位層執行,過期實體保留歷史但從預設結果隱藏。
分步驟深入解答
1. 建模實體與關係
可借鑑 Backstage 的實體模型:元件屬於系統,系統屬於領域,API 可由元件提供或消費,團隊負責元件。每個實體使用名稱、命名空間和版本形成穩定鍵,關係邊帶來源、發現時間與可信度。負責人不是自由文字,而是可解析的團隊主體,否則事故通知無法自動路由。
2. 設計容量與 SLO
假設 10,000 個實體、每個平均 20 條關係,圖規模約 200,000 條邊;每天 5% 實體變更約 500 次匯入。目錄寫入可採事件佇列,查詢讀模型快取負責人和鄰接索引。目標可設為匯入事件數分鐘內可見、搜尋 P95 小於 300 毫秒、相依查詢深度三層在一秒內完成;高風險場景另外顯示資料年齡。
3. 設計匯入與事實優先級
儲存庫宣告檔提供意圖和負責人,部署系統提供實際版本與環境,執行期遙測提供近期呼叫邊。採集器為每次匯入保存來源、提交版本和驗證結果,使用冪等鍵避免重複事件。不同來源衝突時依策略合併:程式碼宣告不能被一次執行期觀測改寫負責人,執行期邊也不能證明不存在的相依。衝突進入佇列並通知擁有者。
4. 保證新鮮度與刪除語意
每個實體保存 lastSeenAt、宣告版本和過期策略。長時間沒有來源更新就標記 stale,預設搜尋隱藏或降低排序,但保留歷史相依供事故回放。儲存庫刪除、服務下線和臨時環境要有不同狀態;立即刪除會破壞歷史,永不刪除會污染搜尋。週期性 reconciler 負責重試失敗匯入和清理孤立關係。
5. 查詢、權限與安全
提供按名稱、團隊、領域、環境、標籤和負責人搜尋;相依查詢限制深度與結果數,避免圖遍歷拖垮服務。實體和欄位帶組織範圍,呼叫者只能看到授權範圍;敏感儲存庫路徑、內部端點和客戶租戶資訊依欄位去識別化。所有負責人變更和權限拒絕寫入稽核事件,不能只依賴前端隱藏。
6. 漸進式交付與替代方案
第一階段只涵蓋關鍵服務和負責人搜尋,要求每個實體有來源與新鮮度;第二階段加入相依圖、部署版本和事故通知;第三階段才接入自動治理。若組織沒有穩定的宣告習慣,可以先從儲存庫範本和 CI 檢查開始,而不是一次建設全公司目錄。Amazon PM 指引強調客戶問題與能力證據,平台採用應由搜尋成功率、事故定位時間和中繼資料維護率證明。
高品質示範回答
我會把目錄當成帶來源與新鮮度的實體圖,而不是手工表格。元件、系統、領域、API、團隊和關係都有穩定鍵;儲存庫宣告定義意圖,部署系統補充環境版本,執行期訊號補充近期相依。採集器事件化、冪等寫入並保留提交版本。查詢讀模型提供負責人、反向相依與搜尋,相依遍歷限制深度。衝突進入待處理佇列,過期實體標記 stale,歷史保留但預設結果隱藏。按組織和欄位授權,稽核負責人變更。先用關鍵服務驗證搜尋成功率、事故定位時間與維護率,再逐步擴展。
常見錯誤
- 把目錄做成手工 CMDB → 很快失真 → 以儲存庫宣告和自動採集為事實入口。
- 只存負責人字串 → 無法通知或驗證離職團隊 → 引用可解析的團隊主體。
- 用最新來源覆蓋一切 → 執行期雜訊會改寫治理事實 → 給來源分級並保留衝突狀態。
- 刪除下線服務 → 事故回放失去相依 → 用生命週期狀態和歷史版本表達刪除。
- 無限制遍歷相依圖 → 查詢會放大到整張圖 → 限制深度、結果數並使用鄰接索引。
追問及應對
負責人宣告與部署資料衝突怎麼辦?
把兩者建成不同來源的屬性,依欄位策略合併並顯示衝突,而不是覆蓋。負責人欄位以受控宣告為準,部署欄位以部署系統為準;衝突通知雙方並等待修正提交。
如何處理短命預覽環境?
實體帶環境與過期時間,預覽環境預設低權重並自動封存。若它仍被生產相依,執行期邊可提升告警等級,但不能跳過負責人和租戶授權。
目錄本身不可用時如何救火?
為關鍵服務保留可匯出的靜態快照和最近一次負責人快取,並在頁面顯示資料時間。事故工具可以讀取快照,但不能把過期快照偽裝成即時事實。
如何防止團隊把目錄當成審批門?
先把價值限定為發現和事故回應,指標關注搜尋成功與定位時間。只有中繼資料穩定、權限清晰後,才把目錄接入治理檢查;治理失敗應提供修復路徑,不應阻斷所有發布。