八、敏捷開發2.0的自動化工具

什麼是敏捷開發

常用的的4種開發模式:

  • 瀑布開發:需求分析、設計、編碼、集成、測試、維護
  • 迭代式開發:整個開發工作被組織爲一系列小項目(需求分析,設計,實現與測試),
  • 螺旋式開發:引入風險分析,特點—制定計劃、風險分析、實施工程、客戶評估
  • 敏捷軟件開發:開發週期更短,快速適應需求的變化

DevOps

是通過自動化的基本設施、自動化的工作流程和持續可測量的應用性能,來整合開發團隊和運維團隊,以達到更高的合作效率和生產率。

  • 精益管理的7個原則:消除浪費、增強學習、延遲決策、快速交付、團隊授權、內置完整性、考慮全局
  • DevOps可以用一個公式表達:文化觀念的改變+自動化工具=不斷適應快速變化的市場
    核心價值:更快速地交付,響應市場的變化和更多關注業務的改進與提升
  • DevOps的開發流程:提交-》編譯-》單元測試-》部署到測試環境-》預生產測試-》部署到生產環境

敏捷開發2.0解決的問題:

  • 持續集成:要求團隊成員經常集成其工作
  • 持續交付:在持續集成的基礎上,將集成後的代碼部署到更貼近真實的運行環境的預生產環境中。
  • 持續部署:所有通過了自動化測試ide改動都自動地部署到生產環境中。

爲了實現敏捷開發2.0,我們需要採用持續部署、微服務和容器三種技術方案

  • 持續部署:能夠持續自動反饋應用程序的提交狀態,減少錯誤等;同時爲產品的交付提供了質量保證,能快速投入市場。
  • 微服務:使技術選型、構架系統更自由;開發更快速、週期更短;服務更容易擴展
  • 容器:使部署成百上千的微服務更加容易,系統更加穩定。

敏捷開發的自動化流程

持續集成

向代碼庫中提交代碼-》靜態代碼分析-》部署前的單元測試-》打包部署到測試環境-》預生產環境測試

持續支付和持續部署

持續交付要求完美地實現所有預期,隨時準備部署上線,在通過了全部的流程後,不再需要人工測試階段,因爲持續交付技術本身能夠最大程度地保證所有編譯結果都是正確的。持續部署能夠全自動地把每一次通過編譯測試的代碼直接部署到生產環境中,是一套完整的自動化過程

敏捷開發的常用自動化工具

分佈式版本控制工具Git

持續繼承和持續交付工具Jenkins:

具有持續集成和持續交付的功能、安裝簡單、配置簡單(web界面配置)、豐富的插件和擴展性、是分佈式的,能很輕鬆地實現跨多主機或多平臺的分佈式部署。

基礎平臺管理工具SaltStack

採用C/S模式,其Server端是Master,Client端是Minion,Minion與Master之間通過ZeroMQ消息隊列通信,是一個同時對一組服務器遠程執行命令和狀態管理的工具。
SaltStack的執行步驟:

  1. SaltStack的與Minion之間通過ZeroMQ進行消息傳遞,使用了ZeroMQ的發佈-訂閱模式,連接方式包括TCP、IPC
  2. 將cmd.run Is命令從salt.client.LocalClient.cmd_cli發佈到Master,獲取一個Jobid,根據Jobid獲取命令的執行結果。
  3. Master接收到命令後,將要執行的命令發送給客戶端Minion
  4. Minion從消息總線上接收到要處理的命令,交給minion._handle_aes處理。
  5. Minion._handle_aes發起一個本地線程調用cmdmod執行Is命令。線程執行完Is後,調用minion._return_pub方法,將執行結果通過消息總線返回給Master
  6. Master接收到客戶端返回的結果,調用master._handle_aes方法,將結果寫到文件中。
  7. Salt.client.LocalClient.cmd_cli通過輪詢獲取Job的執行結果,將結果輸出到終端。

Docker容器化工具

基本組件

  • Docker鏡像(Image)是一個運行容器的只讀模板
  • Docker容器(Container)是一個運行應用的標準化單元
  • Docker註冊服務器(Registry)用來存放鏡像
  • Docker引擎(Docker Engine)用於在主機上創建、運行和管理容器

Docker的主要管理工具

  • Docker Machine:讓用戶在基礎架構平臺上快速部署Docker宿主機
  • Docker Swarm:讓用戶在集羣環境中調度和運行容器
  • Docker Compose:讓用戶在集羣環境中編排和部署應用
  • Kubernetes、Mesos:比較流行的第三方的管理編排工具
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章