1. 程式人生 > >DevOps常用的技術棧

DevOps常用的技術棧

敏捷管理工具

  • Trello

  • Teambition

  • Worktile

  • Tower

產品&質量管理

  • confluence

  • 禪道

  • Jira

  • Bugzila

其中confluence和禪道主要是產品的需求、定義、依賴和推廣等的全面管理工具;而Jira和Bugzilla是產品的質量管理和監控能力,包括測試用例、缺陷跟蹤和質量監控等。目前使用Jira較多。

程式碼倉庫管理

  • Git

  • Gitlab

  • Github

Git是一個開源的分散式版本控制系統;Gitlab和Github是用於倉庫管理系統的開源專案,它們使用Git作為程式碼管理工具,並在此基礎上搭建起來的web服務。

開發流程規範

  • Git Flow

Git Flow是構建在Git之上的一個組織軟體開發活動的模型,是在Git之上構建的一項軟體開發最佳實踐。Git Flow是一套使用Git進行原始碼管理時的一套行為規範和簡化部分Git操作的工具。Git Flow模型如下圖:

  • Github Flow

Github Flow是Git Flow的一個更簡單的替換方案,它只有一個feature分支和一個master分支,簡單而乾淨。Github Flow模型如下圖:

  • Gitlab Flow

GitHub Flow認為你可以通過合併feature分支直接把程式碼部署到線上。Gitlab Flow模型如下圖:

自動化構建指令碼

  • Gradle

  • Maven

  • SBT

  • ANT

目前主要使用Gradle和Maven,而Gradle是一個基於Apache Ant和Apache Maven概念的專案自動化構建工具。它使用一種基於Groovy的特定領域語言(DSL)來宣告專案設定,拋棄了基於XML的各種繁瑣配置。面向Java應用為主。當前其支援的語言限於Java、Groovy、Kotlin和Scala。

虛擬機器與容器化

  • VMware

  • VirtualBox

  • Vagrant

  • Docker

VMware和VirtualBox是最常用的虛擬機器,支援非常多的平臺,而Vagrant是構建在虛擬化技術之上的虛擬機器執行環境管理工具。通過Vagrant可以方便實現的對虛擬機器的管理,包括建立和刪除虛擬機器、配置虛擬機器執行引數、管理虛擬機器執行狀態、自動化配置和安裝開發環境必須的各類軟體、打包和分發虛擬機器執行環境等。

Docker是一個開源的應用容器引擎,它讓開發者可以打包他們的應用以及依賴包到一個可移植的容器中,然後釋出到任何流行的Linux機器上,也可以實現虛擬化。

持續整合(CI)&持續部署(CD)

  • Jenkins

  • Hudson

  • Travis CI

  • CircleCI

Jenkins是一個開源軟體專案,是基於Java開發的一種持續整合工具,用於監控持續重複的工作,旨在提供一個開放易用的軟體平臺,使軟體的持續整合變成可能,它的前身為Hudson。

Travis CI 是目前新興的開源持續整合構建專案,它與jenkins很明顯的區別在於採用yaml格式,簡潔清新獨樹一幟。

CircleCI是一個為web應用開發者提供服務的持續整合平臺,主要為開發團隊提供測試,持續整合,以及程式碼部署等服務。

自動化測試

  • Appium

    Appium是一個移動端的自動化框架,可用於測試原生應用,移動網頁應用和混合型應用,且是跨平臺的。可用於IOS和Android以及firefox的作業系統。

  • Selenium

    Selenium 測試直接在瀏覽器中執行,就像真實使用者所做的一樣。Selenium 測試可以在 Windows、Linux 和 Macintosh上的 Internet Explorer、Mozilla 和 Firefox 中執行。

  • Mock測試

    Mock測試就是在測試過程中,對於某些不容易構造或者不容易獲取的物件,用一個虛擬的物件來建立以便測試的測試方法。這個虛擬的物件就是Mock物件,Mock物件就是真實物件在除錯期間的代替品。Java中的Mock框架常用的有EasyMock和Mockito等。

  • 消費者驅動契約測試

    契約測試是一種針對外部服務的介面進行的測試,它能夠驗證服務是否滿足消費方期待的契約。當一些消費方通過介面使用某個元件的提供的行為時,它們之間就產生了契約。這個契約包含了對輸入和輸出的資料結構的期望,效能以及併發性。而PACT是目前比較流的消費者驅動契約測試框架。

自動化運維工具

  • Ansible

  • Puppet

  • Chef

IT運維自動化是指將IT運維中日常的、大量的重複性工作自動化,把過去的手工執行轉為自動化操作。自動化是IT運維工作的昇華,IT運維自動化不單純是一個維護過程,更是一個管理的提升過程,是IT運維的最高層次,也是未來的發展趨勢。下圖為常用自動化運維工具對比:

監控管理工具

  • Zabbix

    Zabbix是一個基於WEB介面的提供分散式系統監視以及網路監視功能的企業級開源解決方案。

  • ELK Stack日誌分析系統

    ELK Stack是開源日誌處理平臺解決方案,背後的商業公司是Elastic。它由日誌採集解析工具 Logstash、基於 Lucene 的全文搜尋引擎 Elasticsearch、分析視覺化平臺 Kibana三部分組成。

  • 雲監控(如Amazon CloudWatch)

    Amazon CloudWatch 是一項針對 AWS 雲資源和在 AWS 上執行的應用程式進行監控的服務。您可以使用 Amazon CloudWatch 收集和跟蹤各項指標、收集和監控日誌檔案、設定警報以及自動應對 AWS 資源的更改