如何找出軟件發佈流程入面嘅樽頸

將發佈流程畫成流程圖,數清楚每個決策有幾多件事走邊個出口,再用桑基圖顯示。找出建置失敗、退回或者等得最耐嘅關卡。

發佈樽頸就係工作積壓、失敗或者被退回嘅關卡。呢份指南先畫出流程,令每個關卡都係有名嘅出口嘅決策,再數發佈走過各個出口嘅數目。

簡而言之

  • 先將流程畫成帶有標記出口嘅決策,再開始計數。
  • 喺一個時段內,數發佈(或建置)走過每個出口嘅數目。
  • 退回分支好闊嘅關卡就係樽頸,即使佢本身好快。
  • 用桑基圖顯示計數,並用流程圖去解釋。

由關卡開始,唔係由數字開始

團隊通常會用平均時間搵最慢嘅步驟。咁樣搵到慢嘅任務,卻搵唔到將工作送返轉頭嘅關卡。一個發佈可能只喺測試度停一日,卻要損失一個星期,因為測試失敗令佢返去修正步驟,整個週期又行多次。要睇到呢點,就要畫出帶決策嘅流程,數有幾多個發佈走每個出口。

流程圖提供結構:每個決策都有標好嘅分支,每個分支都有計數。例子係一個有四個決策嘅發佈流程:自動化測試、放行還是不放行、生產環境健康,以及生產環境缺陷。有咗每個分支嘅計數,桑基圖就可以用闊度顯示出嚟。建置階段可以睇 /yue/sankey/ci-pipeline-outcomes,之前嘅審查階段可以睇 /yue/sankey/pull-request-review-flow。

主張要保守。計數顯示工作喺邊個關卡離開,唔顯示原因。原因要靠閱讀失敗嘅項目,以及負責運作關卡嘅人。

A release process, built in stages

二十個步驟同四個決策。每個決策都係桑基圖會顯示工作分兩個方向流出嘅地方。

  1. 建置及自動化測試

    流程由程式碼完成開始,凍結範圍,然後執行自動化測試。第一個決策「自動化測試是否通過?」嘅「失敗」分支,會經過修正步驟返回建置。呢個迴圈係第一個要數嘅地方。

  2. 預備環境、簽核同放行決定

    通過嘅建置會去預備環境、迴歸測試同 UAT,並整合同批准發佈就緒文件。「放行還是不放行?」嘅「不放行」分支會返去修正步驟,所以發佈可以從流程後段退回。

  3. 生產環境同回頭路

    發佈喺發佈時段內部署,並做冒煙測試。「這個版本是否健康?」分流到持續監察,或者回退至上一個版本,再返去修正步驟。回退係最昂貴嘅出口,所以佢嘅計數最重要。

  4. 監察同緊急修正

    觀察期完結後,「生產環境是否發現缺陷?」會將發佈送去緊急修正(重新進入部署),或者去發佈版本說明並結案。數下緊急修正分支幾多次被行過。

運作方式

  1. 畫出帶決策嘅流程

    每個關卡都畫成帶標記出口嘅決策,例如「通過」同「失敗」。畫成普通步驟嘅關卡會收埋你想數嘅出口。

  2. 揀一個時段同一個單位

    取最近一個季度,數發佈;如果發佈頻繁,就數建置。喺資料說明入面寫明用邊個。

  3. 數每個決策嘅出口

    對每個決策,數有幾多項走邊個出口。數字取自你嘅 CI 系統、工單或者發佈紀錄。

  4. 用桑基圖畫出計數

    以決策做節點,出口做流。檢查流入每個節點嘅數目等於流出。

  5. 先睇最闊嘅退回分支

    最闊而且指向後面嘅分支,好可能就係樽頸。閱讀嗰啲項目,搵出原因。

應避免的錯誤

  • 只數最終結果

    如果只數發佈咗嘅,迴圈就會消失。要喺每個決策處計數,否則桑基圖會顯示一個冇發生過嘅順暢流程。

  • 混用單位

    建置、發佈同工單係唔同單位。成張圖揀一個,並寫明。

  • 將計數當成原因

    「失敗」分支闊只表示測試經常失敗,唔表示點解。改動流程之前,先睇失敗嘅項目。

開啟軟件發佈流程圖

開啟發佈範本,將關卡調整成你嘅流程,再數每個出口。

開啟軟件發佈流程圖

相關指南

常見問題

如果我只想要桑基圖,點解仲要畫流程圖?

因為流程圖決定節點係乜。冇佢,桑基圖只會顯示你嘅工具碰巧匯出嘅階段,而呢啲往往唔係人哋作決定嘅關卡。

我需要幾多個發佈?

要每個出口都有多過幾件。少於大約 20 個,就用表格顯示計數,而唔係圖表。

呢個可以取代量度前置時間嗎?

唔可以。前置時間話你知幾耐;桑基圖話你知工作喺邊度離開或者返轉頭。兩者並用,並比較同一個時段。

本指南所用的範本

軟件發佈流程圖 — 軟件發佈流程圖:範圍凍結、自動化測試關卡、預備環境與 UAT、放行與否的審批、部署、回退與緊急修正。