持續交付流水線為何對軟體開發如此重要?

2021-08-19 13:04:06 字數 1708 閱讀 1528

持續交付(cd)是一種軟體策略,它使企業盡可能快速有效地向使用者提供新特性。持續交付的核心思想是建立可重複、可靠和逐步改進的過程,從而將軟體從概念變為現實帶給客戶。持續交付的目標是通過自動化軟體生產線使變更不斷流入生產。持續交付流水線使持續交付成為可能。

流水線將軟體交付過程分成階段。每個階段旨在從不同角度驗證新特性的質量,以確認新功能,並防止失誤給使用者造成影響。流水線應向團隊提供反饋,並讓所有交付新特性的人員了解變更流。

雖然沒有標準流水線這樣的東西,但典型的持續交付流水線包括以下階段:構建自動化和持續整合、測試自動化和部署自動化。

1.構建自動化和持續整合

流水線首先會構建二進位制檔案來建立可交付成果,這些成果然後被傳遞到後續階段。開發人員實現的新特性被持續整合到****庫中,並被構建和進行單元測試。這是最直接的反饋迴圈,它可以通知開發團隊其應用程式**的健康狀況。

2.測試自動化

在這個階段,新版本的應用程式經過嚴格測試,以確保其達到所有預期的系統質量。通過流水線驗證所有相關方面極為重要 - 無論是功能、安全性、效能或合規性。該階段可能涉及不同型別的自動或手動(至少最初需要這樣)活動。

3.部署自動化

每次將應用程式安裝在測試環境中時都需要進行部署,但部署自動化的最關鍵時刻是上線時間。由於前面的階段已經驗證了系統的整體質量,所以部署已是乙個低風險的步驟。部署可以分階段,可以將新版本最初只發布到生產環境的一部分,而非全部,並在完全上線之前進行監控。部署是自動化的,如果需要,它可以在幾分鐘內為使用者提供可靠的新功能。

4.你的流水線需要平台分配和配置管理

部署流水線由平台分配和系統配置管理支援,它允許團隊自動或通過按下某個按鈕來建立、維護和拆除完整的環境。

自動平台分配確保你的候選應用程式部署到正確配置和可複製的環境中並進行測試。它還有助於橫向可擴充套件性,並允許企業隨時在沙箱環境中試驗新產品。

5.編排一切:發布和流水線編排

部署流水線中的多個階段需要不同小組的人員進行協作和監控新版本應用程式的發布。發布和流水線編排提供了整個流水線的頂層檢視,使你能夠定義和控制階段,並深入了解整個軟體交付過程。

通過為你的發布建立價值流對映,你可以突出顯示任何殘餘的低效率和熱點,並找到改善流水線的機會。

6.在質量未達標前,不要新增新的功能!

持續交付指使你的組織能夠快速可靠地將乙個個新特性帶入生產。這意味著每個單獨的特性需要在上線之前進行測試,確保其滿足整個系統的質量要求。

在傳統的環境中,開發團隊通常會一次性地實施整個新版本,而且當專案接近完成時,他們才解決軟體質量屬性問題(如魯棒性、可擴充套件性和可維護性)。然而,隨著截止日期的臨近和預算壓力的增加,質量往往是首先被妥協的。

採用在保證質量達標之前不新增新功能的原則,可以避免系統質量差、使用者滿意度低和無止境地貼「質量創可貼」的現象。你應該始終首先滿足並保持你的質量水平,然後才考慮逐漸向系統新增功能。

使用持續交付,每個新特性從一開始就需要滿足系統整體的質量水平。只有達到這個質量水平,才能將特性轉移到生產中。

7.開始進行持續交付

顯然,組織不能也不該在所有業務部門立即採用持續交付。最好的辦法是專注於改善你最大的交付瓶頸。持續交付會自動顯示下乙個瓶頸是什麼。這使你可以度量你的改進。

使用持續交付的主要目標是使比以前的迭代更好的新特性和功能上線,並逐漸整合和完善整個組織的持續交付原則。慢慢地走,平穩地走——觀察改進!

本文的大部分內容在《連續交付的it經理指南》中有更廣泛的敘述,該指南可通過go.xebialabs.com/it-managers-guide-to-cd.html獲取。

流水線排程

n個作業要在由2臺機器m1和m2組成的流水線上完成加工。每個作業加工的順序都是先在m1上加工,然後在m2上加工。m1和m2加工作業i所需的時間分別為a i 和b i 你可以安排每個作業的執行順序,使得從第乙個作業在機器m1上開始加工,到最後乙個作業在機器m2上加工完成所需的時間最少。求這個最少的時間...

流水線冒險

流水線冒險 回顧一下常用五階段流水線 f 取指 d 解碼 e 執行 m 訪存 w 寫回 注意 對暫存器檔案的寫只有在時鐘上公升的時候才會更新!資料冒險的原因 對暫存器檔案的讀寫是在不同階段進行的 1.用暫停來避免資料冒險 暫停時,處理器會停止流水線中一條或多條指令,直到冒險條件不再滿足。在本該正常處...

渲染流水線

應用階段 cpu準備資料,skinmeshrender,meshfilter,meshrender 頂點資料,三角形資料,法線資料,切線資料,渲染設定指令,紋理資料,uv資料 由cpu傳送給gpu,即一次drawcall 幾何階段 頂點變換,計算頂點顏色 如逐頂點光照 齊次裁剪空間,透視除法,歸一化...