【DevOps】團隊敏捷開發系列--開山篇
隨著軟件發布叠代的頻率越來越高,傳統的「瀑布型」(開發—測試—發布)模式已經不能滿足快速交付的需求。2009 年左右 DevOps 應運而生,開發運維一體化,通過自動化工具與流程讓整個軟件開發構建、測試、發布更加快捷、頻繁、高效和可靠。
本系列教程目錄
本系列將詳細講解Devops落地細節。將構建整個持續集成與交付的一整套體系與流程。對於未來要開篇的系列博文列表如下:
【DevOps】團隊敏捷開發系列(一)--開山篇
【DevOps】團隊敏捷開發系列(二)--版本控制之道Git
【DevOps】團隊敏捷開發系列(三)--代碼管理之道Gitlab
【DevOps】團隊敏捷開發系列(四)--前後端分離契機Swagger
【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】團隊敏捷開發系列--開山篇