DevOps的盡頭會是NoOps嗎?
譯文開發世界中的事正在難以置信地快速發展,云上的自動化和擴展每天也都有新的高度。你幾乎可以對任何東西進行 "作為一種服務"--無論是存儲、網絡、云中、計算還是安全。云供應商也在越來越多地投資于他們的自動化生態系統。這將我們引向NoOps,在那里你不需要一個運營團隊來監督你的生命周期,因為一切都將自動化。
你可以使用自動化模板來配置你的應用程序組件,并自動進行組件管理,這意味著你的開銷更少,人為干擾最小甚至沒有。這聽起來不是很好嗎?
但這是一個明智的選擇,實施它又有哪些優勢和挑戰呢?
NoOps:這是一個明智的選擇嗎?
你已經知道,DevOps的目的是使應用程序的部署更快、更順利,重點是持續改進。NoOps是由Forrester公司的Mike Gualtieri創造的術語,其核心目標相同,但缺少專業操作人員。
在一個理想的NoOps場景中,開發人員永遠不需要與運營團隊的成員合作。相反,NoOps使用無服務器和PaaS,在他們需要的時候獲得他們需要的資源。這意味著,你可以使用一套服務和工具來安全地部署所需的云組件(包括基礎設施和代碼)。此外,NoOps利用CI/CD管道進行部署。
運營團隊對數據相關的任務非常有效,將數據的收集、分析和存儲視為其職能的關鍵部分。然而,請記住,你可以將大部分的數據收集任務自動化,但你不一定能從自動化分析中獲得同樣水平的洞察力。
從本質上講,NoOps可以作為一種自助服務模式,云供應商成為你的運營部門,使底層基礎設施層自動化,不再需要一個團隊來管理它。許多人認為,一個需要零人參與完全自動化的IT環境——真正的NoOps是不明智的,甚至是不可能的。
NoOps與DevOps:優勢與挑戰
DevOps強調開發人員和運營團隊之間的合作,而NoOps則強調完全自動化。然而,他們都試圖實現同樣的事情——更快的上市時間和更好的軟件部署過程。然而,在考慮采用DevOps與真正的NoOps方法時,存在著優勢和挑戰。
優勢:
更多的自動化,更少的維護
通過使用代碼控制一切,NoOps旨在消除支持你的代碼生態系統所需的額外勞動。這意味著不需要人工干預,從長遠來看,每一個組件都將更容易維護,因為它將作為代碼的一部分被部署。但這是否會影響到DevOps的工作?
利用云的全部力量
有很多支持極端自動化的新技術,包括容器即服務(CaaS)或功能即服務(FaaS),所以領先的云服務提供商可以幫助NoOps的采用。這是一個極好的消息,因為運營部門可以根據需要增加云資源,與DevOps(開發和運營團隊共同決定應用程序的運行地點)相比,導致更高的容量規劃。
快勝慢
NoOps關注業務成果,將重點轉移到為客戶提供價值的優先任務上,消除對運營團隊的依賴,進一步縮短上市時間。
挑戰:
你仍然需要運營
從理論上講,不依靠運營團隊來照顧你的底層基礎設施,聽起來像是一個夢想。實際上,你可能需要他們來監控結果或處理異常情況。指望開發人員完全處理這些責任會使他們的注意力從交付業務成果上轉移,考慮到NoOps的好處,這并不有利。
僅僅依靠開發人員也不符合你的最佳利益,因為他們的技能組合不一定包括解決運營問題。另外,你也不希望用更多的任務來壓倒開發人員。
安全、安全、安全
你可以遵守安全的最佳實踐,并使之與自動部署保持一致,但這并不能完全消除你對安全的微妙照顧的需要。攻擊方法每天都在發展和變化,因此,你的云安全控制也應該如此。
例如,你可以為你的人工智能引入錯誤的規則或自動化有缺陷的流程,在你的自動化中招致錯誤或為數百或數千的基礎設施組件或服務器創建有缺陷的腳本。如果你完全刪除你的運營團隊,你可能要考慮向安全團隊投入額外的資金,以確保你為你的環境灌輸最好的安全和合規方法。
考慮你的環境
考慮到NoOps使用無服務器和PaaS來獲取資源,這可能會成為你的一個限制因素,特別是在數字化轉型的時候。對于傳統的基礎設施和混合部署,自動化仍然是可能的,但在這些情況下,你不能完全消除人為干預。所以請記住,不是所有的環境都可以過渡到NoOps。你必須仔細評估轉換的優點和缺點。
那NoOps會是DevOps的終點嗎?
答案是否定的。
NoOps不是一個放之四海而皆準的解決方案。你知道,它僅限于適合現有無服務器和PaaS解決方案的應用。由于一些企業仍然運行在單體的遺留應用上(需要完全重寫或大規模更新才能在PaaS環境中工作),所以即使有一個遺留系統留下,你仍然需要有人來負責運營。
從這個意義上說,NoOps離處理運行專門流程的長期應用程序或具有高要求應用程序的生產環境仍有一段距離。相反,運營發生在生產之前,所以,對于DevOps,運營工作發生在代碼進入生產之前。發布包括監控、測試、錯誤修復、安全、以及對每次提交的策略檢查等等。
你必須讓團隊中的每個人(包括關鍵的利益相關者)從一開始就參與進來,以實現快速反饋,并確保自動化控制和任務的有效和正確。持續的學習和改進(DevOps團隊的支柱)不應該只發生在事情出錯的時候;相反,成員們必須一起合作,協同工作,解決問題,改進系統和流程。
此外,當你想到DevOps的時候,你會想到 "人"。與來自各個業務領域的團隊成員(包括QA、市場、設計師、安全、產品經理等)一起,更快地構建更好的軟件,將繼續成為優越的選擇,因為他們共同致力于一個共同的目標。請記住我們在構建高速度開發團隊的文章中所說的,一個平衡的團隊能讓所有成員都參與進來,并為他們提供成長和相互學習的機會。
值得慶幸的是,NoOps符合一些DevOps的方式。它專注于學習和改進,使用通過持續和開放合作開發的新工具、想法和技術,而且NoOps解決方案消除了摩擦,增加了有價值的功能在管道中的流動。這意味著NoOps是DevOps的一個成功延伸。
換句話說,DevOps是永遠的,而NoOps只是與DevOps一起進行創新的開始,所以說NoOps是DevOps的終結者就意味著沒有任何新的東西可以學習或改進。
最后一站,目的地:NoOps
真正的NoOps涉及相當多的基礎工作--你需要在無服務器或PaaS之間做出選擇,并將配置、組件管理和安全控制考慮在內,才能開始。即便如此,你可能仍有一些松散的問題--比如遺留系統--需要更多時間來過渡(或者你根本無法過渡)。
但有一件事是肯定的。DevOps不會消失,自動化也不會讓Ops被淘汰。然而,隨著無服務器自動化的發展,你可能不得不考慮在某個時候采用新的開發和運營方法。值得慶幸的是,如果你選擇轉換,你有很多幫助,比如自動化工具和FaaS,可以讓你的過渡更容易。