DevOps 是一個持續改善軟體產品的程序,它通過極短的發布周期、全面自動化的集成和交付流水線,以及團隊間的緊密協作來不斷改善產品,DevOps 的目標是縮短將創意變成用戶可以使用的產品的時間,并降低這個程序的成本,DevOps 充分利用自動化流程來加速開發和部署,如下圖對比傳統軟體構建方法和 DevOps 方法,傳統方法在上,DevOps 在下面:
●半部分的傳統方法,從概念構思到用戶可用的時間周期是八天,基礎設施部署占用的時間最多,因為工程師需要在互聯網上創建托管軟體所需的組件,另一個大的時間耗費來自部署之間的測驗和評審步驟,
●半部分是DevOps ,從概念構思到用戶可用的時間周期縮短到了兩天,這是通過使用處理部署和軟體測驗/評審的自動化流程來實作的,

如果一個組織構建軟體的速度能比對手快四倍,那么這將會給它帶來巨大的競爭優勢,實踐表明,客戶中意的創新產品一開始可以不完整,但要能夠快速穩定地改進,組織可采納 DevOps 來降低開發生命周期的成本和延遲,并回應用戶的要求,
通過 Dev0ps,開發人員僅用數小時就可以發布新版本軟體,對它們進行測驗,并部署給客戶,這并非意味著版本總是可以這么快地發布,適當的質量保障(QA,Quality Assurance)需要投入時間,而 DevOps 提供了在必要時能快速行動的能力,展示了持續集成、持續交付及基礎設施即服務這些技術如何被整合在一起以實作快速的發布周期,

上圖的流水線的關鍵部分是,從開發人員提交補丁到生產環境中的服務部署這些自動化步驟,最終以完全自動化的方式串聯成的一個鏈條,如果這個鏈條上的任何一個自動化步驟出現失敗,那么流水線就會停止,代碼就不會部署,這種機制將確保在所有型別的測驗都通過之后,新版本的軟體才能被發布到生產環境中,
1. 持續集成
將新特性快速集成進軟體的程序叫作持續集成Cl,CI 定義了一個在軟體產品中實作、測驗及合并新特性的作業流,產品經理和開發人員定義一組小特性集合,這些特性能在較短的周期內實作,每個特性添加在主要源代碼的一個分支上,并提交評審,由另一位得到授權的開發人員來評審,在評審階段,自動化測驗會被執行以驗證代碼更改是否需要返工,這能維持代碼的質量水平,在評審通過之后,修改會被合并到中央代碼倉庫中,這樣就做好了部署的準備,小特性的快速迭代能讓這個流程得以順暢運行,避免了因大規模代碼修改而對功能造成的破壞,
2.持續交付
將軟體部署到客戶可用的服務中的自動化程序叫作持續交付CD,DevOps推崇工程師用程式代碼來管理基礎設施以快速應對變化,而不是手動管理基礎設施組件,當開發人員將代碼修改合并進軟體之后,運維人員在CD流水線上觸發更新后的軟體的部署,流水線會自動獲取最新版本的源代碼,對其進行打包并為它創建新的基礎設施,如果部進行順利,可能在QA團隊人工或自動評審之后,該環境就會被提升為新的演練或生產環境,用戶將被定向到這個環境,而老環境將被銷毀,通過代碼來管理服務器和網路的這一程序大大縮短了處理部署通常所需的漫長的等待時間,
3.基礎設施即服務
基礎設施即服務laaS就是云,它是這樣一種概念,一個組織所依靠的資料中心、網路和服務器,有時甚至還有系統,統統都由第三方運營,這些基礎設施可以作為服務暴露給運維人員,并且可以通過 API 和代碼進行控制,laaS 是 DevOps 彈藥庫中的核心工具,因為它在降低基礎設施運營成本方面發揮著舉足輕重的作用,可編程的特質將 laaS 和傳統基礎設施區分開來,并且鼓勵運維人員撰寫代碼來創建和修改基礎設施,而不是手動執行這些運維任務,
內部運維
許多組織傾向于在內部運營它們的基礎設施,這樣做有各種各樣的原因(監管、安全、成本,等等),需要注意的是,采用laaS并非意味著將基礎設施的管理外包給第三方,組織可以在內部使用Kubernetes 或 OpenStack 這樣的平臺來部署和運維laaS,而不是直接在硬體上運行應用,從而享受到這些中間管理層帶來的靈活性優勢,
本書中我使用了由第三方運營的 laaS 系統——AWS(Amazon Web Services),它受到許多組織的青睞,因為AWS幫助它們降低了基礎設施管理的復雜性,讓它們可以聚焦于核心產品,但是,我提及的大多數基礎設施安全概念可以應用于任何型別的laaS,無論你是自己控制硬體還是讓第三方替你控制,
管理更低層的基礎設施將帶來一系列全新的問題,例如網路安全和資料中心的訪問控制,你必須妥善處理這些問題,本書沒有介紹這些內容,因為它們不是 DevOps 獨有的問題,但是你應該可以輕易地從一些現有文獻中獲得幫助,
AWS 是最具代表性的 laaS,它將作為我們的示例環境貫穿于全書,圖的下半部分展示了由供應方管理的 AWS 組件,上半部分則是由運營方管理的組件,

CI、CD及 laaS 是成功的 DevOps 策略的基本組成部分,深諳CI/CD/laaS 作業流的組織能以全自動化的方式快速地將軟體交付給終端用戶,并能夠做到一天交付數次,測驗和部署步驟的全部自動化保證了將流水線操作所需的人工干預降到了最低,這樣在災難發生時基礎設施也是完全可以恢復的,
除了技術上的優勢,DevOps 還影響了組織文化,從很多方面提升了員工的幸福感,
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/500930.html
標籤:其他
下一篇:企業應當實施的5個云安全管理策略
