如何找出軟件發佈流程入面嘅樽頸
將發佈流程畫成流程圖,數清楚每個決策有幾多件事走邊個出口,再用桑基圖顯示。找出建置失敗、退回或者等得最耐嘅關卡。
發佈樽頸就係工作積壓、失敗或者被退回嘅關卡。呢份指南先畫出流程,令每個關卡都係有名嘅出口嘅決策,再數發佈走過各個出口嘅數目。
簡而言之
- 先將流程畫成帶有標記出口嘅決策,再開始計數。
- 喺一個時段內,數發佈(或建置)走過每個出口嘅數目。
- 退回分支好闊嘅關卡就係樽頸,即使佢本身好快。
- 用桑基圖顯示計數,並用流程圖去解釋。
由關卡開始,唔係由數字開始
團隊通常會用平均時間搵最慢嘅步驟。咁樣搵到慢嘅任務,卻搵唔到將工作送返轉頭嘅關卡。一個發佈可能只喺測試度停一日,卻要損失一個星期,因為測試失敗令佢返去修正步驟,整個週期又行多次。要睇到呢點,就要畫出帶決策嘅流程,數有幾多個發佈走每個出口。
流程圖提供結構:每個決策都有標好嘅分支,每個分支都有計數。例子係一個有四個決策嘅發佈流程:自動化測試、放行還是不放行、生產環境健康,以及生產環境缺陷。有咗每個分支嘅計數,桑基圖就可以用闊度顯示出嚟。建置階段可以睇 /yue/sankey/ci-pipeline-outcomes,之前嘅審查階段可以睇 /yue/sankey/pull-request-review-flow。
主張要保守。計數顯示工作喺邊個關卡離開,唔顯示原因。原因要靠閱讀失敗嘅項目,以及負責運作關卡嘅人。
A release process, built in stages
二十個步驟同四個決策。每個決策都係桑基圖會顯示工作分兩個方向流出嘅地方。
建置及自動化測試
流程由程式碼完成開始,凍結範圍,然後執行自動化測試。第一個決策「自動化測試是否通過?」嘅「失敗」分支,會經過修正步驟返回建置。呢個迴圈係第一個要數嘅地方。
預備環境、簽核同放行決定
通過嘅建置會去預備環境、迴歸測試同 UAT,並整合同批准發佈就緒文件。「放行還是不放行?」嘅「不放行」分支會返去修正步驟,所以發佈可以從流程後段退回。
生產環境同回頭路
發佈喺發佈時段內部署,並做冒煙測試。「這個版本是否健康?」分流到持續監察,或者回退至上一個版本,再返去修正步驟。回退係最昂貴嘅出口,所以佢嘅計數最重要。
監察同緊急修正
觀察期完結後,「生產環境是否發現缺陷?」會將發佈送去緊急修正(重新進入部署),或者去發佈版本說明並結案。數下緊急修正分支幾多次被行過。
運作方式
畫出帶決策嘅流程
每個關卡都畫成帶標記出口嘅決策,例如「通過」同「失敗」。畫成普通步驟嘅關卡會收埋你想數嘅出口。
揀一個時段同一個單位
取最近一個季度,數發佈;如果發佈頻繁,就數建置。喺資料說明入面寫明用邊個。
數每個決策嘅出口
對每個決策,數有幾多項走邊個出口。數字取自你嘅 CI 系統、工單或者發佈紀錄。
用桑基圖畫出計數
以決策做節點,出口做流。檢查流入每個節點嘅數目等於流出。
先睇最闊嘅退回分支
最闊而且指向後面嘅分支,好可能就係樽頸。閱讀嗰啲項目,搵出原因。
應避免的錯誤
只數最終結果
如果只數發佈咗嘅,迴圈就會消失。要喺每個決策處計數,否則桑基圖會顯示一個冇發生過嘅順暢流程。
混用單位
建置、發佈同工單係唔同單位。成張圖揀一個,並寫明。
將計數當成原因
「失敗」分支闊只表示測試經常失敗,唔表示點解。改動流程之前,先睇失敗嘅項目。
開啟軟件發佈流程圖
開啟發佈範本,將關卡調整成你嘅流程,再數每個出口。
相關指南
常見問題
如果我只想要桑基圖,點解仲要畫流程圖?
因為流程圖決定節點係乜。冇佢,桑基圖只會顯示你嘅工具碰巧匯出嘅階段,而呢啲往往唔係人哋作決定嘅關卡。
我需要幾多個發佈?
要每個出口都有多過幾件。少於大約 20 個,就用表格顯示計數,而唔係圖表。
呢個可以取代量度前置時間嗎?
唔可以。前置時間話你知幾耐;桑基圖話你知工作喺邊度離開或者返轉頭。兩者並用,並比較同一個時段。