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

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

image.png

本系列教程目錄

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

【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等工具,能夠快速實現每個環節的發佈。
image.png

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/ (歡迎轉發、請註明出處!)

相關文章
相關標籤/搜索