現在是週六凌晨三點,你正沉浸在難得的深層睡眠中。突然,床頭櫃上的手機像心臟病發作一樣,開始瘋狂地震動,螢幕在黑暗中閃爍著刺眼的光芒。你睡眼惺忪地拿起手機,發現螢幕已經被一連串來自公司 Slack 的紅色警報通知給淹沒。
[Alert] API Gateway: Abnormal traffic pattern detected.
[Alert] MongoDB Atlas: Connection pool saturated.
[Alert] MongoDB Atlas: Disk I/O at 100%.
[PagerDuty] INCIDENT #1234 - CRITICAL - Core User API unresponsive.
你的心跳瞬間漏了一拍,睡意全消。你立刻從床上彈起來打開筆電,連上公司的網站,螢幕上只剩下那個冰冷的錯誤頁面:「503 Service Unavailable」。
緊接著,你的手機和電腦上的通訊軟體開始同步爆炸。
技術主管直接打了語音電話過來,背景音滿是鍵盤的敲擊聲;客服主管在 Slack 上瘋狂私訊你,傳來一堆憤怒用戶的截圖;行銷主管則在另一個群組裡 @all,焦急地問著廣告費是不是在白白燃燒。
資訊從四面八方湧來,沒有統一的窗口,沒有既定的流程。你看著螢幕上混亂的訊息、手機上閃爍的未接來電,聽著窗外寂靜的夜色,感覺自己就像災難電影中那個第一次上戰場、完全不知所措的菜鳥指揮官。恐慌、混亂、壓力像海嘯一樣,瞬間將你淹沒。
當你經歷這場午夜驚魂時,你的專案正遭受最致命的急症:系統心肌梗塞。
這個病症的根源,並非是 Bug 本身,因為任何系統都必然會出錯。真正的病根,在於團隊缺乏一套事先演練過的緊急應變計畫。
在災難發生的當下,一個沒有準備的團隊,會像一群無頭蒼蠅,陷入混亂的惡性循環:
千萬不要在此刻成為混亂的傳聲筒與擴音器,我們需要立刻化身為冷靜的**急診室醫師,**拿出我們的專案急救箱,有條不紊地開始執行搶救流程。
此刻你的工作重點不是只問「為什麼會發生這種事?」,而是能夠立刻回答「我們現在該做什麼?」
這份處方,就是你的專案急救箱。請務必在專案還很健康的時候,就和團隊一起把這個箱子準備好,並放在隨手可及之處。
災難發生時,最忌諱的就是資訊散落在四處。
在緊急時刻的混亂是來自於權責不清,你需要立刻指派幾個關鍵的臨時角色!
指揮官:通常由技術主管或最資深的工程師擔任。他的唯一任務,就是帶領技術團隊解決問題,他擁有最高的技術決策權,並且不需要對外溝通。
溝通官:這個角色就是身為 PM 的你。你的唯一任務,就是負責對內部所有熱鍋上的螞蟻們溝通,你要保護指揮官不被外界打擾,並定期將戰情室的進度,轉換成各方能理解的語言,同步出去讓他們理解。
記錄官:指派一位細心的團隊成員,負責記錄戰情室中所有的重要決策、行動與時間點。這份紀錄將是事後複盤的無價之寶。不過在人力極度緊繃的情況下,這個角色也常會由身兼溝通官的 PM 一併承擔。若如此,PM 應盡量使用預設的模板或簡潔的條列式來記錄,避免在溝通與記錄之間手忙腳亂。
你的急救箱裡,必須有一份事先就和團隊討論好的標準作業流程 SOP,下面提供一個範例可以參考,而實際的 SOP 在不同的團隊協作上一定會有變化的空間。
好,讓我們回到那個讓你無法好好睡覺的週六凌晨。
當警報響起時,如果你身邊有這個專案急救箱,你可以怎麼做?
有了明確的緊急應變流程,你的團隊可以更加冷靜且有條理地面對危機,避免慌亂中做出不當決策。這套標準作業程序不僅可以縮短服務中斷的時間,更能確保團隊成員在高壓環境下依然保持清晰的思考,並有系統地解決問題。即便是凌晨三點被叫醒面對一場全面性的系統崩潰,有了這個急救箱,你也能夠從容應對,將混亂的情況逐步引導回正軌。
一場災難,如果沒有帶來學習,那就只是一場純粹的災難。傳統的檢討會人多嘴雜,大家因為害怕究責而不敢說真話,你可以透過以下三個步驟,整理出最終要給老闆的檢討報告。
在召開任何會議前,單獨找幾位在第一線救火的核心成員(工程師、維運、QA),進行一對一訪談。
你的目的不是問「這是誰的錯?」,而是問「可以帶我走一次你當時看到的時間軸嗎?」。你要做的是拼湊出客觀的事實經過,並理解他們當時面臨的困難與資訊落差。這個步驟能讓你在心理安全的環境下,收集到最真實的情報。
在訪談後,你的下一步是整合所有情報,建立一份客觀的事件時間軸。這份文件只包含事實,不包含任何猜測或評論。
首先需要整理所有的資料,如系統 Log、警報紀錄、戰情室的對話紀錄、以及一對一訪談的內容。
以下是產出範例:
03:01 - 系統發出第一筆 CPU 過高警報。
03:05 - PagerDuty 通知值班工程師阿傑。
03:10 - 阿傑登入系統,發現資料庫連線數異常。
03:15 - PM 建立戰情室。
客觀的事件時間軸,將成為後續討論的唯一事實根據,它能盡量將團隊的注意力從「是誰的錯」,轉移到「當時發生了什麼」。
現在相關資料都整理的差不多了,如果有需要的話,還可以召開一場小規模的複盤會議,這個會議的參與者建議僅限於核心的技術團隊。
會議討論流程
透過上面的步驟,相信你已經掌握足夠的內容來撰寫事後復盤檢討報告。
一份結構清晰的事件複盤報告,我會建議內容應該包含以下這些項目:
而在撰寫報告時,最重要的事情就是要保持中立的語氣和用詞。這不僅能夠確保報告的客觀性,也能讓團隊成員在閱讀後感到安全,願意誠實地面對問題並尋求解決方案。
如何保持中立?
不中立的表達方式:
中立的表達方式:
透過保持中立的視角,你才更能夠引導團隊建立聚焦於系統改進而非個人責備的文化,一份優秀的事件複盤報告應該讓讀者關注的是「下一次我們該如何做得更好」,而非「上一次是誰搞砸了」。
線上服務就像人的身體,總有一天會生病,我們無法祈禱它永遠健康,但我們可以做到的是,平時就做好健康檢查,並為自己準備好一個隨時可用的急救箱。
一場突如其來的線上災難對 PM 來說,雖然是很可怕的夢魘,但也是展現你最高價值的舞台。在風平浪靜時,任何人都能開船;唯有在驚濤駭浪中,才能看出誰是那個能穩住軍心、帶領大家活著靠岸的船長。
Hotfix belike