NoOps 來了,DevOps 工程師的未來在何方?

隨著云技術(shù)采用率不斷上升,應(yīng)用程序架構(gòu)的抽象級(jí)別也有所提高——從傳統(tǒng)的本地服務(wù)器遷移到了容器和無服務(wù)器部署。自動(dòng)化技術(shù)也已經(jīng)發(fā)展到了讓人工流程不再是首選的地步,即使是備份、安全管理和補(bǔ)丁更新等與基礎(chǔ)設(shè)施相關(guān)的活動(dòng)也更多通過自動(dòng)化來執(zhí)行。這種理想狀態(tài)相當(dāng)于一種 NoOps 環(huán)境,在這樣的環(huán)境中負(fù)責(zé)管理你的應(yīng)用程序生命周期的團(tuán)隊(duì)可以變得很小。理想情況下,在這樣的環(huán)境中,你的運(yùn)營團(tuán)隊(duì)所做的那些工作都沒必要做了。
毫無疑問,DevOps 現(xiàn)在已經(jīng)深深融入所有云優(yōu)先組織的 DNA 中,如今成為了一種常態(tài),而不是什么稀罕事物。云應(yīng)用程序需要敏捷性,而 DevOps 提供了這種敏捷性。然而,NoOps 是否意味著 DevOps 時(shí)代的終結(jié)?還是說它只是 DevOps 的下一個(gè)發(fā)展階段呢?
DevOps 的成功與否在很大程度上取決于你的開發(fā)和運(yùn)營團(tuán)隊(duì)之間的協(xié)作水平,因?yàn)樗鼘⑾到y(tǒng)管理員和開發(fā)人員聚集在一起,打破了他們各自業(yè)務(wù)之間的障壁。與此同時(shí),持續(xù)集成和持續(xù)部署的流程在 DevOps 中至關(guān)重要,它們有助于及早發(fā)現(xiàn)并預(yù)防問題,這反過來又會(huì)加快解決方案的交付速度。但請(qǐng)注意,DevOps 仍然需要運(yùn)營團(tuán)隊(duì)的參與。組織仍然依賴運(yùn)營團(tuán)隊(duì)來處理很多細(xì)節(jié)問題,例如:基礎(chǔ)設(shè)施配置管理、安全設(shè)置、備份、補(bǔ)丁管理等。
有了云之后,抽象和自動(dòng)化的發(fā)展水平日新月異。無論是計(jì)算、存儲(chǔ)、網(wǎng)絡(luò)還是安全性等等,隨便什么事物都可以放在云端,“作為服務(wù)”來使用。云服務(wù)提供商也在他們的自動(dòng)化生態(tài)系統(tǒng)上投入了大量資源。你可以使用自動(dòng)化模板或只通過幾個(gè) API 調(diào)用就輕松配置你的應(yīng)用程序組件。這些組件的持續(xù)管理過程也可以自動(dòng)化,這意味著維護(hù)環(huán)境的開銷變得越來越少,甚至不需要人力干預(yù)。這一趨勢(shì)發(fā)展下去就是 NoOps——基礎(chǔ)設(shè)施進(jìn)一步抽象化,與開發(fā)工作流緊密集成,不需要運(yùn)營團(tuán)隊(duì)來監(jiān)督流程。
NoOps 是最早由 Forrester 創(chuàng)造的一個(gè)術(shù)語,旨在提高生產(chǎn)力并比 DevOps 更快地交付結(jié)果。在理想情況下,開發(fā)人員永遠(yuǎn)不必與運(yùn)營團(tuán)隊(duì)的成員協(xié)作。相反,他們可以使用一組工具和服務(wù),以安全的方式負(fù)責(zé)任地部署開發(fā)所需的云組件,包括代碼和基礎(chǔ)設(shè)施。托管云服務(wù)(如 PaaS 或無服務(wù)器)充當(dāng) NoOps 的支柱,并利用 CI/CD 作為其部署的核心引擎。因此,請(qǐng)注意,并非所有場(chǎng)景都適合應(yīng)用 NoOps。
NoOps 和 DevOps 本質(zhì)上試圖實(shí)現(xiàn)的是相同的目標(biāo):改進(jìn)軟件部署流程并縮短產(chǎn)品上市時(shí)間。但是,DevOps 強(qiáng)調(diào)的是開發(fā)人員和運(yùn)營團(tuán)隊(duì)之間的協(xié)作,而 NoOps 的重點(diǎn)已經(jīng)轉(zhuǎn)向了完全自動(dòng)化。這聽起來像是某種銀彈,但這種新方法既有其優(yōu)勢(shì),也存在著很多挑戰(zhàn)。
自動(dòng)化程度更高,人數(shù)更少
NoOps 將重點(diǎn)轉(zhuǎn)移到了無需人工干預(yù)即可按設(shè)計(jì)部署的服務(wù)上。從基礎(chǔ)設(shè)施到管理活動(dòng),它的目標(biāo)是使用代碼來控制一切,這意味著所有組件都應(yīng)該作為代碼的一部分進(jìn)行部署,并且這些組件應(yīng)該是可以長(zhǎng)期維護(hù)的。NoOps 本質(zhì)上旨在消除支持代碼生態(tài)系統(tǒng)所需的人力資源。
充分利用云的力量
NoOps 最適合利用 PaaS 和無服務(wù)器解決方案的云環(huán)境。微服務(wù)和基于 API 的應(yīng)用程序架構(gòu)完全符合它的要求,因?yàn)樗鼈兲峁┝溯^細(xì)粒度的模塊化和自動(dòng)化。AWS、Azure 和 GCP 等領(lǐng)先的云服務(wù)提供商非常注重在 PaaS 和無服務(wù)器方面提供更多服務(wù)和功能,這也會(huì)加速 NoOps 的采用。在今天的云端領(lǐng)域,越來越多的數(shù)據(jù)庫即服務(wù)、容器即服務(wù)與函數(shù)即服務(wù)選項(xiàng)也有利于這一趨勢(shì),所有這些技術(shù)都支持高度自動(dòng)化。
從運(yùn)營到業(yè)務(wù)結(jié)果的關(guān)注點(diǎn)變化
NoOps 還將重點(diǎn)從運(yùn)營轉(zhuǎn)移了到業(yè)務(wù)成果上。與 DevOps 不同的是,在 DevOps 中,開發(fā)團(tuán)隊(duì)和運(yùn)營團(tuán)隊(duì)一起協(xié)作以向客戶提供價(jià)值主張,而 NoOps 在理想情況下消除了對(duì)運(yùn)營團(tuán)隊(duì)的任何依賴,從而進(jìn)一步縮短了產(chǎn)品上市時(shí)間。NoOps 的重點(diǎn)轉(zhuǎn)移到了為客戶提供價(jià)值這一優(yōu)先任務(wù)上——換句話說,“速度為王”。
你仍然需要運(yùn)維
從理論上講,“不需要運(yùn)營團(tuán)隊(duì)來照顧你的基礎(chǔ)設(shè)施”可能聽起來很誘人。但是,根據(jù)現(xiàn)實(shí)中你的組織可實(shí)現(xiàn)的自動(dòng)化水平,你可能仍然需要運(yùn)營團(tuán)隊(duì)來處理異?;虮O(jiān)控結(jié)果。完全指望開發(fā)人員解決這個(gè)問題會(huì)抵消 NoOps 的優(yōu)勢(shì),并讓他們無法專注于交付業(yè)務(wù)成果??紤]到開發(fā)人員不一定具備解決運(yùn)營問題所需的技能,這種辦法也不是很現(xiàn)實(shí)。比如說在一個(gè)災(zāi)難恢復(fù)(DR)場(chǎng)景中,你仍然需要運(yùn)營團(tuán)隊(duì)的支持來調(diào)用 DR 計(jì)劃,并將流量切換到故障轉(zhuǎn)移站點(diǎn)。
考慮你的環(huán)境情況
此外,并非所有環(huán)境都可以過渡到 NoOps?;旌喜渴鸷瓦z留的老舊基礎(chǔ)設(shè)施會(huì)產(chǎn)生瓶頸——你的確可以部署一些自動(dòng)化過程,但在這些情況下不能完全消除人工流程。雖然 PaaS 和無服務(wù)器都是針對(duì) NoOps 的技術(shù),但它們也可能成為限制因素,尤其是在數(shù)字化轉(zhuǎn)型期間。重構(gòu)遺留的單體應(yīng)用程序以適應(yīng) PaaS 范式,需要很多提前可能想不到的額外努力。在開始采用 NoOps 方法之前,你需要根據(jù)具體情況仔細(xì)評(píng)估利弊。
誰來負(fù)責(zé)安全性?
最后一點(diǎn)也很重要,那就是安全性和合規(guī)性問題。符合安全最佳實(shí)踐的自動(dòng)化部署并不會(huì)完全消除安全性方面的隱患。傳統(tǒng)上,運(yùn)營和開發(fā)團(tuán)隊(duì)之間的職責(zé)是分離的。運(yùn)營團(tuán)隊(duì)與安全團(tuán)隊(duì)合作實(shí)施控制措施,保護(hù)應(yīng)用程序免受威脅和漏洞的侵害。同時(shí),運(yùn)營團(tuán)隊(duì)還負(fù)責(zé)處理身份和訪問管理(IAM)解決方案。
云端的威脅媒介和攻擊方法日新月異,你的云端安全控制策略也應(yīng)該跟上腳步。合規(guī)性也是如此。并非所有組織都可以將這方面的責(zé)任委托給一組自動(dòng)化流程。減少或移除運(yùn)營團(tuán)隊(duì)可能意味著你需要增加對(duì)安全團(tuán)隊(duì)的投資,才能確保你的環(huán)境的安全性和合規(guī)性。
人們更多把 DevOps 看作是一個(gè)旅程,而不是一個(gè)目的地,它的重點(diǎn)是持續(xù)改進(jìn)。更合理的角度來看,NoOps 是 DevOps 的演變結(jié)果,其目標(biāo)是實(shí)現(xiàn)高度自動(dòng)化的完美最終狀態(tài)。它可以讓組織將時(shí)間、精力和資源從運(yùn)營轉(zhuǎn)到業(yè)務(wù)成果上。然而,這種變化不可能一蹴而就。
要讓 NoOps 成為現(xiàn)實(shí),組織需要做很多基礎(chǔ)工作。你需要在云端選擇正確的應(yīng)用程序技術(shù)棧和托管服務(wù)(比如 PaaS 和無服務(wù)器),實(shí)現(xiàn)順利過渡。你需要加入組件管理、配置和安全控制才能開始遷移過程。即便如此,也會(huì)有一些松散的組件(比如遺留系統(tǒng)),需要更多的時(shí)間和精力來完成遷移,或者它們根本就沒法遷移。即使只剩下一個(gè)遺留系統(tǒng),你也需要安排人手來處理它的運(yùn)維需求。
在 NoOps 世界中,DevOps 工程師的角色也會(huì)發(fā)生變化,因?yàn)樗麄冇袡C(jī)會(huì)學(xué)習(xí) NoOps 所需的很多新技能和流程。與 DevOps 一樣,NoOps 更多是關(guān)于文化和流程,而非技術(shù)層面的轉(zhuǎn)變。組織需要有意識(shí)地做出這種轉(zhuǎn)變,同時(shí)腳踏實(shí)地地處理轉(zhuǎn)型過程中面臨的種種實(shí)際挑戰(zhàn)。
- END -
?推薦閱讀? 31天拿下 K8s 含金量最高的CKA+CKS證書!? 我的云服務(wù)器被植入挖礦木馬,CPU飆升200% 一名運(yùn)維小哥對(duì)運(yùn)維規(guī)則的10個(gè)總結(jié),收藏起來 運(yùn)維工程師不得不看的經(jīng)驗(yàn)教訓(xùn)和注意事項(xiàng) Kubernetes上生產(chǎn)環(huán)境后,99%都會(huì)遇到這2個(gè)故障 如何用 Kubernetes 實(shí)現(xiàn) CI/CD 發(fā)布流程?| 漫畫 K8s kubectl 常用命令總結(jié)(建議收藏) Kubernetes 的這些核心資源原理,你一定要了解 終于明白了 DevOps 與 SRE 的區(qū)別! 我在創(chuàng)業(yè)公司的 “云原生” 之旅 基于Nginx實(shí)現(xiàn)灰度發(fā)布與AB測(cè)試 編寫 Dockerfile 最佳實(shí)踐 搭建一套完整的企業(yè)級(jí)高可用 K8s 集群(二進(jìn)制方式)
點(diǎn)亮,服務(wù)器三年不宕機(jī)


