Devops工具鏈
DevOps實際是一種文化上的變遷,代表了開發、運維、測試等環節之間的協作,因此DevOps工具是非常多種多樣的,甚至可以由多種工具組成一個完整的DevOps工具鏈。此類工具可以應用於一種或多種類別,並可體現出軟件開發和交付過程的不同階段:
- 編碼:代碼開發和審閱,版本控制工具、代碼合並工具
- 構建:持續集成工具、構建狀態統計工具
- 測試:通過測試和結果確定績效的工具
- 打包:成品倉庫、應用程序部署前暫存
- 發布:變更管理、發布審批、發布自動化
- 配置:基礎架構配置和部署,基礎架構即代碼工具
- 監視:應用程序性能監視、最終用戶體驗
雖然可用工具有很多,但其中一些環節是組織內部應用DevOps工具鏈不可或缺的。
諸如Docker(容器化)、Jenkins(持續集成)、Puppet(基礎架構構建)、Vagrant(虛擬化平台)等常用、廣泛使用的工具都是2016年的DevOps熱門工具。
基礎架構組件的版本控制、持續集成和自動化測試
基礎架構的版本控制能力(而非基礎架構的構建腳本或配置文件)及對其進行自動化測試的能力極其重要。
DevOps最終會將30年前軟件工程領域所采用的同一套XP實踐帶至生產端。
此外基礎架構元素應該能向軟件交付物一樣進行持續集成。
收益
DevOps的收益有很多,包括但不限於:
- 可重復性與可靠性:時至今日,構建生產用計算機只需要運行腳本或必要的puppet命令即可。通過恰當地使用Docker容器或Vagrant虛擬機,只需運行一條命令即可配置好包含操作系統層以及所需軟件和配置的生產用計算機。當然,隨着各種變更或軟件開發、持續集成,並自動測試,這套構建腳本或機制也會進行持續集成。
最終幸虧有了XP或敏捷,我們在軟件開發端所使用的同一套實踐也能讓運維端獲益。
- 生產力:一鍵部署,一鍵供應,一鍵創建新環境……整個生產環境可以通過一條命令或一鍵點擊的方式創建。這樣的一條命令也許會運行長達數小時,但在這過程中運維人員可以從事其他更有趣的工作,而無需等待一條命令執行完畢后繼續輸入下一條命令,畢竟這樣的過程有時候可能需要花費幾天時間才能完成……
- 恢復時間!:一鍵點擊即可恢復生產環境,就是這么簡單。
- 確保基礎架構的同質:徹底避免運維人員每次構建環境或安裝軟件時最終獲得的結果與預期有所差異,這是確保基礎架構絕對同質(Homogeneous)並且可再現的唯一可行方法。以此為基礎,通過對腳本或Puppet配置文件使用版本控制機制,我們甚至可以重建出與上周、上個月,或軟件特定版本發布時完全一致的生產環境。
- 維持整齊划一的標准:基礎架構標准甚至可以不復存在,代碼本身就是標准。
- 讓開發者自行完成大部分工作:如果開發者自己突然可以在自己的基礎架構上一鍵點擊重建生產環境,他們也就可以自行完成很多與生產環境有關的任務,例如更好地理解生產失敗,提供更恰當的配置,實現部署腳本等。
這只是我個人感覺IaC可提供的部分收益,相信還有很多其他收益。