昨天我們稍微聊了一下「DevOps 工程師為何搞不定 DevOps Pipeline?」,今天沿著同樣的話題繼續聊下去。
在昨天的內容中,筆者提到搞不定的原因有:
今天我們繼續探討 DevOps Pipeline 還有哪些難題。
首先我們要先定義一下,這個 DevOps Pipeline 包含哪些內容(Stage / Job)?就讓我們詢問 Google 大神,看看搜尋「DevOps Pipeline」可以得到哪些答案?

(筆者在 Google 圖片搜尋「devops pipeline」時,最前面會顯示上圖中的這些內容。)
我們從中挑選幾個來比較一下。
Commit -> Build -> Unit Tests -> Merge to Trunk -> Integration Tests -> Staging -> Regression Tests -> Deploy
Plan -> Code -> Build -> Test -> Release -> Deploy -> Operate -> Monitor
Push Code -> Azure Repos -> Build -> Release -> Deploy -> Testing / Acceptance / Production
Plan -> Code -> Integarte -> Test -> Release -> Deploy -> Operate
Version Control -> Build -> Unit Test -> Deploy to Test -> Auto Test -> Deploy to Production -> Measure / Validate -> Feedback
Ready to share tests -> Publish to repository -> Acceptance tests -> Ready to ship tests -> Pre-Prod -> Deploy to production
上面這些範例雖然彼此使用的詞不太一樣,以及有一些 Stage / Job 的先後順序不同或拆分的粒度不同;但如果我們試著將它們統整一下,其實可以將 Pipeline 合併成下面這幾個 Stage / Job,從程式開發、送入版控、編譯、不同層級的自動化測試、交付、不同層級的部署及最後的維運。
Code -> Build -> Test -> Release -> Deploy -> Test -> Deploy -> Production -> (Test) -> Operate
你覺得在這一串 Pipeline 中,暗藏了多少玄機?讓我們隨意的列舉看看⋯⋯
根據上面的例子,我們可以發現每一個 Stage 都有多項值得探討的議題需要處理,有的只要善用工具就能解決,有的需要跨團隊的建立共識與原則,但也有些議題較為複雜,在議題與議題之間會相互交疊、彼此影響,讓人無法簡單的各別擊破,必須更全面性的處理它們。

(越是認識 DevOps,筆者就越覺得 DevOps 內含的議題就如同上圖,它們並非單純是點與點之間的連結,而是每一個點都還有著自己的影響範圍,導致議題之間是會彼此交疊互相影響的。)
你說這條 DevOps Pipeline 真的是一位 DevOps 工程師能夠搞定的東西嗎?
不,也許我們應該說,我們真的只是在處理一條 DevOps Pipeline 嘛?
或者,我們真的只需要處理那條 DevOps Pipeline 嗎?
還記得筆者在 Day12 聊到的內容嗎?我們那時就已經聊過了——DevOps 不只是 CI/CD。
同樣是連續假期的日子,就讓我繼續偷懶一下,聊少一點嘍~
DevOps 輕鬆聊,我們明天見~