DevOps實踐-設計-部署流水線設計

DevOps實踐系列文章,請參見連接。

描述

在一個軟件產品公司中,一般的基礎設施會包括在每個產品線上的各種環(huán)境、以及針對這些環(huán)境構建起來的部署流水線。

  • local:本地開發(fā)環(huán)境
  • dev:內部開發(fā)環(huán)境
  • mock:團隊間協(xié)作時使用的模擬環(huán)境
  • test:供測試人員測試環(huán)境
  • performance:非功能需求測試環(huán)境
  • stage:試運行環(huán)境(新功能部分目標用戶使用)
  • production:對外開放的產品環(huán)境

一個已經上線的正式產品,第一要務就是保證線上系統(tǒng)是穩(wěn)定可靠運行的。所以需要通過各種手段保證新功能上線,線上系統(tǒng)問題的快速反饋與立即解決。根據(jù)不同公司產品形態(tài)的不同,每個公司都需要有一套功能上線流程以保證線上系統(tǒng)的正常運行。


開發(fā)到上線的流程(使用mermaid編寫)

上圖中比較詳盡的描述了一個功能從開發(fā)到上線的整體過程。且在過程中每一個過程都由不同的角色參與。最終保證系統(tǒng)在線上環(huán)境的正常運行。故根據(jù)上圖的流程下面對持續(xù)交付過程中操作進行分析。

分析與拆分

軟件開發(fā)是一個團隊合作的工作。在圖中由相關的人員做相關的推動之后功能才能進入到下一個步驟。每一個步驟都可以將動作分為:構建、部署、測試和發(fā)布。而每個步驟所做的內容也有所不同,下面以步驟和環(huán)境例舉要做哪些操作:

步驟 構建 部署 測試 發(fā)布
開發(fā)集成 編譯
代碼掃描
單元測試
簡單部署
部分環(huán)境部署
開發(fā)測試 推送到測試環(huán)境
團隊間協(xié)作 編譯
自動接口測試
無部署
mock服務器
接口測試 將接口模擬發(fā)布
交付測試 編譯
自動驗收測試
全環(huán)境部署 自動回歸測試 推送到用戶驗證環(huán)境
交付運維 編譯 容器部署
負載節(jié)點
升級腳本驗證
release notes驗收
推送到正式環(huán)境
正式上線 編譯
構建容器
容器部署
負載節(jié)點
無測試 允許回滾

對上面的操作進行拆分后,可以分為對資源的管理工作:

  • 二進制包
    下載代碼、依賴管理、編譯、打包、代碼掃描、單元測試
  • 容器
    構建、發(fā)布、拉取、運行
  • 部署
    架構即代碼、藍綠發(fā)布、回滾

設計原則

前一段時間寫了一篇分層架構模式,這里以分層的方式去說明部署流水線的分層關系。這里的分層其實是理解或概念的層面。這里將分部署流水線設計分為幾個層次:服務層,流程層,原子操作層。

  • 服務層
    提供自定義能力,可以將流程和原子操作組合成一個適用于當前業(yè)務系統(tǒng)的。這個是最頂層,最實用的實用層。

  • 流程層
    提供一整套流程提供各種各樣的流程。大到可以將整體持續(xù)交付寫到一個Pipeline內,也可以只對容器構建,發(fā)布過程形成一個Pipeline。只要之后可以用流程去組織各種各樣的大的服務。

  • 原子操作層
    提供最基礎的原子操作。這里可以將上面提到的對資源的操作作為一個原子操作。不需要劃分的更小。

總結

最好的實踐,是在有大量項目的情況下去實現(xiàn)原子操作和流程層,然后在這兩層上去實現(xiàn)具體項目的服務。如果產品型公司,比較好的方式是直接實現(xiàn)流程層和服務層。這樣既可以滿足業(yè)務要求,也可以降低流水線構建的成本。

參考

持續(xù)交付

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯(lián)系作者
【社區(qū)內容提示】社區(qū)部分內容疑似由AI輔助生成,瀏覽時請結合常識與多方信息審慎甄別。
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發(fā)布,文章內容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

相關閱讀更多精彩內容

友情鏈接更多精彩內容