大家好,我是陳哥,今天想和大家聊聊DevOps與其他“Ops”。
DevOps不僅僅是將敏捷開發(fā)概念與IT運維相結(jié)合,還簡化了在云環(huán)境中開發(fā)和部署應用程序的過程,從而使開發(fā)生命周期大大縮短。這就是DevOps作為一種開發(fā)方法流行的原因。
即使在今天,DevOps仍然是大多數(shù)優(yōu)化管道的核心。持續(xù)交付變成了規(guī)范,而不是要實現(xiàn)的目標。應用的開發(fā)是迭代的,新的更新被推送到云端,用zero down代替部分或整個環(huán)境。因為有了DevOps,即使是大型的多部分更新也更加易于管理。
然而,就結(jié)合軟件開發(fā)和IT運維而言,DevOps這個術(shù)語并非唯一。它有著許多變體和子類型——以及概念的修改——它們被不同的軟件開發(fā)團隊廣泛采用。對于許多人來說,DevOps為跨團隊的良好流程(包括自動化)奠定了基礎(chǔ)。但是為了改進方法論,團隊可以采用下面的一種或多種主要方法——因為大多數(shù)被考慮的方法都是為了實現(xiàn)“更好的”DevOps文化而進行的調(diào)整。
那么,其他需要考慮的“Ops”是什么呢?它們與DevOps相比如何?

DevOps vs. NoOps
NoOps背后的方法是以一種不需要內(nèi)部團隊進行操作的方式來自動化IT基礎(chǔ)設(shè)施。在這種方法中,操作團隊的所有維護和類似任務都是完全自動化的,這意味著不需要手動干預過程。
NoOps的意圖與DevOps相似,因為它專注于完全自動化工具和基礎(chǔ)設(shè)施,以改進軟件部署。然而,它較少關(guān)注敏捷和流程管理,因為它的工作假設(shè)是開發(fā)人員擁有自動化的工具和流程,他們不需要知道如何使用它們的具體細節(jié)。
為了實現(xiàn)這一目標,該方法的一部分“減輕”了開發(fā)人員的所有基礎(chǔ)設(shè)施顧慮,從而從云計算中獲得更多價值。與DevOps一樣,這是為了防止他們執(zhí)行耗時的任務,這些任務涉及與IT運營團隊就基礎(chǔ)架構(gòu)問題進行的所有交互。
在NoOps中,開發(fā)人員不需要為資源及其分布操心,因為這正是云的作用所在。在產(chǎn)品完成后,云提供商還將運行進一步的運維、監(jiān)視和維護。NoOps模型使用持續(xù)集成技術(shù),允許開發(fā)人員只專注于應用程序開發(fā)。
當組織開始選擇NoOps時,許多人認為這將是DevOps的終結(jié)。但在現(xiàn)實中,DevOps已經(jīng)發(fā)展了,NoOps并不是一個萬無一失的過程,盡管它加快了部署過程。我要警告不要孤立地采用NoOps,因為它缺乏流程和團隊管理,而開放的溝通通常會帶來更好的結(jié)果和生產(chǎn)力。
DevOps vs. DevSecOps
從這兩種方法的名稱來看,很容易相信這兩種方法有一個主要區(qū)別:將安全性集成到管道中。然而,我認為它們是同一個概念。如果DevOps是“在制品”(WIP)的減少,那么自然的進展是在管道中進一步提高安全性。如果您需要提升或提升組織對多個因素的安全關(guān)注,那么這種方法非常有用。
DevSecOps采用了傳統(tǒng)的DevOps方法,并在工作流程中添加了額外的安全檢查、代碼驗證和深入測試。DevSecOps從流程的一開始就集成了安全性,而不是在周期結(jié)束時讓安全性成為一個問題。

兩者有相似之處,也有相似的主要優(yōu)勢。DevOps和DevSecOps都允許CI/CD管道實現(xiàn)更大的自動化。只要速度和交付處于優(yōu)先級列表的頂端,DevOps和DevSecOps就會繼續(xù)在工作流的不同部分利用自動化。
兩者還依賴于在溝通和協(xié)作的幫助下持續(xù)運行的過程。團隊溝通是保持敏捷性和交付速度的關(guān)鍵部分。開發(fā)人員、安全專家和運維人員之間的協(xié)作也至關(guān)重要。
DevOps vs. GitOps
GitOps是DevOps的另一個廣受歡迎的分支,在過去的一年里得到了廣泛的關(guān)注。顧名思義,GitOps更關(guān)注于使用Git作為一種方法來自動化其余的持續(xù)交付管道。有了Git作為唯一的數(shù)據(jù)源,從長遠來看,GitOps被認為更健壯、更可管理。
可以說,實施GitOps有一些潛在的優(yōu)勢。對于初學者來說,每個開發(fā)人員都熟悉Git和pull請求,因此集成GitOps作為一種加快交付速度的方法是一種簡單的過程,不需要掌握復雜的工具,也不需要總是對工作流進行更改。

GitOps還得到了市場上一些最好的云服務的支持。像AWS CodePipeline和AWS CodeBuild這樣的工具是為使用Git工具而設(shè)計的,這意味著自動構(gòu)建更新、測試錯誤、審查代碼以及將更新推送到生產(chǎn)環(huán)境的過程非常容易實現(xiàn)。
GitOps還提供了一套詳細的審計工具,并能夠隨時回滾更新。這是因為Git是每次更新的主要來源,這意味著整個管道也可以依賴Git日志來進行簡單地審計。然而,由于Git是唯一的事實來源,有必要對Git存儲庫進行足夠的保護,以避免不必要的提交或請求。
簡而言之,GitOps是DevOps的一個子集,旨在利用Git的強大優(yōu)勢。因此,大多數(shù)GitOps工作流嚴重依賴Kubernetes作為主要的容器化運行時。
*參考文章:Stefan Thorpe:Devops Versus Other 'Ops'