前面的文章中介紹了,Devops的概念以及企業應用Devops能夠帶來的好處,請參考文章:
DevOps究竟能給企業解決什么問題
接下來我來介紹一下Devops要想實際落地,那么我們需要解決的問題有哪些。我將從產品需求、開發、測試、運維的角度來分享Devops落地的實際經驗。
核心
部署流水線核心軟件開發過程是一個將客戶或用戶的想法變成一個真實可用的特性的過程。部署流水線是這個過程中的一部分,是指軟件從版本控制庫到用戶手中這一過程自動化的展現形式。這一過程包括編譯構建、代碼檢查、上傳制品庫、測試和部署等,并且這些階段的執行都應該是自動執行的。自動化帶來的好處是這個流程變得更快、可重復且更加可靠。部署流水線的核心是使用jenkins作為各個節點的串聯,然后在各個流程節點中使用一系列的工具來實現流水線的自動化!如下圖所示:
13條經驗 產品需求 1.產品定義、里程碑規劃和用戶需求分析
可以使用影響地圖、用戶故事、看板等方法。
開發 2.代碼預檢查
代碼預檢查就是在代碼提交到代碼庫之前對代碼進行檢查,包括靜態檢查、Code Review、測試、編譯等多種方式。
3.技術債務管理
主要的技術債務包括:
沒有文檔或者跟版本不同步;
過時的架構設計;
需要重構的代碼;
遺留代碼缺乏文檔和單元測試,無人能改,無人敢改。
注意:未實現的功能需求不屬于技術債務。
技術債務管理的核心是:在技術債務產生之前能避免則避免,不能避免的可以借助工具提前發現,對于發現的技術債務盡可能早的償還掉。
4.第三方組件管理
使用第三方組件,可以不必“重復造輪子”,節約了時間和精力,加快了軟件開發的過程。第三方組件已經是軟件開發不可或缺的組成部分。然而,使用第三方組件并非易事。主要有以下幾方面的問題:
組件會存在缺陷或安全漏洞;
組件的版本會過時;
組件需要額外的維護成本。
通常對第三方組件管理需要關注以下兩個方面:
依賴掃描:能夠掃描出依賴存在的問題,包括是否存在安全漏洞以及版本是否過時。
依賴管理:制定黑白名單,控制策略和影響范圍。黑名單指不允許使用的組件。白名單是可以使用的組件。控制策略指的是當發現組件有問題時采取的措施,如阻斷,警告。影響范圍指的該控制策略的應用范圍,如當前系統,所有系統等。當檢測到依賴組件中包含了黑名單中的組件,按照設置好的控制策略對該組件進行處理,比如編譯失敗,郵件通知負責人等。
5.非功能需求的管理
非功能需求的實現是有成本的,而且它們之間可能彼此排斥,因此我們必須權衡利弊。比如,對安全性要求高的系統往往易用性就不會太好。在實際開發中,考慮到系統的交付時間,系統的總成本,往往會根據非功能需求的實現難度,做出權衡。
6.API管理
API 管理就是有效管理企業內部各服務提供的API 接口和對外暴露的共有接口,管理 API 接口的創建、測試、發布等生命周期,以及 API 接口的版本、并提供 API 開發者門戶供開發人員查看。服務的 API 接口在構建時自動地注冊到 API 管理平臺的 API Gateway 中,其他調用方可以通過 API Gateway 訪問這些接口提供的服務,并基于 API Gateway 進行 API 的自動化測試,保證 API 的正確性和健壯性。
7.配置管理
配置管理是指一個過程,通過該過程,所有與項目相關的產物,以及它們之間的關系都被唯一定義、修改、存儲和檢索。例如,可以基于 Git 的方式,在應用程序部署時提供特定環境的配置文件,實現了代碼與配置的隔離,保證了代碼的唯一性。
8.持續集成
這里持續的意思并不是“始終,一直”,它的意思是“隨時”。比較恰當的頻率是:每當有人提交代碼,同時集成一次。通常分為即時集成和定時集成。
即時集成:是指團隊成員每次提交之后就進行集成,并執行編譯、構建、自動化測試等任務來檢查個人提交的代碼是否可用。這種集成方式要求執行的時間要短,要快速反饋結果,因此只能執行一些簡單的測試。
定時集成:類似每日構建(Daily Build),是指每天定時(一般為晚上)自動執行一次集成過程,第二天將執行結果發送給關系人。這種集成方式注重的是檢測的全面性和徹底性,香港服務器,對執行時長要求不高。
測試 9.測試數據管理
測試數據管理指對測試數據的自動創建以及銷毀。主要包括驗證業務基礎功能的少量測試數據和驗證核心業務性能所需要的大規模測試數據。
10.自動化測試
指對產品的UI測試、服務的接口測試以及代碼的單元測試通過測試代碼來實現。
運維
11.實時監控
將所有主機加入監控,時刻掌握他們的狀態,一旦有指標不正常,免備案主機,觸發器觸發告警,可通過微信、釘釘、郵件方式進行告警.
12 日志收集