軟體開發者在職業生涯早期就學會,沒有什麼比修復生產環境故障更緊急的事情了。放下手邊一切!全員投入!

然而,同樣的急迫感通常不會套用在我們的開發工具、建置系統、QA 環境,以及軟體開發管線的其他部分。但對開發團隊而言,開發管線就是生產系統

軟體開發者的工作是為公司創造價值。有時這意味著建立新功能,有時意味著修復客戶生產系統的重大錯誤。但當軟體開發管線的某個部分故障時,這些都無法發生

如果程式碼無法編譯,開發者就無法完成工作,團隊也無法產出軟體。對開發團隊而言,這就是生產環境故障。修復此問題應該是首要任務。

如果 QA 伺服器當機,測試人員就無法完成工作,團隊也無法產出可正常運作的軟體。對 QA 團隊而言,這就是生產環境故障。修復此問題應該是首要任務。

A software assembly line, on fire
你不會意外發現這是我自己畫的。

在製造業中,關於如何預防與減少組裝線停機,有詳盡的流程與程序1 類似的流程也存在於IT 服務故障。但我發現這些流程大多聚焦於客戶所使用的服務發生故障,而非負責建置與支援這些服務的人員。

我建議思考所有從「客戶想要某個功能」到「該功能交付給客戶」的組成元件:

  • 問題回報與變更需求系統,例如 GitHub Issues、Jira 等
  • 開發者直接用來建置軟體的工具,例如 IDE、建置工具(Gradle、Maven 等)、套件儲存庫(npm、Maven Central、內部儲存庫等)、本機資料庫、容器等
  • CI/CD 工具(Jenkins、GitHub Actions 等)。
  • 測試套件失敗(當然你不會在測試失敗時部署到生產環境吧?)
  • QA 伺服器故障(當然你不會在 QA 尚未測試前就部署到生產環境吧?)
  • 任何阻礙你進行修改並部署到生產環境的任何流程步驟

開發管線故障的團隊無法產出軟體,並且必須將此視為生產環境故障。


1 有趣的是,製造業常稱之為「生產線」。軟體世界中「production」一詞的使用,是否與製造業的歷史相關?