關於什麼是 DevOps

CKL的思考發表於2020-10-28

關於什麼是DevOps
最近聽到業內一個很熱門的詞:DevOps。那麼什麼是DevOps呢?它僅僅是Dev和Ops兩個崗位職責的拼接麼?還是指的從程式碼研發的到釋出的流程?還是一套符合敏捷思維的理論體系?你覺的會是什麼呢?
其實業內也沒有一個很明確的定義到底是什麼是DevOps,各有各的理解。這裡採用林偉丹老師對DevOps給出的定義:DevOps是敏捷軟體開發與精益生產的思想演進,應用到IT端到端的價值鏈中,使得業務基於現代資訊科技,通過文化、組織與技術變革而獲取更大的成功。是不是很不容易理解呢,也記不住,對吧。簡單來說就是以下三個基本資訊:
DevOps並沒有取代敏捷或者精益,而是友好的吸收和並存
DevOps的本質是不僅僅思考軟體開發,而是整體價值鏈(是不是我們印象中的不一樣呢?)
DevOps的預期價值是更多的IT回報。

研發流程中對應的敏捷理論

在整體研發過程中(從商業論證到產品交付)中,不同的階段會有對應的理論支撐,簡單來說對應以下對應關係(大概的分類,不是十分精確,但整體上有助於我們理解)
敏捷(Agile):主要覆蓋的是專案管理(部分)到可釋出的增量產品(測試通過)的過程,通常說的Scrum只是敏捷的其中一種實踐方式(以後有機會細講)。
CI(持續整合 Continuous Integration):強調每次的程式碼交付都是可測試、快速反饋、高質量的整合,隨時可釋出。
CD(持續部署 Continuous Deployment):實現最終的業務價值交付,讓使用者可以直觀的感受到成果。
ITSM(IT服務管理):強調的是輕量級的ITSM,主要用於管理生產事件和變更流程
Lean(精益管理):衍生自豐田生產方式的一種管理哲學,強調消除浪費。
TPS(豐田管理 Toyota Production System):提倡拉動式生產,努力做到Just In Time(剛剛好的生產)
組織文化:DevOps理念不僅僅是工具的使用,而是自上而下的文化變革,需要高層從上到下的支援與貫徹。
CICD的區別
在上面的概念中,有簡單的提到了CI和CD的區別,這裡單獨拎了來再講講,是因為這個是我們目前接觸的頻率非常高的詞,有必要再統一下概念。其實這裡還隱藏了一個CD(Continuous Delivery):
CI(持續整合 Continuous Integration):關注開發每次提交的程式碼是否是正確的,強調的是程式碼層面的實現是否完成,是否是可工作的軟體(整合測試通過,每次合併程式碼都不影響有的功能,需要高度的自動化測試介入,減少人工介入)。
CD(持續交付Continuous Delivery):關注需求是否完全實現,是否可以給使用者演示,強調的是可釋出的產品增量(實現了具有價值的某些使用者故事)
CD(持續部署 Continuous Deployment):最終釋出生產的業務,讓使用者可以直接使用,強調業務最終產生了實際的價值並接受市場的反饋。

相關文章