什麼是 DevOps?
在傳統的軟體開發模式中,開發人員為新功能、產品、錯誤修正等撰寫大量程式碼,然後將工作交給作業團隊進行部署,通常是透過自動化的票務系統進行。作業團隊會在其佇列中收到此請求,測試程式碼,並讓其準備好投入生產 - 此流程可能需要數天、數週或數月的時間。在這種傳統模式下,如果作業在部署過程中遇到任何問題,團隊就會將票據傳回給開發人員,告訴他們該如何修正。最後,當這些來來回回的問題解決之後, 工作負載 就會被推進生產。
這種模式使得軟體交付成為一個冗長且分散的過程。開發人員經常將作業團隊視為路障,拖慢他們的專案時程,而作業團隊則覺得自己像是開發問題的傾銷場。
DevOps 透過在整個軟體交付流程中聯合開發團隊與作業團隊來解決這些問題,使他們能夠提早發現並修復問題、自動化測試與部署,並縮短上市時間。
DevOps 不是
- 結合了 Dev 和 Ops 團隊:仍然有兩個團隊,只是以溝通、合作的方式運作。
- 它有自己獨立的團隊:根本就沒有什麼「DevOps 工程師」。雖然有些公司在嘗試過渡到 DevOps 文化時,可能會指定一個 DevOps 團隊作為試點,但 DevOps 是指開發人員、測試人員和作業人員在整個軟體交付生命週期中通力合作的文化。
- 一種工具或一套工具:雖然有些工具可以很好地配合 DevOps 模式,或有助於推廣 DevOps 文化,但 DevOps 始終是一種策略,而非工具。
- 自動化:雖然自動化對 DevOps 文化非常重要,但它本身並不能定義 DevOps。
DevOps 定義
在 DevOps 模式中,開發人員不會先編寫龐大的功能集,再盲目交給作業系統進行部署,而是會經常交付少量程式碼以進行持續測試。開發和營運團隊不再透過票務系統溝通問題和請求,而是定期開會、分享分析結果,並共同擁有端到端的專案。
CI/CD 管道
DevOps 是持續整合與持續交付(或持續部署)的循環,又稱為 CI/CD 管道。CI/CD 管道可整合開發與作業團隊,藉由基礎架構與工作流程自動化,以及不斷地可測量應用程式效能,提高生產力。看起來是這樣的:

- 持續性整合 需要開發人員每天多次將程式碼整合至程式碼儲存庫,以進行自動測試。每次檢查都會經由自動建置驗證,讓團隊能及早發現問題。
- 持續交付(Continuous Delivery)與持續部署(Continuous Deployment)不能混淆,持續交付是指 CI 管道自動化,但代碼在生產中實作之前必須經過手動技術檢查。
- 持續部署 讓持續交付更進一步。代之以手動檢查,代碼通過自動測試並自動部署,讓客戶即時使用新功能。
DevOps 與安全性
DevOps 的一個問題是,安全性經常會被忽略。開發人員動作迅速,工作流程自動化。安全性是一個獨立的團隊,開發人員不希望因為安全性檢查和請求而減慢速度。因此,許多開發人員在部署時沒有經過適當的安全管道,難免會犯下有害的安全錯誤。
為了解決這個問題,組織正在採用 DevSecOps。DevSecOps 採用 DevOps 背後的概念,即開發人員與 IT 團隊應在整個軟體交付過程中密切合作,而非各自為政,並將其延伸至安全性,並將自動檢查整合至完整的 CI/CD 管道中。這就解決了安全性看起來像是外來力量的問題,並讓開發人員在不影響資料安全性的情況下維持速度。