最全的 DevOps 工具集合,再也不怕選型了?。ㄗ钍軞g迎的devops工具)
隨著 DevOps 的出現(xiàn)頻率越來(lái)越高,很多企業(yè)都在蠢蠢欲動(dòng),想要設(shè)計(jì)和開發(fā) DevOps 平臺(tái)。工欲善其事必先利其器,本文為大家總結(jié)了 DevOps 各個(gè)階段可以選擇的工具,也許 DevOps 平臺(tái)的技術(shù)選型在這一篇文章中就可以完成。
DevOps 的目標(biāo)是持續(xù)改進(jìn),因此技術(shù)選型也是分階段的。
DevOps 技術(shù)類別
規(guī)劃工具
在規(guī)劃階段最重要的是要制定共同的目標(biāo)、保證透明度和賦權(quán)。目前業(yè)內(nèi)比較常用的規(guī)劃工具主要包括 GitLab、TaskTop、CollabNet VersionOne、Pivotal Tracker、Trello 和 Azure Boards。
GitLab
GitLab 是基于 Web 的 DevOps 生命周期工具。它提供了一個(gè) Git 存儲(chǔ)庫(kù)管理器,使用由 GitLab Inc. 開發(fā)的開源許可證來(lái)提供 Wiki、問(wèn)題跟蹤和 CI/CD 管道功能。
GitLab 提供了一些工具用來(lái)在實(shí)踐中規(guī)劃事務(wù),還可以用來(lái)查看工作的范圍。
Tasktop
Tasktop 可以將所有這些工具添加到 Tasktop 支持的全套敏捷和應(yīng)用程序生命周期管理(ALM)、PPM 和 ITSM 工具中,從而在整個(gè)生命周期中提供前所未有的可視化特性。
CollabNet VersionOne
VersionOne 支持 Scrum、看板、XP、SAFe 和混合開發(fā)方法,簡(jiǎn)化了跨所有團(tuán)隊(duì)、程序、軟件產(chǎn)品組合和企業(yè)的計(jì)劃、跟蹤和報(bào)告工作。
Pivotal Tracker
全球各地開發(fā)人員都可以使用這款敏捷項(xiàng)目管理工具,圍繞一個(gè)共享的,帶有優(yōu)先級(jí)的 backlog 進(jìn)行實(shí)時(shí)協(xié)作。
Trello
Trello 是基于 Web 的看板風(fēng)格列表制作應(yīng)用程序,是 Atlassian 的子應(yīng)用。
許多團(tuán)隊(duì)在規(guī)劃各個(gè) sprint 時(shí)都會(huì)用它。
Azure Boards
可以跟蹤軟件項(xiàng)目,并使用敏捷工具(包括 Scrum boards、看板 boards 和儀表板等)改進(jìn)規(guī)劃工作。同時(shí),還有工具可以幫助你可視化工作、共享計(jì)劃、跟蹤進(jìn)度,并確保你正在向目標(biāo)邁進(jìn)。
問(wèn)題跟蹤
問(wèn)題跟蹤階段是為了提供客戶響應(yīng)能力,減少知識(shí)浪費(fèi),縮短反饋鏈路。目前業(yè)內(nèi)比較常用的問(wèn)題跟蹤工具包括 Atlassian Jira、JetBrains YouTrack 和 ZenDesk。
Atlassian Jira
Jira 是 Atlassian 開發(fā)的專用問(wèn)題跟蹤產(chǎn)品,提供了錯(cuò)誤跟蹤和敏捷項(xiàng)目管理功能。
JetBrains YouTrack
YouTrack 是由 JetBrains 開發(fā)的,基于瀏覽器的專用商業(yè)軟件,融合了錯(cuò)誤跟蹤器、問(wèn)題跟蹤系統(tǒng)以及項(xiàng)目管理軟件。它的賣點(diǎn)是基于查詢的問(wèn)題搜索,擁有自動(dòng)完成、分批處理問(wèn)題、自定義問(wèn)題屬性集,以及創(chuàng)建自定義工作流的特性。
Zendesk
Zendesk 可以輕松地從所有渠道跟蹤每一個(gè)客戶問(wèn)題。目前 Uber 和 Airbnb 等許多公司都在使用 Zendesk Support 作為他們的問(wèn)題跟蹤軟件。
源代碼控制
源代碼控制主要是為了控制資產(chǎn),減少溝通障礙,賦能團(tuán)隊(duì)。目前業(yè)內(nèi)比較常用的 SCM 工具包括 Git、GitHub、GitLab、Bitbucket 和 Subversion。
Git
Git 是一個(gè)分布式版本控制系統(tǒng),用來(lái)在軟件開發(fā)過(guò)程中跟蹤源代碼的更改。它是專為協(xié)調(diào)不同程序員的工作而設(shè)計(jì)的,也可用于跟蹤各種文件集中的更改。它的優(yōu)勢(shì)包括速度、數(shù)據(jù)完整性以及對(duì)分布式非線性工作流的支持。
GitHub
GitHub 提供了 Git 的分布式版本控制和源代碼管理功能,自己也有很多特性。
GitLab
GitLab 中的版本控制提供了世界一流的源代碼管理功能,可幫助你的開發(fā)團(tuán)隊(duì)共享、協(xié)作并盡可能提高生產(chǎn)力。
Bitbucket
Bitbucket 是 Atlassian 所有的、基于 Web 的版本控制庫(kù)托管服務(wù),可用在使用 Mercurial 或 Git 版本控制系統(tǒng)的源代碼和開發(fā)項(xiàng)目上。
Subversion
Apache Subversion 是一個(gè)軟件版本和修訂控制系統(tǒng),其根據(jù) Apache 許可開源。軟件開發(fā)人員可使用 Subversion 來(lái)維護(hù)源代碼、網(wǎng)頁(yè)和文檔等文件的當(dāng)前和歷史版本。
構(gòu)建工具
構(gòu)建階段主要是為了保持打包的一致性,自動(dòng)執(zhí)行容易出錯(cuò)的活動(dòng),生成早期質(zhì)量信號(hào)。目前業(yè)內(nèi)比較常用的構(gòu)建工具包括 Maven/Gradle、MSBuild、Rake、JFrog Artifactory、Sonatype Nexus 和 NuGet。
Maven/Gradle
Maven 是主要用于 Java 項(xiàng)目的自動(dòng)化構(gòu)建工具。Maven 還可以構(gòu)建和管理以 C#、Ruby、Scala 等語(yǔ)言編寫的項(xiàng)目。
Gradle 是一個(gè)開源的自動(dòng)化構(gòu)建系統(tǒng),其基于 Apache Ant 和 Apache Maven 的理念,并引入了基于 Groovy 的領(lǐng)域特定語(yǔ)言,替代 Apache Maven 使用的 XML 格式來(lái)聲明項(xiàng)目配置。
MSBuild
Microsoft Build Engine(通常稱為 MSBuild)是用來(lái)托管代碼及原生 C 代碼的免費(fèi)開源構(gòu)建工具集,它之前是.NET Framework 的一部分。Visual Studio 依賴 MSBuild(反之則不然)。
Rake
Rake 是一個(gè)軟件任務(wù)管理和自動(dòng)化構(gòu)建工具。它允許用戶指定任務(wù)并描述依賴關(guān)系。你也可以對(duì)命名空間中的組任務(wù)執(zhí)行這些操作。
JFrog Artifactory
JFrog Artifactory 這款工具可用來(lái)存儲(chǔ)構(gòu)建過(guò)程的二進(jìn)制輸出,以備分發(fā)和部署之用。Artifactory 支持許多軟件包格式,如 Maven、Debian、npm、Helm、Ruby、Python 和 Docker。
JFrog 提供了高可用性、復(fù)制、災(zāi)難恢復(fù)和可伸縮特性,并兼容許多本地和云存儲(chǔ)產(chǎn)品。
Sonatype Nexus
Sonatype Nexus 是一款存儲(chǔ)庫(kù)管理器。你可以用它代理、收集和管理依賴項(xiàng),這樣就用不著和一大堆 JAR 打交道了。它簡(jiǎn)化了軟件分發(fā)的工作。
你可以配置自己的內(nèi)部構(gòu)建,然后發(fā)布到 Nexus 上供其他開發(fā)者使用。
NuGet
NuGet 是.NET 的軟件包管理器。NuGet 客戶端工具提供了生成和使用軟件包的功能。
NuGet Gallery 是為所有包作者和使用者提供的軟件包中心存儲(chǔ)庫(kù)。
測(cè)試工具
測(cè)試階段主要是檢測(cè)內(nèi)部質(zhì)量,建立對(duì)已部署構(gòu)件的信心。目前業(yè)內(nèi)常用的測(cè)試工具包括 JUnit、xUnit.net、Selenium、Jasmine 和 Cucumber。
JUnit
JUnit 是用于 Java 編程語(yǔ)言的單元測(cè)試框架。JUnit 在測(cè)試驅(qū)動(dòng)開發(fā)的環(huán)境中扮演著重要角色,從 SUnit 起源的一組單元測(cè)試框架(統(tǒng)稱為 xUnit)之一。
xUnit.net
xUnit.net 是由 NUnit 的原作者編寫的,用于.NET Framework 的開源單元測(cè)試工具。
Selenium
Selenium 是用于測(cè)試 Web 應(yīng)用程序的可移植框架。Selenium 提供了一種回放工具,使用戶無(wú)需學(xué)習(xí)測(cè)試腳本語(yǔ)言就能編寫功能測(cè)試。
Jasmine
Jasmine 是用于 JavaScript 的開源測(cè)試框架。它可以在任何支持 JavaScript 的平臺(tái)上運(yùn)行,不會(huì)入侵應(yīng)用程序或 IDE,還有著易讀的語(yǔ)法。在它身上可以找到 Screw.Unit、JSSpec、JSpec 和 RSpec 等諸多單元測(cè)試框架的影子。
Cucumber
Cucumber 是一種支持行為驅(qū)動(dòng)開發(fā)的軟件工具。
Cucumber BDD 方法的核心是一種稱為 Gherkin 的普通語(yǔ)言解析器。它能用客戶可以理解的邏輯語(yǔ)言來(lái)指定預(yù)期的軟件行為。
持續(xù)集成和部署(CI/CD)
CI 工具的存在是為了快速反饋和減少缺陷、等待。目前業(yè)務(wù)比較常用的 CI 工具包括 Jenkins、CircleCI、Travis CI、Concourse、AWS CodePipeline 和 Azure Pipelines。
Jenkins
Jenkins 是一個(gè)免費(fèi)的開源自動(dòng)化服務(wù)器。Jenkins 可用來(lái)自動(dòng)化軟件開發(fā)過(guò)程中非人類參與的工作,基于 CI 和 CD 的技術(shù)理念。這是一個(gè)基于服務(wù)器的系統(tǒng),可在 servlet 容器(例如 Apache Tomcat)中運(yùn)行。
CircleCI
CircleCI 是世界上最大的共享 CI/CD 平臺(tái),也是代碼從構(gòu)思到交付過(guò)程的中央樞紐。
作為最常用的 DevOps 工具之一,CircleCI 每天處理超過(guò) 100 萬(wàn)個(gè)構(gòu)建,因此收集了大量關(guān)于工程團(tuán)隊(duì)工作方式以及代碼運(yùn)行方式的數(shù)據(jù)。Spotify、Coinbase、Stitch Fix 和 BuzzFeed 等公司使用 CircleCI 來(lái)提升工程團(tuán)隊(duì)的生產(chǎn)力、發(fā)布更好的產(chǎn)品并更快地將產(chǎn)品推向市場(chǎng)。
Travis CI
TravisCI 是一項(xiàng)托管 CI 服務(wù),用于構(gòu)建和測(cè)試 GitHub 上托管的軟件項(xiàng)目。Travis CI 為私有項(xiàng)目提供各種付費(fèi)計(jì)劃,并提供了開源的免費(fèi)方案。TravisPro 提供了在客戶自己的硬件上定制化部署專有版本的能力。
Concourse
Concourse 是用 Go 編寫的自動(dòng)化系統(tǒng)。人們經(jīng)常將它用于 CI/CD,其賣點(diǎn)是強(qiáng)大的可伸縮性,可以提供很簡(jiǎn)單或者很復(fù)雜的自動(dòng)化管道。
AWS CodePipeline
AWS CodePipeline 是一項(xiàng)完全托管的 CD 服務(wù),可幫助你自動(dòng)化發(fā)布管道,以實(shí)現(xiàn)快速、可靠的應(yīng)用程序和基礎(chǔ)架構(gòu)更新流程。
每當(dāng)你更改代碼時(shí),CodePipeline 都會(huì)根據(jù)你定義的發(fā)布模型自動(dòng)執(zhí)行發(fā)布流程中的構(gòu)建、測(cè)試和部署階段。這使你能夠快速可靠地交付功能和更新。
你可以輕松地將 AWS CodePipeline 與第三方服務(wù)(例如 GitHub)或你自己的自制插件集成。使用 AWS CodePipeline 時(shí)你按需付費(fèi)即可。它沒(méi)有前期費(fèi)用或長(zhǎng)期承諾。
Azure Pipelines
可用它獲取適用于 Linux、macOS 和 Windows 的云托管管道。生成 Web、桌面和移動(dòng)應(yīng)用程序。部署到云端或本地。
使用 Pipelines 自動(dòng)化構(gòu)建和部署流程可以節(jié)約很多時(shí)間,從而騰出更多資源投入創(chuàng)造活動(dòng)。
而 CD 工具主要是為了將復(fù)雜的管道自動(dòng)化,統(tǒng)一團(tuán)隊(duì)目標(biāo)。目前業(yè)內(nèi)比較常用的 CD 工具包括 Spinnaker、Octopus Deploy 和 AWS CodeDeploy。
Spinnaker
Spinnaker 是一個(gè)免費(fèi)的開源 CD 軟件平臺(tái),最初由 Netflix 開發(fā),不久被谷歌看中并發(fā)展起來(lái)。
Spinnaker 是一個(gè)多云 CD 平臺(tái),能夠以高速度和強(qiáng)信心來(lái)發(fā)布軟件更改。它提供了強(qiáng)大而靈活的管道管理系統(tǒng),并支持與主流云提供商的集成。
Octopus Deploy
Octopus Deploy 是全球領(lǐng)先的 CD 團(tuán)隊(duì)使用的自動(dòng)部署和發(fā)布管理工具。
Octopus 是一個(gè)工具集,可以顯著簡(jiǎn)化任何 DevOps 流程,以通過(guò)云或虛擬機(jī)連續(xù)測(cè)試和部署大量微服務(wù)或應(yīng)用程序。
AWS CodeDeploy
AWS CodeDeploy 是一項(xiàng)完全托管的部署服務(wù),可自動(dòng)將軟件部署到各種計(jì)算服務(wù)上,例如 Amazon EC2、AWS Fargate、AWS Lambda 和你的本地服務(wù)器等。
你可以使用 AWS CodeDeploy 自動(dòng)執(zhí)行軟件部署,無(wú)需容易出錯(cuò)的手動(dòng)操作。
配置管理工具
配置管理工具的作用是將基礎(chǔ)架構(gòu)代碼化,加強(qiáng)一致性。目前業(yè)內(nèi)常用的配置管理工具包括 Terraform、BOSH、Chef、Ansible、Puppet、Google Cloud Deployment Manager。
Terraform
Terraform 是由 HashiCorp 創(chuàng)建的開源基礎(chǔ)架構(gòu)即代碼(IaC)軟件工具。它讓用戶能夠使用 Hashicorp 配置語(yǔ)言或 JSON(可選)這兩種高級(jí)配置語(yǔ)言來(lái)定義和配置數(shù)據(jù)中心基礎(chǔ)架構(gòu)。
BOSH
BOSH 是一個(gè)將小型和大規(guī)模云軟件的發(fā)布工程、部署和生命周期管理統(tǒng)一在一起的項(xiàng)目。BOSH 可以在數(shù)百個(gè) VM 上配置和部署軟件。它還能以接近零的停機(jī)時(shí)間執(zhí)行監(jiān)視、故障恢復(fù)和軟件更新任務(wù)。
雖然 BOSH 是為了部署 Cloud Foundry 而開發(fā)的,但它也可以用來(lái)部署幾乎所有軟件(例如 Hadoop)。BOSH 特別適合大型分布式系統(tǒng)。
此外,BOSH 支持多個(gè)基礎(chǔ)架構(gòu)即服務(wù)(IaaS)提供商,例如 VMware vSphere、Google Cloud Platform、Amazon WebServices EC2、Microsoft Azure、OpenStack 和阿里云。它帶有一個(gè)云提供商界面(CPI),使用戶可以擴(kuò)展 BOSH 以支持其他 IaaS 提供商,如 Apache CloudStack 和 VirtualBox 等。
Chef
Chef 是一種配置管理工具,用來(lái)處理物理服務(wù)器、虛擬機(jī)和云中的機(jī)器設(shè)置。許多公司使用 Chef 軟件來(lái)控制和管理自己的基礎(chǔ)架構(gòu),他們包括 Facebook、Etsy、Cheezburger 和 Indiegogo 等。
Chef 是持續(xù)自動(dòng)化軟件領(lǐng)域的領(lǐng)導(dǎo)者、應(yīng)用程序自動(dòng)化領(lǐng)域的創(chuàng)新者,也是 DevOps 運(yùn)動(dòng)的創(chuàng)始人之一。Chef 與全球 1000 多家最具創(chuàng)新力的公司合作,以實(shí)現(xiàn)他們數(shù)字化轉(zhuǎn)型的愿景,并提供可快速交付軟件的實(shí)踐和平臺(tái)。
Ansible
Ansible 是一種開源的軟件預(yù)備、配置管理和應(yīng)用程序部署工具。它可以在許多類 Unix 系統(tǒng)上運(yùn)行,既可以配置類 Unix 系統(tǒng)也可以配置微軟 Windows。它自帶聲明式語(yǔ)言來(lái)描述系統(tǒng)配置。
Puppet
Puppet 提供的能力可以定義系統(tǒng)所需的軟件和配置,然后在初始設(shè)置后保持指定狀態(tài)。
用戶使用與 Ruby 類似的聲明式領(lǐng)域特定語(yǔ)言(DSL)來(lái)定義指定環(huán)境或基礎(chǔ)架構(gòu)的配置參數(shù)。Puppet 使用稱為 Facter 的一個(gè)實(shí)用程序獲取系統(tǒng)信息,該程序跟隨 Puppet 軟件包一并安裝。
Puppet master 是一個(gè)系統(tǒng),使用清單來(lái)管理它所控制的所有節(jié)點(diǎn)的重要配置信息。
Master 控制的節(jié)點(diǎn)都安裝了 Puppet 并運(yùn)行 Puppet 代理(即守護(hù)程序)。代理收集的節(jié)點(diǎn)配置信息將發(fā)送到 Puppet master。然后,Puppet master 根據(jù)節(jié)點(diǎn)的配置策略來(lái)編制一個(gè)目錄。每個(gè)節(jié)點(diǎn)都使用這些信息來(lái)將任何必要的配置更新應(yīng)用到自己身上。
Puppet 使用的是 pull 模式,在該模式下,代理定期輪詢 master,以檢索特定于站點(diǎn)和節(jié)點(diǎn)的配置。在這種基礎(chǔ)架構(gòu)中,受管理的節(jié)點(diǎn)通常以后臺(tái)服務(wù)的形式運(yùn)行 Puppet 代理應(yīng)用程序。
Google Cloud Deployment Manager
Google Cloud Deployment Manager 是一項(xiàng)基礎(chǔ)架構(gòu)管理服務(wù),可輕松創(chuàng)建、部署和管理 Google Cloud Platform 資源。
云平臺(tái)
云平臺(tái)主要是為了自動(dòng)化、觀察軟件的運(yùn)行時(shí),目前業(yè)內(nèi)常用的云平臺(tái)包括 Amazon Web Services、Microsoft Azure、Google Cloud Platform、Pivotal Cloud Foundry、Heroku 和 Container Schedulers。
Amazon Web Services
Amazon Web Services(AWS)是一個(gè)安全的云服務(wù)平臺(tái),提供計(jì)算能力、數(shù)據(jù)庫(kù)存儲(chǔ)、內(nèi)容交付等功能,以幫助業(yè)務(wù)擴(kuò)展和成長(zhǎng)。
簡(jiǎn)單來(lái)說(shuō),AWS 允許你進(jìn)行以下操作:
- 在云中運(yùn)行 Web 和應(yīng)用程序服務(wù)器以托管動(dòng)態(tài)網(wǎng)站
- 將所有文件安全地存儲(chǔ)在云中,可以從任何地方訪問(wèn)它們
- 使用托管數(shù)據(jù)庫(kù)(如 MySQL、PostgreSQL、Oracle 或 SQLServer)存儲(chǔ)信息
- 使用內(nèi)容交付網(wǎng)絡(luò)(CDN)在世界范圍內(nèi)快速交付靜態(tài)和動(dòng)態(tài)文件
- 向你的眾多客戶發(fā)送大量電子郵件
Microsoft Azure
Microsoft Azure 是由微軟創(chuàng)建的一種云計(jì)算服務(wù),可通過(guò)微軟管理的數(shù)據(jù)中心構(gòu)建、測(cè)試、部署和管理應(yīng)用程序和服務(wù)。
Microsoft Azure(以前稱為 Windows Azure)是微軟的公共云計(jì)算平臺(tái)。它提供了多種云服務(wù),包括計(jì)算、分析、存儲(chǔ)和網(wǎng)絡(luò)等用途。用戶可以在這些服務(wù)中挑選自己所需的選項(xiàng),以在公有云中開發(fā)和擴(kuò)展新的應(yīng)用程序,或運(yùn)行現(xiàn)有應(yīng)用程序。
Google Cloud Platform
由谷歌提供的 Google Cloud Platform 是一套云計(jì)算服務(wù),運(yùn)行在谷歌內(nèi)部為其最終用戶產(chǎn)品(例如 Google Search、Gmail 和 YouTube)打造的同一套基礎(chǔ)架構(gòu)上。
Google Cloud Platform 提供了計(jì)算資源,用于在 Web 上部署和運(yùn)營(yíng)應(yīng)用程序。它的專長(zhǎng)是為個(gè)人和企業(yè)提供構(gòu)建和運(yùn)行軟件的場(chǎng)所,并使用 Web 來(lái)連接軟件用戶。
谷歌的云計(jì)算服務(wù)可幫助你直面各種業(yè)務(wù)挑戰(zhàn),包括數(shù)據(jù)管理、混合和多云以及 AI 和 ML 等。
Pivotal Cloud Foundry
Pivotal Cloud Foundry(PCF)是一個(gè)開源、多云的應(yīng)用程序平臺(tái)即服務(wù)(PaaS),由 501 組織 Cloud Foundry Foundation 管理。該軟件最初由 VMware 開發(fā),但之后轉(zhuǎn)移到了 Pivotal Software。隨著 VMware 于 2019 年底收購(gòu) Pivotal,它也重新回到了 VMware。
PCF 是用于部署、管理和持續(xù)交付應(yīng)用程序、容器和函數(shù)的多云平臺(tái)。PCF 允許開發(fā)人員快速部署和交付軟件,而無(wú)需管理底層基礎(chǔ)架構(gòu)。
Heroku
Heroku 是一種支持多種編程語(yǔ)言的云 PaaS。Heroku 是最早的云平臺(tái)之一,自 2007 年 6 月就開始開發(fā)了;當(dāng)時(shí)它僅支持 Ruby 編程語(yǔ)言,但現(xiàn)在支持 Java、Node.js、Scala、Clojure、Python、PHP 和 Go。
Heroku 是基于容器的云 PaaS。開發(fā)人員使用 Heroku 來(lái)部署、管理和擴(kuò)展現(xiàn)代應(yīng)用程序。這一平臺(tái)優(yōu)雅、靈活且易于使用,為開發(fā)人員提供了將自己的應(yīng)用推向市場(chǎng)的最簡(jiǎn)單途徑。
容器調(diào)度程序
容器調(diào)度程序的主要任務(wù)是在最合適的主機(jī)上啟動(dòng)容器,并將它們連接起來(lái)。它必須具備自動(dòng)故障轉(zhuǎn)移能力,并且在數(shù)據(jù)太多,單個(gè)實(shí)例無(wú)法處理 / 計(jì)算時(shí)擴(kuò)展容器。
三種最受歡迎的容器調(diào)度程序分別是 Docker Swarm、Apache Mesos 和 Kubernetes。
Docker Swarm
DockerSwarm 是 Docker 開發(fā)的容器調(diào)度程序。由 Docker 開發(fā)的這個(gè)集群解決方案提供了很多優(yōu)勢(shì),比如說(shuō)它使用了標(biāo)準(zhǔn)的 Docker API。Swarm 的架構(gòu)由兩大元素組成:
Docker Swarm 架構(gòu),?Alexandre Beslic(DockerInc.)
Apache Mesos 和 Mesosphere Marathon
Mesos 的目的是建立一個(gè)可擴(kuò)展且高效的系統(tǒng),以支持當(dāng)前和將來(lái)的各種框架。這也是主要問(wèn)題所在:Hadoop 和 MPI 之類的框架都是獨(dú)立開發(fā)的,因此無(wú)法在各個(gè)框架之間進(jìn)行細(xì)粒度的共享。
Mesos 的對(duì)策是添加一個(gè)資源共享薄層,為框架提供訪問(wèn)集群資源的公共接口。Mesos 正在將對(duì)調(diào)度的控制權(quán)委派給框架,因?yàn)樵S多框架已經(jīng)實(shí)現(xiàn)了復(fù)雜的調(diào)度機(jī)制。
根據(jù)要在集群上運(yùn)行的作業(yè)類型可以將框架分為四類,其中一些具有 Marathon 之類的原生 Docker 支持。Mesos 0.20.0 中添加了對(duì) Docker 容器的支持。
我們將重點(diǎn)介紹 Mesos 與 Marathon 的搭配用法,因?yàn)楹笳呤?Mesosphere 積極維護(hù)的框架,在調(diào)度方面提供了許多功能,如約束、運(yùn)行狀況檢查、服務(wù)發(fā)現(xiàn)和負(fù)載平衡等。
使用 Marathon 的 Apache Mesos 架構(gòu),?AdrianMouat
如圖所見(jiàn),集群中有四個(gè)元素。ZooKeeper 幫助 Marathon 查找 Mesos master 的地址,可以使用多個(gè)實(shí)例來(lái)處理故障。
Marathon 負(fù)責(zé)啟動(dòng)、監(jiān)視并擴(kuò)展容器。Mesos master 將分配給節(jié)點(diǎn)的任務(wù)發(fā)送給 Marathon,并在節(jié)點(diǎn)具有一些可用的 CPU/RAM 時(shí)向 Marathon 提出要約。Mesos slaves 負(fù)責(zé)運(yùn)行容器并提交自身可用資源的列表。
Kubernetes
Kubernetes 是用于 Docker 容器的編排系統(tǒng),使用標(biāo)簽和 pods 的概念將容器分為許多邏輯單元。Pod 是 Kubernetes 與其他兩種解決方案之間的主要區(qū)別所在——它們是位于同一地點(diǎn)的容器的集合,共同組成部署和調(diào)度服務(wù)。與基于基于相似性的容器協(xié)同調(diào)度機(jī)制(如 Swarm 和 Mesos)相比,這種方法簡(jiǎn)化了集群的管理。
Kubernetes 調(diào)度程序的任務(wù)是監(jiān)視 PodSpec 為空的 Pod。NodeName 賦予一個(gè)值,以將容器調(diào)度在集群中的某個(gè)位置。
這是與 Swarm 和 Mesos 不一樣的地方,因?yàn)?Kubernetes 允許開發(fā)人員在運(yùn)行 Pod 時(shí)通過(guò)定義 PodSpec.NodeName 來(lái)繞過(guò)調(diào)度程序。
調(diào)度程序使用謂詞和優(yōu)先級(jí)來(lái)定義容器應(yīng)運(yùn)行的節(jié)點(diǎn)。這些參數(shù)的默認(rèn)值可以使用新的調(diào)度程序策略配置覆蓋。
如果使用命令行標(biāo)志 policy-config-file 指向描述啟動(dòng) Kubernetes 時(shí)要使用的謂詞和優(yōu)先級(jí)的 JSON 文件,調(diào)度程序就會(huì)使用管理員定義的策略。
Kubernetes 架構(gòu)(灰色部分是容器,彩色部分是 pods),?GoogleInc.
監(jiān)控和記錄工具
監(jiān)控和記錄工具主要是為了在發(fā)生故障時(shí)快速響應(yīng),快速恢復(fù),同時(shí)減少事故期間的人員參與。目前業(yè)內(nèi)比較常用的監(jiān)控和記錄工具包括 ELK Stack、Datadog、New Relic、Prometheus、Zipkin 和 Azure Monitor。
ELK Stack
ELK Stack 是三個(gè)開源產(chǎn)品的集合——它們分別是 Elasticsearch、Logstash 和 Kibana。它們都是由 Elastic 公司開發(fā)、管理和維護(hù)的。
E 代表 ElasticSearch,用于存儲(chǔ)日志
L 代表 Logstash,用于傳輸、處理和存儲(chǔ)日志
K 代表 Kibana,是一種可視化工具(Web 界面)
Datadog
Datadog 是針對(duì)云規(guī)模應(yīng)用程序的監(jiān)視服務(wù),可通過(guò)基于 SaaS 的數(shù)據(jù)分析平臺(tái)來(lái)監(jiān)視服務(wù)器、數(shù)據(jù)庫(kù)、工具和服務(wù)。
Datadog Application Performance Monitoring(APM 或跟蹤)可與你的日志和基礎(chǔ)架構(gòu)監(jiān)視器并用,提供自動(dòng)生成的儀表板(用于監(jiān)視關(guān)鍵指標(biāo),如請(qǐng)求量和延遲)乃至單個(gè)請(qǐng)求的跟蹤細(xì)節(jié),幫助你深入了解應(yīng)用程序的性能表現(xiàn)。
應(yīng)用程序收到請(qǐng)求時(shí),Datadog 可以在整個(gè)分布式系統(tǒng)上查看跟蹤,并向你顯示關(guān)于該請(qǐng)求狀況的詳細(xì)系統(tǒng)數(shù)據(jù)。
New Relic
New Relic 是一家位于加州舊金山的技術(shù)公司,致力于開發(fā)基于云的軟件,以幫助網(wǎng)站和應(yīng)用程序所有者跟蹤服務(wù)性能。
New Relic 開發(fā)的用于應(yīng)用程序性能監(jiān)視(APM)的軟件分析產(chǎn)品,可提供有關(guān) Web 應(yīng)用程序性能以及最終用戶體驗(yàn)滿意度的實(shí)時(shí)和趨勢(shì)數(shù)據(jù)。
Prometheus
Prometheus 是用于事件監(jiān)視和警報(bào)的免費(fèi)軟件應(yīng)用程序。它將實(shí)時(shí)指標(biāo)記錄在一個(gè)時(shí)間序列數(shù)據(jù)庫(kù)中,該數(shù)據(jù)庫(kù)使用 HTTP 拉取模型構(gòu)建,支持靈活查詢和實(shí)時(shí)警報(bào)。
Prometheus 服務(wù)器的工作方式是抓取,也就是調(diào)用監(jiān)視器上配置的各個(gè)節(jié)點(diǎn)的指標(biāo)端點(diǎn)。它定期收集這些指標(biāo)并將其存儲(chǔ)在本地。節(jié)點(diǎn)在 Prometheus 服務(wù)器抓取的端點(diǎn)上公開這些指標(biāo)。
Zipkin
Zipkin 是一個(gè)分布式跟蹤系統(tǒng)。它能收集用來(lái)解決服務(wù)架構(gòu)中延遲問(wèn)題所需的時(shí)序數(shù)據(jù)。其功能包括收集和查找這類數(shù)據(jù)。
如果日志文件中有跟蹤 ID,則你可以直接跳至該跟蹤 ID。否則,你可以基于屬性來(lái)查詢,可用屬性包括服務(wù)、操作名稱、tagsm 和持續(xù)時(shí)間等。系統(tǒng)會(huì)為你總結(jié)一些有趣的數(shù)據(jù),例如在一個(gè)服務(wù)中花費(fèi)的時(shí)間百分比,以及操作是否失敗等。
Azure Monitor
Azure Monitor 提供了一個(gè)全面的解決方案,從你的云和本地環(huán)境中收集、分析數(shù)據(jù)和執(zhí)行遙測(cè)任務(wù),從而最大程度地提高應(yīng)用程序和服務(wù)的可用性和性能。
它可以幫助你了解應(yīng)用程序的性能,并主動(dòng)識(shí)別影響它們的問(wèn)題以及它們所依賴的資源。
你可以使用 Azure Monitor 做很多事情,例如:
- 使用 Application Insights 檢測(cè)和診斷跨應(yīng)用程序和依賴項(xiàng)的問(wèn)題
- 將基礎(chǔ)架構(gòu)問(wèn)題與分別適用于 VM/ 容器的 AzureMonitor 相關(guān)聯(lián)
- 使用 Log Analytics 深度分析監(jiān)視數(shù)據(jù),以進(jìn)行故障排除和深度診斷
- 通過(guò)智能警報(bào)和自動(dòng)化操作支持大規(guī)模運(yùn)營(yíng)
- 使用 Azure 儀表板和工作簿創(chuàng)建可視化內(nèi)容
通訊工具
通訊工具主要是用于多團(tuán)隊(duì)溝通,減少等待時(shí)間,改善協(xié)作能力。目前業(yè)內(nèi)比較常用的通訊工具包括 Slack、Microsoft Teams、Google Hangouts 和 Zoom。
Slack
Slack 是 Slack Technologies 開發(fā)的專用即時(shí)消息平臺(tái)。
Slack 本質(zhì)上是整個(gè)公司的聊天室,旨在取代電子郵件作為你交流和共享信息的主要方法。它的工作空間使你可以按頻道來(lái)組織小組討論,并支持私信功能,可以一站式共享信息和文件等。
Microsoft Teams
Microsoft Teams 是一個(gè)統(tǒng)一的通信和協(xié)作平臺(tái),提供了可靠的工作聊天、視頻會(huì)議、文件存儲(chǔ)和應(yīng)用程序集成特性。
Teams 是基于聊天的協(xié)作工具,可為跨越全球、遠(yuǎn)程和分散的團(tuán)隊(duì)提供在一個(gè)公共空間共同工作和共享信息的能力。它有一些很酷的功能,如文檔協(xié)作、一對(duì)一聊天和團(tuán)隊(duì)聊天等等。
Google Hangouts
Google Hangouts 是谷歌開發(fā)的一種通訊軟件產(chǎn)品。Hangouts 最初是 Google 的功能,后來(lái)在 2013 年成為獨(dú)立產(chǎn)品,當(dāng)時(shí)谷歌也開始將 Google Messenger 和 Google Talk 的功能集成到 Hangouts 中。
Hangouts Chat 是一種與組織中的成員交流的有效方法。你可以向一位或多位同事發(fā)送消息,創(chuàng)建空間來(lái)與多人開始持續(xù)會(huì)話,并使用機(jī)器助手來(lái)幫助你自動(dòng)化操作。Chat 可在你的計(jì)算機(jī)瀏覽器以及適用于 Android 和 iOS 的移動(dòng)應(yīng)用中使用。
Zoom
Zoom Video Communications 是一家遠(yuǎn)程會(huì)議服務(wù)公司,總部位于加州圣何塞。它提供了將視頻會(huì)議、在線會(huì)議、聊天和移動(dòng)協(xié)作結(jié)合在一起的遠(yuǎn)程會(huì)議服務(wù)。
對(duì)于尋求整體業(yè)務(wù)解決方案的團(tuán)隊(duì)來(lái)說(shuō),Skype 是更好的選擇。Zoom 非常適合經(jīng)常進(jìn)行視頻聊天和會(huì)議的團(tuán)隊(duì)。但是,這兩種工具都不是專門為遠(yuǎn)程工作而構(gòu)建的。
知識(shí)共享工具
知識(shí)共享工具主要是為了提高新員工的生產(chǎn)力,減少重復(fù)錯(cuò)誤。目前比較常用的知識(shí)共享工具包括 GitHub Pages、Confluence、Jekyll 和 Google Sites。
GitHub Pages
GitHub Pages 是一種靜態(tài)站點(diǎn)托管服務(wù),可直接從 GitHub 上的存儲(chǔ)庫(kù)中獲取 HTML、CSS 和 JavaScript 文件,還可以在構(gòu)建過(guò)程中運(yùn)行這些文件并發(fā)布網(wǎng)站。你可以在 GitHub Pages 示例集合中查看 GitHub Pages 網(wǎng)站的示例。
Confluence
Confluence 是 Atlassian 開發(fā)和發(fā)行的協(xié)作軟件程序。Atlassian 用 Java 編程語(yǔ)言編寫了 Confluence,并于 2004 年首次發(fā)布。
Confluence 是一個(gè)協(xié)作 Wiki 工具,用于幫助團(tuán)隊(duì)有效地協(xié)作和共享知識(shí)。借助 Confluence,你可以在 Team Calendars 附加組件的幫助下捕獲項(xiàng)目需求、向特定用戶分配任務(wù),還能一次管理多個(gè)日歷。
Jekyll
Jekyll 是一個(gè)簡(jiǎn)單的,博客型的靜態(tài)網(wǎng)站生成器,可用于個(gè)人、項(xiàng)目或組織的網(wǎng)站生成。它是由 GitHub 的聯(lián)合創(chuàng)始人 Tom Preston-Werner 用 Ruby 編寫的,根據(jù)開源 MIT 許可發(fā)行。
Jekyll 是一個(gè)解析引擎,打包為一個(gè) Ruby gem,用來(lái)從動(dòng)態(tài)組件(例如模板、部件、液態(tài)代碼、markdown 等)構(gòu)建靜態(tài)網(wǎng)站。Jekyll 被稱為“簡(jiǎn)單、博客型的靜態(tài)站點(diǎn)生成器”。
Google Sites
Google Sites 是谷歌提供的結(jié)構(gòu)化 Wiki 和網(wǎng)頁(yè)創(chuàng)建工具。Google Sites 宣稱的目標(biāo)是讓任何人都能夠創(chuàng)建讓不同編輯者協(xié)作的簡(jiǎn)單網(wǎng)站。
你們可以一起用它為團(tuán)隊(duì)、項(xiàng)目或活動(dòng)創(chuàng)建引人入勝的高質(zhì)量站點(diǎn)。這些網(wǎng)站在各種設(shè)備的屏幕上看起來(lái)都很漂亮——所有這些工作都無(wú)需學(xué)習(xí)設(shè)計(jì)或編程知識(shí)。
小結(jié)
本文介紹整個(gè) DevOps 工具鏈——包括規(guī)劃工具、問(wèn)題跟蹤工具、源代碼管理、構(gòu)建和測(cè)試代碼、持續(xù)集成和部署源代碼、管理配置、使用云平臺(tái)、監(jiān)控和記錄等工具,后面還有溝通和知識(shí)共享這些軟工具的介紹。
DevOps 是一種令人興奮的工作方式。這不是唯一可行的方法,甚至可能不是最好的方法,將來(lái)可能會(huì)出現(xiàn)更好的選擇。但就目前而言,這是一種團(tuán)隊(duì)集體合作,且是通過(guò)可持續(xù)的方式運(yùn)送重要價(jià)值的好方法,它能夠幫助團(tuán)隊(duì)成員專注于客戶,而不是 IT 效率。