來源:北大青鳥總部 2023年09月14日 09:36
這不一定是一個最好的時代,也不一定是一個最壞的時代,但一定是個Ops盛行的時代,在互聯網圈內的你一定經常都會聽到這些名詞,DevOps、DevSecOps、GitOps、NetOps、ItOps、Aiops、DataOps、MLOps、NoOps,其中DevOps、DevSecOps、GitOps、NetOps、ItOps、NoOps都是屬于運維領域的,因此我們今天主要也來講這些Ops。
DevOps=Developers+Operators,也就是研發運維一體化,主要是通過自動化流程使得軟件過程更加快捷和可靠。它不是一個產品,而是一種新的團隊工作方式、新的技術理念。
一個軟件從0到1的最終交付包含如下階段:市場規劃、產品規劃、編碼設計、編譯構建、部署測試、發布上線、后期維護。早期的時候全由一個人完成了,隨著團隊的擴張,團隊里有了產品經理、開發人員、測試人員、運維人員的劃分,由產品經理負責需求的規劃、產品交互設計,研發人員負責編碼、構建包,測試人員負責功能測試和自動化測試、上線發布,運維人員負責維護線上服務的正常運行、擴容縮容,這就是敏捷開發模型,在開發過程階段測試介入,快速驗證修改問題直到基本無誤后上線部署。
這一切所帶來的問題是整體的交付周期變長了,團隊之間溝通合作成本變高了,因此DevOps應運而生。它將整個軟件開發測試運維過程變為一體化,每完成一個小的需求點便測試上線部署,快速驗證需求,捕獲用戶,占領市場。
DevSecOps=Developers+Operators+Securitys,DevSecOps即在保證持續集成交付、敏捷開發的同時,保證業務的安全性。在DevOps的軟件開發過程包含計劃、編碼、構建、測試、預發布、發布、運維、監控。在計劃階段執行安全性分析,確定在哪些模塊容易引發安全問題;在編碼階段使用API密鑰、SSH公鑰等保護代碼安全;在構建階段執行靜態代碼掃描來發現代碼中的缺陷;在測試階段檢測用戶身份驗證、授權、SQL注入等相關的安全問題;在預發布階段使用安全分析工具進行全面的滲透測試、漏洞掃描;在運營運維階段,通過一定的監控體系搭建,不斷的監控系統情況,保證系統高可用、高可靠。
GitOps=Git+Operators,這是基于Git(版本控制系統,如Github、Gitlab)的基礎架構和應用程序結合的方式。GitOps更多是基于云原生的一個解決方案,在GitOps中,一切可以被描述的內容(如部署策略、代碼配置、監控)等都存儲在Git版本控制系統中、基于云原生的容器(如Kubernetes、Docker)也使用Git命令控制,不使用原有的如kubectl的方式。對于開發人員來說,都要使用Git工具進行代碼的托管、代碼評審,GitOps降低了開發人員的學習成本,使用Git就可以自動創建多容器的編排了。
ITOps即IT運維全生命周期管理,在軟件全生命周期中包含主機監控管理、日志管理、資產管理、事件管理等,而ITOps提供的就是把這些管理工具集成在一起的解決方案,幫助企業全方位、全鏈路的監控、管理。傳統方式中企業一般都采購不同供應商的不同解決方案(取其優勢),然后再組建個團隊或找其中的某個供應商把這些解決方案都打通,但因為每個供應商的標準、技術設計都不一樣,因此打通其實是很耗費成本。因此ItOps也正在上云,供應商開始通過收購或自研提供一整套的ItOps解決方案。
NetOps即網絡運維,是在網絡的全生命周期進行運維的解決方案。在設備入網的時候,進行批量的刷入、監控、目標版本升級,設備入網后進行業務配置、業務驗證,業務上線后進行定期的批量審計、巡檢,保證故障識別與解決。NetOps在DevOps環境中可以更加的靈活,通過自動化、虛擬化的方式提高解決網絡問題的速度。
AiOps,即人工智能運維,通過機器學習算法自動的從海量運維數據中不斷的學習,結合領域專家的指導不斷訓練模型,最終通過模型來分析決策,達到智能運維,在IT系統中總共會產生五類數據:機器數據、網絡數據、代理數據、探針數據。機器數據是IT系統自己產生的數據,;網絡數據是網絡通信過程中產生的數據;代理數據則是通過在應用程序中插入代理程序,獲取應用程序中函數調用次數時長、調用堆棧等數據;探針數據則是通過撥測模擬用戶請求對系統進行檢測獲得的數據。獲取數據后再結合人工智能算法,如邏輯回歸、關聯關系挖掘、聚類、決策樹、隨機森林、支持向量機、蒙特卡洛樹搜索、隱式馬爾科夫、多示例學習、遷移學習、卷積神經網絡等,最后實現故障自動檢測、自動修復、自動預測。
NoOps即無運維,完全自動化的運維。在NoOps中不再需要開發人員、運營運維人員的協同,從微服務、低代碼、無服務全結合起來,開發者在軟件生命周期中只需要聚焦業務開發即可,所有的維護都交由云廠商來完成。NoOps的目標就是去除在軟件開發過程中所有可能出現的人為因素影響,提高交付速度、交付質量。
整個開發運維的發展趨勢是從ItOps、DevOps、NetOps、AiOps、DevSecOps、GitOps、NoOps,而ItOps、NetOps、AiOps更多是運維域的解決方案,DevOps、DevSecOps、GitOps是開發運維域的解決方案,NoOps是終極解決方案。現在這些概念你都清晰了嗎?