1. 程式人生 > 實用技巧 >10分鐘帶你瞭解DevOps工具

10分鐘帶你瞭解DevOps工具

我的一些非常資深的同事和我本人評論了有多少新的DevOps工具正在湧現,以及每天如何越來越難以追蹤它們以及它們在世界上的位置。 我問了其中幾個工具(Ansible,Terraform,Salt,Salt,Chef,Bamboo,CloudFormation)在哪裡適合使用。為什麼我要使用其中一個? 他們甚至是同一件事嗎? 我想念一名主要球員嗎? 我回到了與我相同的空白凝視/問題。 因此,我想我會做一些研究,閱讀並嘗試對我們所有人有意義,以便我們可以將產品分類為大家都熟悉的類別或用途。

在這裡插入圖片描述
在開始討論DevOps工具和類別之前,讓我們退後一步,討論一些基本的(但經常是超載的)術語及其含義。

(1) 計算機/伺服器—具有中央處理器(CPU),具有記憶體(RAM),本地儲存(磁碟)並執行作業系統的物理裝置。

(2) 虛擬機器—在主機上執行的計算機系統的模擬; 通常可以在CPU,記憶體和磁碟使用方面與其他作業系統隔離。

在這裡插入圖片描述
容器-軟體及其所有依賴項的包裝,以便它可以在任何基礎結構上統一一致地執行。 Docker容器是最受歡迎的。 它們使您可以打包一堆東西(您的軟體,配置和其他軟體),以便於部署和運輸。 您可以將容器視為虛擬化的下一步發展(在虛擬機器之後)。

在這裡插入圖片描述
(3) 網路裝置—一種在裝置之間路由網路流量的硬體。 示例包括路由器,負載平衡器和防火牆。

(4)軟體–—在作業系統上編寫並執行的程式碼。

(5) DevOps —傳統上是"開發"(由您自己構建),而有"運營"(我們將對其進行運營),兩者之間的一切都取決於車間的工作方式。 從2010年左右開始,到2018年左右普及,DevOps的想法是"一組旨在減少對系統進行更改與將更改投入正常生產之間的時間,同時確保高質量的實踐。"

當您考慮構建和執行一個非平凡的系統時,實際上會有很多事情要做。 以下是要考慮的傳統物品的列表:

  • 獲取計算機/伺服器硬體
  • 配置計算機/伺服器硬體(作業系統,網路佈線等)
  • 監視計算機/伺服器硬體
  • 獲取網路裝置(負載均衡器,防火牆,路由器等)
  • 配置網路裝置
  • 監控網路裝置
  • 構造軟體
  • 編譯軟體
  • 測試軟體
  • 打包軟體
  • 部署/釋出軟體
  • 監控軟體

在開發運維之前,我們曾經有四個不同的團隊來完成這項工作:

  • 開發人員-他們將執行#7,#8,有時甚至是#10
  • 質量檢查-他們會執行#9,有時會執行#11
  • 系統管理員-他們將執行#1,#2,#3,#12
  • 網路管理員-他們將執行#4,#5,#6

對於硬體,網路裝置和軟體的配置,每個團隊可能會使用他們自己的指令碼和工具集,並且在許多情況下,會手動進行操作以使"軟體版本"發生。

隨著DevOps的到來,對我而言,關鍵思想是打破這些壁壘,使每個人都成為"一個"團隊的一部分,使所有事物的配置,部署和管理方式保持一致。

(6) 雲—定義資訊科技歷史上最繁重的術語是很困難的,但是我喜歡這樣的T恤:“沒有云,只有別人的計算機。” 最初,當雲服務啟動時,它們實際上只是其他人的計算機(或在其計算機上執行的VM)或儲存。 隨著時間的流逝,它們已經演變為這項服務以及許多很多增值服務。 硬體大部分已經被抽象掉了。 您目前無法在大多數雲服務中購買硬體裝置,但可以購買由硬體裝置提供的服務。

(7) 基礎架構即程式碼(IAC)—一種新功能或新概念,使我們可以通過定義或配置檔案來定義資料中心中所有專案的完整設定,包括VM,容器和網路裝置。 我的想法是,我可以建立一些配置和某些指令碼,並使用我們將要討論的工具之一執行它們,它們將自動在資料中心中提供我們的所有服務。 CI / CD是IAC的前身,多年來,我們一直致力於使構建/測試/整合/部署週期自動化,而使用我們的雲基礎架構則是對它的自然擴充套件。 這帶來了成本降低,更快的上市時間以及更少的人為錯誤風險。

隨著IAC的出現,許多傳統的開發工具現在可以用於管理基礎結構。 DevOps工程師現在可以使用工具類別(在下面列出),例如軟體儲存庫,構建工具,CI / CD,程式碼分析器和測試工具,以供DevOps工程師構建和維護基礎架構。

“隨著DevOps的出現,對我來說,關鍵思想是。 。 。 使每個人都成為"一個"團隊的一部分,使所有事物的配置,部署和管理方式保持一致。”

現在,我們已經定義了一些基本詞彙,讓我回到嘗試對DevOps工具進行分類的任務,以使我們更容易確定可以用於什麼的工具。

  • 軟體儲存庫-管理軟體版本的工具-Git是當今使用最廣泛的工具。
  • 構建工具-一些軟體需要打包才能使用或編譯,而傳統的構建工具包括Make,Ant,Maven和MSBuild。
  • 持續整合工具-已配置,因此每次您將程式碼檢入儲存庫時,它都會構建,部署和測試軟體。 通常,這可以提高質量和上市時間。
  • 這個市場上最受歡迎的工具是Jenkins,Travis,TeamCity和Bamboo。
  • 程式碼分析器/檢視工具-這些工具可查詢程式碼,程式碼格式和質量以及測試範圍中的錯誤。 這些因語言而異。SonarQube是該領域的流行工具,也是其他"掉毛"工具。
  • 配置管理-配置管理工具和資料庫通常儲存有關您的硬體和軟體專案的所有資訊,並提供指令碼和/或模板系統來自動化常見任務。
    這個領域似乎有很多參與者。 傳統球員是廚師,木偶和鹽。
  • 部署工具-這些工具有助於軟體的部署。 許多CI工具也是CD(連續部署)工具,可幫助部署軟體。
    傳統上,在Ruby中,Capistrano工具已被廣泛使用。 在Java中,Maven被許多人使用。 所有編排工具也都支援某種部署。
  • 編排工具-這些工具可配置,協調和管理計算機系統和軟體。 它們通常包括"自動化"和"工作流"作為其服務的一部分。Kubernetes是一種非常流行的編排工具,專注於容器。 Terraform是一種非常流行的編排工具,它的應用範圍更加廣泛,包括雲編排。此外,每個雲提供商都擁有自己的一套工具(CloudFormation,GCP Deployment Manager和ARM)。
  • 監視工具-這些工具允許監視硬體和軟體。 通常,它們包括監視程式和日誌檔案的監視程式,以確保系統的執行狀況。
    Nagios是一種流行的監視工具。
  • 測試工具-測試工具用於管理測試以及測試自動化,包括效能和負載測試。

當然,與任何其他產品集一樣,類別不一定是乾淨的。 許多工具跨類別,並提供兩個或多個類別的功能。 以下是我的嘗試,以顯示大多數非常流行的工具並以這些類別視覺化它們的位置。

如您所見,Ansible,Terraform和雲工具(AWS,GCP和Azure)等多個公司正在嘗試將部署,配置管理和業務流程類別與其產品組合在一起。 較早的工具集Puppet,Chef和SaltStack專注於配置管理和自動化,但已擴充套件到編排和部署。 還有一些工具,例如GitLab和Azure DevOps,它們試圖涵蓋幾乎所有類別的DevOps。

我希望本概述可以幫助您瞭解DevOps的基礎知識,可用工具的類別以及當今市場上的各種產品如何幫助其中一個或多個類別。 多年來,在Solution Street我們使用了許多這樣的工具,對於我們來說,在所有情況下都沒有使用任何一種"轉到"工具。 使用的內容取決於所使用的技術,託管位置(以及將來的託管位置)以及團隊的才能和組成。

在這裡插入圖片描述

上面是我收集的一些視訊資源,在這個過程中幫到了我很多。如果你不想再體驗一次自學時找不到資料,沒人解答問題,堅持幾天便放棄的感受的話,可以加入我們扣扣群【313782132 】,裡面有各種軟體測試資源和技術討論。

軟體測試是IT相關行業中最容易入門的學科~不需要開發人員燒腦的邏輯思維、不需要運維人員24小時的隨時待命,需要的是細心認真的態度和IT相關知識點廣度的瞭解,每個測試人員從入行到成為專業大牛的成長路線可劃分為:軟體測試、自動化測試、測試開發工程師 3個階段。

如果你不想再體驗一次自學時找不到資料,沒人解答問題,堅持幾天便放棄的感受的話,可以加我們的軟體測試交流群,裡面有各種軟體測試資料和技術交流。