1. 程式人生 > >【DevOps】團隊敏捷開發系列--開山篇

【DevOps】團隊敏捷開發系列--開山篇

jmeter junit ger 優秀 資料 開發 load 分析 針對

隨著軟件發布叠代的頻率越來越高,傳統的「瀑布型」(開發—測試—發布)模式已經不能滿足快速交付的需求。2009 年左右 DevOps 應運而生,開發運維一體化,通過自動化工具與流程讓整個軟件開發構建、測試、發布更加快捷、頻繁、高效和可靠。

技術分享圖片

本系列教程目錄

本系列將詳細講解Devops落地細節。將構建整個持續集成與交付的一整套體系與流程。對於未來要開篇的系列博文列表如下:

【DevOps】團隊敏捷開發系列(一)--開山篇
【DevOps】團隊敏捷開發系列(二)--版本控制之道Git
【DevOps】團隊敏捷開發系列(三)--代碼管理之道Gitlab
【DevOps】團隊敏捷開發系列(四)--前後端分離契機Swagger

【DevOps】團隊敏捷開發系列(五)--代碼編譯MAVEN
【DevOps】團隊敏捷開發系列(六)--自動化CI工具Jenkins
【DevOps】團隊敏捷開發系列(七)--自動化流程編排
【DevOps】團隊敏捷開發系列(八)--自動化單元測試Junit
【DevOps】團隊敏捷開發系列(九)--自動化性能壓測Jmater
【DevOps】團隊敏捷開發系列(十)--持續部署流程編排
【DevOps】團隊敏捷開發系列(番外篇)--Linux常用命令

相關概念解釋

DevOps 概念

Ops"是一個總括術語,泛指系統工程師、系統管理員、操作人員,發布工程師、DBA、網絡工程師、安全專家和各種其他分支和頭銜。"Dev"是開發人員的簡稱,但真正在實踐中意味著更廣泛的"參與開發的產品"的所有人,可包括產品,質量保證,和其他種類的學科。

DevOps 發展

DevOps(英文Development和Operations的組合)是一組過程、方法與系統的統稱,用於促進開發(應用程序/軟件工程)、技術運營和質量保障(QA)部門之間的溝通、協作與整合。它的出現是由於軟件行業日益清晰地認識到:為了按時交付軟件產品和服務,開發和運營工作必須緊密合作。 從2009年起,相關的工作組、專業組織和博客快速湧現。

自動化概念

自動化(Automation)是指機器設備、系統或過程(生產、管理過程)在沒有人或較少人的直接參與下,按照人的要求,經過自動檢測、信息處理、分析判斷、操縱控制,實現預期的目標的過程。自動化技術廣泛用於工業、農業、軍事、科學研究、交通運輸、商業、醫療、服務和家庭等方面。采用自動化技術不僅可以把人從繁重的體力勞動、部分腦力勞動以及惡劣、危險的工作環境中解放出來,而且能擴展人的器官功能,極大地提高勞動生產率,增強人類認識世界和改造世界的能力。因此,自動化是工業、農業、國防和科學技術現代化的重要條件和顯著標誌。

DevOps自動化

全面自動化 —— 部署、 升級、 擴展、 維護、 數據、 測試、 監測、 安全和策略管理。在自動化方面投入巨資,目標是100%的自動化,不考慮低於90%的可能性。但是,全面自動化也可能會引起自動化泛濫。集中審查和調整可以控制Chef或Puppet腳本庫的無序增長。
DevOps戰略必須獲取本組織自頂向下的全面支持。整個行政領導團隊 ——不只是首席信息官 ——應知道它為什麽重要和怎樣使它取得成功。

為什麽DevOps

為什麽我們采用DevOps,首先來看一下傳統的開發運維模式。

傳統開發模式

首先,開發人員開發完畢,並進行簡單自測,和 手動 功能測試。
其次,開發人員利用IDE 手動 打包。
然後,將構建後的文件 手動 復制到公網服務器指定目錄。
最後,啟動程序並進行手工測試。
很明顯,在這個過程中,有太多重復性的東西,會嚴重影響團隊效率。

自動化方案

我們可以簡單的來將我們的系統優化,最終形成強大的自動化敏捷體系。

自動化單元測試

我們可以通過一些自動化平臺例如jenkins 進行自動化單元測試的集成。可以很高效的對整個開發進行系統的單元測試,簡化測試流程,提升測試效率

自動化打包構建

通過一些列的代碼與版本控制管理工具,例如Git與Gitlab可以非常有效的管理代碼、版本、分支、標簽等等。當然不僅於此,還有很多比較優秀的工具供我們使用。但是目前市場最流行的當屬Git與Gitlab體系。

自動化發布

針對於後端服務用Java開發的應用程序,我們大可以使用MAVEN或者Gradle進行統一的依賴管理及代碼編譯打包控制。可以通過一些列Wiki進行配置觸發器,集成到jenkins等工具上,然後進行自動化的遠程節點打包。當然可以在jenkins建立多個節點去持續多點出發集成。

自動化部署

通過強大的shell命令,讓我們可以在每個服務器、每一個環境當中,自由穿梭。對於自動化部署,需要按照實際需求,編寫不同的shell腳本,然後將相關流程進行配置,結合jenkins等工具,可以快速實現每一個環節的發布。
技術分享圖片

DevOps團隊需要做什麽

DevOps團隊執行各種任務, 如:
1. 新虛擬服務器的配置
2. 配置網絡設備
3. 應用程序部署
4. 收集和聚合的日誌
5. 性能監視服務
6. 報警和自動修復的問題
7. 服務器和服務可用性監控

DevOps團隊工具

工具名稱 工具用途
Docker 虛擬化容器技術,快速構建獨立隔離服務
Jenkins 自動化平臺,可以配置自動化測試與持續部署
New Relic 應用性能監測
Ansible 自動化(配置管理工具)平臺,持續集成與編排
Kubernetes 開源的docker編排工具,可以發布與回滾
JMeter 基於Java的壓力測試工具。用於對軟件做壓力測試

還有很多工具可以使用,這個具體我們後續慢慢講來。

番外篇

除了一整套DevOps的體系,我們會在整個系統當中,穿插講解Docker容器的使用。對於我們很多時候遇到的依賴或者安裝流程復雜的問題,都可以容器的方式快速解決,並且可以快速啟動或銷毀多個服務。

未盡之處將會在系列博文中詳細說道。本文只是對系列博文的概要說明,本文也參考了互聯網很多資料整理所得。

源碼

本文出處:http://www.hanyahong.com/
(歡迎轉發、請註明出處!)

【DevOps】團隊敏捷開發系列--開山篇