DevOps的介紹及常見的幾種工具

一、DevOps的介紹

DevOps是Development和Operations的組合

可以把DevOps看作開發(軟件工程)、技術運營和質量保障(QA)三者的交集。傳統的軟件組織將開發、IT運營和質量保障設爲各自分離的部門。在這種環境下如何採用新的開發方法(例如敏捷軟件開發),這是一個重要的課題:按照從前的工作方式,開發和部署不需要IT支持或者QA深入的、跨部門的支持,而卻需要極其緊密的多部門協作。然而DevOps考慮的還不止是軟件部署。它是一套針對這幾個部門間溝通與協作問題的流程和方法。

需要頻繁交付的企業可能更需要對DevOps有一個大致的瞭解。Flickr發展了自己的DevOps能力,使之能夠支撐業務部門“每天部署10次”的要求──如果一個組織要生產面向多種用戶、具備多樣功能的應用程序,其部署週期必然會很短。這種能力也被稱爲持續部署,並且經常與精益創業方法聯繫起來。 從2009年起,相關的工作組、專業組織和博客快速湧現。

DevOps的引入能對產品交付、測試、功能開發和維護(包括──曾經罕見但如今已屢見不鮮的──“熱補丁”)起到意義深遠的影響。在缺乏DevOps能力的組織中,開發與運營之間存在着信息“鴻溝”──例如運營人員要求更好的可靠性和安全性,開發人員則希望基礎設施響應更快,而業務用戶的需求則是更快地將更多的特性發布給最終用戶使用。這種信息鴻溝就是最常出問題的地方。

DevOps 的概念在軟件開發行業中逐漸流行起來。越來越多的團隊希望實現產品的敏捷開發,DevOps 使一切成爲可能。有了 DevOps ,團隊可以定期發佈代碼、自動化部署、並將持續集成 / 持續交付作爲發佈過程的一部分。

雖然 DevOps 背後有各種各樣的概念,但幸好有一些工具可以讓你更容易地理解和實現。在本文中,你將瞭解這些工具,並將它們作爲軟件發佈 / 維護工具包工作的一部分開始使用。

二、DevOps對應用程序發佈的影響

在很多企業中,應用程序發佈是一項涉及多個團隊、壓力很大、風險很高的活動。然而在具備DevOps能力的組織中,應用程序發佈的風險很低,原因如下 :

1、減少變更範圍

與傳統的瀑布式開發模型相比,採用敏捷或迭代式開發意味着更頻繁的發佈、每次發佈包含的變化更少。由於部署經常進行,因此每次部署不會對生產系統造成巨大影響,應用程序會以平滑的速率逐漸生長。

2、加強發佈協調

靠強有力的發佈協調人來彌合開發與運營之間的技能鴻溝和溝通鴻溝;採用電子數據表、電話會議、即時消息、企業門戶(wiki、sharepoint)等協作工具來確保所有相關人員理解變更的內容並全力合作。

3、自動化

強大的部署自動化手段確保部署任務的可重複性、減少部署出錯的可能性。

與傳統開發方法那種大規模的、不頻繁的發佈(通常以“季度”或“年”爲單位)相比,敏捷方法大大提升了發佈頻率(通常以“天”或“周”爲單位)

三、DevOps常見的幾種工具

DevOps 有很多可使用的工具,在一篇文章中幾乎不可能介紹完它們。本文將介紹五種最流行、功能最強大的 DevOps 工具:

  • Terraform
  • Ansible
  • Packer
  • Docker
  • Kubernetes

1、Terraform

在這裏插入圖片描述

類型:配置

語言: Go

推薦的第一個 DevOps 工具是來自 Hashicorp 的Terraform。Terraform 是一個基礎設施管理工具,允許您正確地構建、更改和管理基礎設施。您可以將 Terraform 視爲一種供應工具。它幫助您設置服務器、數據庫和其他支持全面應用程序的基礎設施。

Terraform 並不侷限於任何特定的雲服務提供商,它可以與多個雲提供商和環境協同工作。雲服務提供商如 AWS、Microsoft Azure、谷歌雲都與 Terraform 無縫集成。版本控制系統託管提供商,如 Github 和 Bitbucket,都可以很好地使用它。

Terraform 有一個企業版和開源版,還可以安裝在 macOS、Linux 和 Windows 系統上。

2、Ansible

在這裏插入圖片描述

類型:配置

語言:Python、PowerShell、Shell 和 Ruby

與 Terraform 類似,Ansible 也是一個基礎設施管理工具。Ansible 可以幫助你部署應用程序,供應和配置管理的服務器。Ansible 是用 Python 構建的,由 RedHat 維護,但它仍然是免費和開源的。

作爲一個配置管理系統,您可以使用 Ansible 來設置和構建多個服務器。你可以在控制機器上安裝 Ansible,而不需要 Ansible 在其他服務器上運行,這些服務器可以從 web 到應用程序再到數據庫服務器。

與 Terraform 不同,Ansible 不使用 HCL 作爲它的代碼。相反,配置是寫在 Ansible 劇本,這是 YAML 文件。Ansible 使用聲明性和程序性模式的混合。這與 Terraform 不同,後者僅僅是聲明性的。

Linux 是安裝 Ansible 最合適的操作系統。不過,它在 macOS 上也運行良好。對於 Windows 用戶,可以通過 Linux 的 Windows 子系統的 bash shell 使用 Ansible。

3、Packer

在這裏插入圖片描述
類型:配置

語言: Go

Packer 是另一個來自 Hashicorp 的 DevOps 工具。用 Golang 編寫的 Packer 可以幫助你自動創建虛擬鏡像。手動構建鏡像的過程可能令人沮喪,因爲它容易出錯,但 Packer 消除了所有這些。

對於單個 JSON 文件,可以使用 Packer 創建多個鏡像。當它第一次工作時,由於沒有任何東西會干擾它的自動化過程,因此可以保證它能百分百地工作。許多雲服務提供商都使用鏡像,您可以無縫地與這些提供商合作,因爲 Packer 標準化了用於雲環境的鏡像的創建。

Packer 不是一個獨立的工具。您可以將其與 Ansible、Chef 和 Jenkins 集成,以便在部署管道中進一步使用這些映像。安裝過程並不複雜,您可以學習如何開始使用該工具。

4、Docker

在這裏插入圖片描述

類型:容器

語言: Go

Docker 是一種容器技術,可讓您在特殊環境中隔離應用程序。容器化與虛擬化類似,不同之處在於容器不會啓動完整的操作系統。

使用 Docker 容器,您可以在這些自定義環境中開發和部署應用程序,從而不必擔心兼容性問題。您的應用程序可以在任何位置運行,只要它們位於容器中即可。

要啓動 Docker 容器,您必須通過 Dockerfiles 創建 Docker 映像。從 Docker 映像啓動時,Dockerfile 包含 Docker 容器中所需的規範。您不必總是構建自己的 Docker 映像,因爲 Docker Hub 上可以使用官方映像。

Docker 本身可以在 Linux 上運行,並且在 macOS 上也可以正常運行,因爲它類似於 Unix。對於 Windows 用戶,也可以通過Docker 工具箱來使用 Docker。

通常情況下,你可能會使用多個 Docker 容器,這就引出了本文中的最後一個 DevOps 工具。

5、Kubernetes

在這裏插入圖片描述

類型:容器

語言: Go

Kubernetes (K8s) 是一個谷歌開源工具,它可以讓你管理 Docker 容器。由於在生產中經常有大量的容器在運行,因此,Kubernetes 使編排這些容器成爲可能。

首先要了解編排 Docker 容器的原因。當有許多容器在運行時,很難手動監視這些容器,並使它們彼此通信;另外,這種擴展以及負載平衡也變得困難。

使用 Kubernetes,可以控制所有這些容器,因此可以將這組機器作爲一臺機器進行管理。與 Docker Compose 相比,Kubernetes 是不同的,因爲它使部署,擴展和監視容器變得更加容易。當它們中的任何一個崩潰時,它們都可以自愈,而 Kubernetes 可以製造新的來代替。使用 K8s,可以輕鬆地進行存儲編排、服務發現和負載平衡。

您可以在 macOS,Linux 和 Windows 上安裝 Kubernetes,並通過Kubernetes 命令行工具使用它。

結論:

DevOps 的概念對於使大型應用程序在不同負載或流量下保持高性能是非常有益的。它還使軟件部署管道易於管理。

如果沒有可用的工具,DevOps 概念很難實現。這個領域有很多工具,每個公司都有不同的選擇。儘管如此,Terraform、Ansible、Packer、Docker、Kubernetes 都是擁有大量用戶社區的工具,能夠在各種軟件項目中實現 DevOps 的工具。如果您打算使用它們,可以做進一步的研究。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章