1 關(guān)于 DevOps 及其工具
2 計(jì)劃工具
3 問(wèn)題跟蹤
4 源碼控制
5 構(gòu)建工具
6 測(cè)試工具
7 持續(xù)集成(CI)和持續(xù)部署(CD)
8 配置管理工具
9 云平臺(tái)
10監(jiān)控和日志工具
11 通信工具
12 知識(shí)分享工具
13 總結(jié)
本篇文章中將介紹一些能夠幫助你實(shí)現(xiàn) DevOps 目標(biāo)的核心技術(shù)類別和具體技術(shù)。
1 關(guān)于 DevOps 及其工具
關(guān)于 DevOps 及其工具,需要記住:
持續(xù)改進(jìn)是目標(biāo);
DevOps 不是花錢買來(lái)的;
分階段采用工具。
基于 Spring Boot + MyBatis Plus + Vue & Element 實(shí)現(xiàn)的后臺(tái)管理系統(tǒng) + 用戶小程序,支持 RBAC 動(dòng)態(tài)權(quán)限、多租戶、數(shù)據(jù)權(quán)限、工作流、三方登錄、支付、短信、商城等功能
項(xiàng)目地址:https://github.com/YunaiV/ruoyi-vue-pro
視頻教程:https://doc.iocoder.cn/video/
2 計(jì)劃工具
為什么計(jì)劃工具對(duì)于 DevOps 來(lái)說(shuō)很重要?
分享目標(biāo);
透明性;
賦能。
計(jì)劃工具示例
GitLab
GitLab 是一個(gè)基于 Web 的 DevOps 生命周期工具。它提供了一個(gè) Git 倉(cāng)庫(kù)管理器,具備 wiki、問(wèn)題跟蹤和 CI/CD 管道功能,采用的是 GitLab 公司的開源許可。
Tasktop
Tasktop 允許將所有這些工具添加到敏捷、ALM、PPM 和 ITSM 中,實(shí)現(xiàn)了對(duì)整個(gè)生命周期前所未有的可見性。
CollabNet VersionOne
VersionOne 支持 Scrum、看板、XP、SAFe 和混合開發(fā)方法,并使跨團(tuán)隊(duì)、程序、軟件組合和企業(yè)的計(jì)劃、跟蹤和報(bào)告變得更容易。
Pivotal Tracker
敏捷項(xiàng)目管理工具,是開發(fā)人員圍繞高優(yōu)先級(jí)共享 backlog 進(jìn)行實(shí)時(shí)協(xié)作的首選工具。
Trello
Trello 是一個(gè)基于 Web 的看板風(fēng)格的清單應(yīng)用程序,是 Atlassian 的子公司。
很多團(tuán)隊(duì)用它來(lái)計(jì)劃各自的工作 sprint。
Azure Boards
使用敏捷工具,包括 Scrum、看板和其他敏捷方法儀表板來(lái)更好地跟蹤軟件項(xiàng)目并進(jìn)行計(jì)劃。
這些都是可視化工作、分享計(jì)劃、跟蹤進(jìn)展、確保朝著目標(biāo)前進(jìn)的好方法。
基于 Spring Cloud Alibaba + Gateway + Nacos + RocketMQ + Vue & Element 實(shí)現(xiàn)的后臺(tái)管理系統(tǒng) + 用戶小程序,支持 RBAC 動(dòng)態(tài)權(quán)限、多租戶、數(shù)據(jù)權(quán)限、工作流、三方登錄、支付、短信、商城等功能
項(xiàng)目地址:https://github.com/YunaiV/yudao-cloud
視頻教程:https://doc.iocoder.cn/video/
3 問(wèn)題跟蹤
為什么問(wèn)題跟蹤對(duì) DevOps 來(lái)說(shuō)很重要?
用戶響應(yīng);
減少知識(shí)損耗;
反饋閉環(huán)。
問(wèn)題跟蹤工具示例
Atlassian Jira
Jira 是由 Atlassian 公司開發(fā)的問(wèn)題跟蹤產(chǎn)品,提供了 bug 跟蹤和敏捷項(xiàng)目管理功能。
JetBrains YouTrack
YouTrack 是 JetBrains 公司開發(fā)的一款基于瀏覽器的 bug 跟蹤、問(wèn)題跟蹤系統(tǒng)和項(xiàng)目管理軟件。它支持基于查詢的問(wèn)題搜索——包括自動(dòng)完成、批量處理問(wèn)題、定制問(wèn)題屬性集以及創(chuàng)建自定義工作流。
Zendesk
Zendesk 讓客戶問(wèn)題跟蹤變得更簡(jiǎn)單,包括優(yōu)步和 Airbnb 在內(nèi)的很多公司都使用 Zendesk 作為他們的問(wèn)題跟蹤軟件。
4 源碼控制
為什么源碼控制對(duì) DevOps 來(lái)說(shuō)很重要?
資產(chǎn)管控;
減少傳輸損耗;
促進(jìn)團(tuán)隊(duì)合作。
SCM 工具示例
Git
Git 是一個(gè)分布式版本控制系統(tǒng),用于在軟件開發(fā)期間跟蹤源代碼的變更。它是為協(xié)調(diào)程序員之間的工作而設(shè)計(jì)的,但它也可用于跟蹤文件的變更。它專注于速度、數(shù)據(jù)完整性和對(duì)分布式、非線性工作流的支持。
GitHub
GitHub 提供了 Git 分布式版本控制和源代碼管理功能,以及自有的一些特性。
GitLab
GitLab 的版本控制通過(guò)世界級(jí)的源代碼管理功能幫助你的開發(fā)團(tuán)隊(duì)共享、協(xié)作和最大化他們的生產(chǎn)力。
Bitbucket
Bitbucket 是 Atlassian 公司為使用 Mercurial 或 Git 版本控制系統(tǒng)的源代碼和開發(fā)項(xiàng)目提供的基于 Web 的版本控制代碼庫(kù)托管服務(wù)。
Subversion
Apache Subversion 是一種軟件版本控制系統(tǒng),采用了 Apache 開發(fā)源碼許可。軟件開發(fā)人員使用 Subversion 來(lái)維護(hù)文件的當(dāng)前和歷史版本,例如源代碼、Web 頁(yè)面和文檔。
5 構(gòu)建工具
為什么構(gòu)建工具對(duì) DevOps 來(lái)說(shuō)很重要?
一致的打包效果;
自動(dòng)化錯(cuò)誤探測(cè);
盡早發(fā)現(xiàn)質(zhì)量問(wèn)題。
構(gòu)建工具示例
Maven/Gradle
Maven 是一個(gè)主要用于 Java 項(xiàng)目的自動(dòng)化構(gòu)建工具。Maven 還可以用來(lái)構(gòu)建和管理用 C#、Ruby、Scala 和其他語(yǔ)言開發(fā)的項(xiàng)目。
Gradle 是一個(gè)開源的自動(dòng)化構(gòu)建系統(tǒng),基于 Apache Ant 和 Apache Maven 的概念,引入了一種基于 groovy 的領(lǐng)域特定語(yǔ)言。
MSBuild
Microsoft Build Engine,更廣為人知的名字是 MSBuild,是一個(gè)開源免費(fèi)的托管代碼和原生 C++ 代碼構(gòu)建工具集,是.Net Framework 的一部分。Visual Studio 就使用 MSBuild 作為構(gòu)建工具。
Rake
Rake 是一個(gè)軟件任務(wù)管理和自動(dòng)化構(gòu)建工具。用戶可以指定任務(wù)和描述依賴關(guān)系,還可以對(duì)同一個(gè)命名空間中的組任務(wù)指定和描述依賴關(guān)系。
JFrog Artifactory
JFrog Artifactory 是一種用于保存構(gòu)建過(guò)程所產(chǎn)生的用于發(fā)布和部署的二進(jìn)制文件的工具。Artifactory 提供了多種包格式支持,如 Maven、Debian、npm、Helm、Ruby、Python 和 Docker。
JFrog 提供了高可用性、復(fù)制、災(zāi)難恢復(fù)、可伸縮性,并可集成很多自有和云存儲(chǔ)產(chǎn)品。
Sonatype Nexus
Sonatype Nexus 是一個(gè)存儲(chǔ)庫(kù)管理器??捎糜诖?、收集和管理依賴項(xiàng),這樣就不用經(jīng)常為一堆的 jar 文件感到煩惱。它讓軟件的發(fā)行變得更容易。
在內(nèi)部,你可以配置構(gòu)建工具,把工件發(fā)布到 Nexus,然后其他開發(fā)人員就可以使用它們了。
NuGet
NuGet 是.Net 包管理器。NuGet 客戶端工具提供了生成和使用包的能力。
NuGet Gallery 是程序包作者和使用者的中心包倉(cāng)庫(kù)。
6 測(cè)試工具
為什么測(cè)試工具對(duì) DevOps 來(lái)說(shuō)很重要?
將注意力放在質(zhì)量上;
提升產(chǎn)品信心。
測(cè)試工具示例
JUnit
JUnit 是一個(gè)用于 Java 的單元測(cè)試框架。JUnit 在測(cè)試驅(qū)動(dòng)開發(fā)當(dāng)中扮演著非常重要的角色,它是單元測(cè)試框架家族 xUnit(源于 SUnit) 的一員。
xUnit.net
xUnit.net 是一個(gè)用于.Net Framework 的開源單元測(cè)試工具,由 NUnit 的原作者開發(fā)。
Selenium
Selenium 是用于測(cè)試 Web 應(yīng)用程序的框架。Selenium 提供了一個(gè)回放工具,用于編寫功能測(cè)試,省去了學(xué)習(xí)腳本語(yǔ)言的麻煩。
Jasmine
Jasmine 是一個(gè)開源的 JavaScript 測(cè)試框架。它的目標(biāo)是可以在任何支持 JavaScript 的平臺(tái)上運(yùn)行,不干擾應(yīng)用程序或 IDE,并具有易于閱讀的語(yǔ)法。它深受其他單元測(cè)試框架的影響,比如 Screw.Unit、JSSpec、JSpec 和 RSpec。
Cucumber
Cucumber 是一個(gè)支持行為驅(qū)動(dòng)開發(fā)的工具。Cucumber BDD 方法的核心是一個(gè)叫作 Gherkin 的語(yǔ)言解析器,可以用用戶能夠理解的邏輯語(yǔ)言來(lái)指定預(yù)期的軟件行為。
7 持續(xù)集成(CI)和持續(xù)部署(CD)
為什么持續(xù)集成和部署對(duì) DevOps 來(lái)說(shuō)很重要?
快速反饋;
減少缺陷和等待時(shí)間。
CI 工具示例
Jenkins
Jenkins 是一個(gè)免費(fèi)開源的自動(dòng)化服務(wù)器。Jenkins 幫助自動(dòng)化軟件開發(fā)過(guò)程中的非人為操作部分。它是一個(gè)基于服務(wù)器的系統(tǒng),運(yùn)行在 Servlet 容器中,比如 Apache Tomcat。
CircleCI
CircleCI 是全球最大的共享 CI/CD 平臺(tái),是代碼從想法變成可交付產(chǎn)品的中心樞紐。
作為最常用的 DevOps 工具之一,CircleCI 每天要處理超過(guò) 100 萬(wàn)個(gè)構(gòu)建任務(wù),它可以訪問(wèn)到工程團(tuán)隊(duì)協(xié)作以及代碼運(yùn)行的數(shù)據(jù)。Spotify、Coinbase、Stitch Fix 和 BuzzFeed 等公司都使用 CircleCI 來(lái)提高工程團(tuán)隊(duì)的工作效率,發(fā)布更好的產(chǎn)品。
Travis CI
Travis CI 是一個(gè)托管的 CI 服務(wù),用于構(gòu)建和測(cè)試托管在 GitHub 上的軟件項(xiàng)目。Travis CI 為私人項(xiàng)目提供各種付費(fèi)計(jì)劃和免費(fèi)開源計(jì)劃。TravisPro 部署在客戶自己的硬件上,提供專有版本的定制部署。
Concourse
Concourse 是一個(gè)用 Go 開發(fā)的自動(dòng)化系統(tǒng),最常用于 CI/CD,用于伸縮任何類型 (從簡(jiǎn)單到復(fù)雜的) 的自動(dòng)化管道。
AWS CodePipeline
AWS CodePipeline 是一個(gè)全托管的 CD 服務(wù),可以幫助你自動(dòng)化發(fā)布管道,以便快速可靠地更新應(yīng)用程序和基礎(chǔ)設(shè)施。
每當(dāng)發(fā)生代碼變更時(shí),CodePipeline 會(huì)根據(jù)你定義的發(fā)布模型自動(dòng)化發(fā)布過(guò)程的構(gòu)建、測(cè)試和部署階段,讓你能夠快速、可靠地交付特性和更新。
你可以輕松地將 AWS 代碼管道與第三方服務(wù) (如 GitHub) 或自定義插件集成。在使用 AWS CodePipeline 時(shí),你只需要為所使用的內(nèi)容付費(fèi),沒(méi)有預(yù)付費(fèi)用。
Azure Pipelines
為 Linux、macOS 和 Windows 建立云托管管道。構(gòu)建 Web、桌面和移動(dòng)應(yīng)用程序,并將其部署到云端或本地。
通過(guò)管道自動(dòng)化構(gòu)建和部署,減少在具體細(xì)節(jié)上花費(fèi)的時(shí)間,把更多的時(shí)間花在創(chuàng)造性的事情上。
CD 工具
為什么 CD 工具對(duì)于 DevOps 來(lái)說(shuō)很重要?
減少預(yù)發(fā)布庫(kù)存;
自動(dòng)化復(fù)雜的管道;
統(tǒng)一團(tuán)隊(duì)為客戶創(chuàng)造價(jià)值的目標(biāo)。
CD 工具示例
Spinnaker
Spinnaker 是一個(gè)免費(fèi)開源的 CD 軟件平臺(tái),最初由 Netflix 開發(fā),后被谷歌收購(gòu),并進(jìn)行了擴(kuò)展。
Spinnaker 是一個(gè)多云 CD 平臺(tái),用于快速發(fā)布軟件變更。它將強(qiáng)大而靈活的管道管理系統(tǒng)與主要云提供商的集成結(jié)合在了一起。
Octopus Deploy
Octopus Deploy 是一個(gè)自動(dòng)化的部署和發(fā)布管理工具,全球領(lǐng)先的 CD 團(tuán)隊(duì)都在使用它。
Octopus 是一個(gè)工具集,可以極大簡(jiǎn)化 DevOps 過(guò)程,通過(guò)云或虛擬機(jī)對(duì)大量微服務(wù)或應(yīng)用程序進(jìn)行持續(xù)測(cè)試和部署。
AWS CodeDeploy
AWS CodeDeploy 是一種全托管的部署服務(wù),可以將軟件部署自動(dòng)化到各種計(jì)算服務(wù),如 Amazon EC2、AWS Fargate、AWS Lambda 和本地服務(wù)器。
你可以使用 AWS CodeDeploy 來(lái)自動(dòng)化軟件部署,減少容易出錯(cuò)的手動(dòng)操作。
8 配置管理工具
配置管理工具為什么對(duì)于 DevOps 來(lái)說(shuō)很重要?
保持一致性;
基礎(chǔ)設(shè)施即代碼。
配置管理工具示例
Terraform
Terraform 是 HashiCorp 公司開發(fā)的開源基礎(chǔ)結(jié)構(gòu)即代碼 (IaC) 軟件工具。用戶可以使用一種高級(jí)配置語(yǔ)言 (叫作 Hashicorp 配置語(yǔ)言或 JSON) 來(lái)定義和提供數(shù)據(jù)中心基礎(chǔ)設(shè)施。
BOSH
BOSH 是一個(gè)將小型和大型云軟件的發(fā)布工程、部署和生命周期管理結(jié)合起來(lái)的項(xiàng)目。BOSH 可以基于數(shù)百個(gè) VM 配置和部署軟件。它還可以執(zhí)行監(jiān)空、故障恢復(fù)和軟件更新,沒(méi)有停機(jī)時(shí)間或者停機(jī)時(shí)間很短。
雖然開發(fā) BOSH 是為了部署云計(jì)算,但它也可以用于部署幾乎任何其他軟件 (例如 Hadoop)。BOSH 特別適合大型分布式系統(tǒng)。
此外,BOSH 還支持多種基礎(chǔ)設(shè)施即服務(wù) (IaaS) 提供商,如 VMware vSphere、谷歌云平臺(tái)、Amazon Web Services EC2、Microsoft Azure、OpenStack 和阿里巴巴云。BOSH 提供了一個(gè)云供應(yīng)商接口 (CPI),用戶可用它擴(kuò)展 BOSH,以便支持其他 IaaS 提供商,如 Apache CloudStack 和 VirtualBox。
Chef
Chef 是一個(gè)配置管理工具,用于處理物理服務(wù)器、虛擬機(jī)和云端的機(jī)器配置。很多公司用 Chef 控制和管理他們的基礎(chǔ)設(shè)施,如 Facebook、Etsy、Cheezburger 和 Indiegogo。
Chef 公司是持續(xù)自動(dòng)化軟件的領(lǐng)導(dǎo)者、應(yīng)用自動(dòng)化的革新者以及 DevOps 運(yùn)動(dòng)的發(fā)起者之一。Chef 與全球 1000 多家最具創(chuàng)新性的公司合作,提供快速交付軟件的實(shí)踐和平臺(tái),以實(shí)現(xiàn)他們的數(shù)字化轉(zhuǎn)型愿景。
Ansible
Ansible 是一款開源的軟件配置、配置管理和應(yīng)用程序部署工具。它運(yùn)行在 Unix 家族系統(tǒng)上,可以配置 Unix 家族系統(tǒng)和 Windows。它可以使用自己的聲明性語(yǔ)言來(lái)描述系統(tǒng)配置。
Puppet
Puppet 提供了定義系統(tǒng)需要哪些軟件和配置的能力,然后在初始設(shè)置之后維護(hù)指定的狀態(tài)。
Puppet 使用與 Ruby 類似的聲明性領(lǐng)域特定語(yǔ)言 (DSL) 為特定環(huán)境或基礎(chǔ)設(shè)施定義配置參數(shù)。Puppet 通過(guò)使用一個(gè)叫作 Facter 的實(shí)用程序來(lái)發(fā)現(xiàn)系統(tǒng)信息,F(xiàn)acter 是在安裝 Puppet 軟件包時(shí)一起安裝的。
Puppet 主節(jié)點(diǎn)通過(guò)清單來(lái)管理它所控制的所有節(jié)點(diǎn)的重要配置信息。
被主節(jié)點(diǎn)控制的其他節(jié)點(diǎn)安裝了 Puppet 并運(yùn)行 Puppet 代理 (一個(gè)守護(hù)進(jìn)程)。代理節(jié)點(diǎn)收集的有關(guān)節(jié)點(diǎn)的配置信息將發(fā)送給主節(jié)點(diǎn)。主節(jié)點(diǎn)根據(jù)應(yīng)該如何配置來(lái)編譯目錄,其他節(jié)點(diǎn)使用這些信息來(lái)更新自己的配置。
Puppet 使用了拉取模式,代理節(jié)點(diǎn)定時(shí)輪詢主機(jī),查詢特定于站點(diǎn)和特定于節(jié)點(diǎn)的配置。在這個(gè)基礎(chǔ)設(shè)施中,Puppet 代理應(yīng)用程序通常作為后臺(tái)服務(wù)運(yùn)行在托管節(jié)點(diǎn)上。
谷歌云部署管理器
谷歌云部署管理器是一種基礎(chǔ)設(shè)施管理服務(wù),讓谷歌云平臺(tái)資源的創(chuàng)建、部署和管理變得更簡(jiǎn)單。
9 云平臺(tái)
為什么云平臺(tái)對(duì) DevOps 來(lái)說(shuō)很重要?
友好的自動(dòng)化;
具有可觀察性的運(yùn)行時(shí)。
云平臺(tái)示例
Amazon Web Service
Amazon Web Service(AWS) 是一個(gè)安全的云服務(wù)平臺(tái),提供計(jì)算能力、數(shù)據(jù)庫(kù)存儲(chǔ)、內(nèi)容交付和其他幫助企業(yè)擴(kuò)大規(guī)模和增長(zhǎng)的功能。
簡(jiǎn)而言之,AWS 可以做以下這些事情:
在云端運(yùn)行 Web 和應(yīng)用服務(wù)器,托管動(dòng)態(tài)網(wǎng)站;
將所有文件安全地存儲(chǔ)在云端,這樣你就可以從任何地方訪問(wèn)它們;
使用托管數(shù)據(jù)庫(kù),如 MySQL、PostgreSQL、Oracle 或 SQL Server 來(lái)存儲(chǔ)信息;
使用內(nèi)容分發(fā)網(wǎng)絡(luò) (CDN) 在世界各地快速交付靜態(tài)和動(dòng)態(tài)文件;
批量發(fā)送電子郵件給你的客戶。
微軟 Azure
微軟 Azure 是微軟創(chuàng)建的云計(jì)算服務(wù),通過(guò)微軟數(shù)據(jù)中心構(gòu)建、測(cè)試、部署和管理應(yīng)用程序和服務(wù)。
微軟 Azure,原來(lái)叫作 Windows Azure,是微軟的公共云計(jì)算平臺(tái)。它提供一系列云服務(wù),包括計(jì)算、分析、存儲(chǔ)和網(wǎng)絡(luò)。用戶可以選擇這些服務(wù)來(lái)開發(fā)和擴(kuò)展新的應(yīng)用程序,或者在公共云中運(yùn)行現(xiàn)有的應(yīng)用程序。
谷歌云平臺(tái)
谷歌云平臺(tái)由谷歌提供,是一套云計(jì)算服務(wù),運(yùn)行在谷歌用來(lái)運(yùn)行其終端用戶產(chǎn)品 (如谷歌搜索、Gmail 和 YouTube) 相同的基礎(chǔ)設(shè)施上。
谷歌云平臺(tái)提供在 web 上部署應(yīng)用程序所需的計(jì)算資源,專注于為個(gè)人和企業(yè)提供一個(gè)構(gòu)建和運(yùn)行軟件的地方,并通過(guò) Web 連接軟件用戶。
你使用谷歌提供的云計(jì)算服務(wù)來(lái)迎接業(yè)務(wù)方面的挑戰(zhàn),包括數(shù)據(jù)管理、混合和多云、人工智能和機(jī)器學(xué)習(xí)。
Pivotal Cloud Foundry
Pivotal Cloud Foundry (PCF) 是一個(gè)開源的多云應(yīng)用平臺(tái)即服務(wù) (PaaS),由 501 組織 Cloud Foundry Foundation 負(fù)責(zé)管理。該軟件最初由 VMware 開發(fā),后來(lái)轉(zhuǎn)到 Pivotal 軟件公司。2019 年底,隨著 VMware 收購(gòu) Pivotal,又被帶回到 VMware。
PCF 是一個(gè)用于部署、管理和持續(xù)交付應(yīng)用程序、容器和功能的多云平臺(tái)。PCF 允許開發(fā)人員快速部署和交付軟件,而不需要管理底層基礎(chǔ)設(shè)施。
Heroku
Heroku 是一個(gè)支持多種編程語(yǔ)言的云 PaaS。作為首批云平臺(tái)之一,Heroku 從 2007 年 6 月就開始開發(fā),當(dāng)時(shí)它只支持 Ruby 編程語(yǔ)言,但現(xiàn)在支持 Java Node.js、Scala、Clojure、Python、PHP 和 Go。
Heroku 是一個(gè)基于容器的云 PaaS。開發(fā)人員使用 Heroku 來(lái)部署、管理和擴(kuò)展現(xiàn)代應(yīng)用程序。這個(gè)平臺(tái)優(yōu)雅、靈活、易于使用,為開發(fā)人員提供了發(fā)布應(yīng)用程序最簡(jiǎn)單的途徑。
中國(guó)云廠商(編者補(bǔ)充)
阿里云、騰訊云、華為云、京東云等各類型廠商都是國(guó)內(nèi)用戶的可選項(xiàng)。
容器調(diào)度器
容器調(diào)度程序的主要任務(wù)是在最合適的主機(jī)上啟動(dòng)容器并將它們連接在一起。它必須通過(guò)自動(dòng)故障轉(zhuǎn)移來(lái)處理故障,并且當(dāng)單個(gè)實(shí)例有太多數(shù)據(jù)需要處理 / 計(jì)算時(shí),它需要能夠擴(kuò)展容器。
三個(gè)最流行的容器調(diào)度器是 Docker Swarm、Apache Mesos 和 Kubernetes。
Docker Swarm
Docker Swarm 是 Docker 開發(fā)的一種容器調(diào)度程序。這個(gè)集群解決方案提供了一些優(yōu)勢(shì),比如使用標(biāo)準(zhǔn) Docker API 等。
Apache Mesos
Mesos 的目的是構(gòu)建一個(gè)可擴(kuò)展、高效的系統(tǒng),可以支持大量的框架。這也是一個(gè)主要的問(wèn)題:一些框架,如 Hadoop 和 MPI,是獨(dú)立開發(fā)的——因此不可能在框架之間進(jìn)行細(xì)粒度的共享。
Mesos 的目的是添加一個(gè)薄薄的資源共享層,為框架提供訪問(wèn)集群資源的公共接口。Mesos 將調(diào)度控制委托給框架,因?yàn)楹芏嗫蚣芤呀?jīng)實(shí)現(xiàn)了復(fù)雜的調(diào)度。
根據(jù)集群上運(yùn)行的作業(yè)類型,框架可以分為四種,其中一些框架提供了原生 Docker 支持,比如 Marathon。在 Mesos 0.20.0 中添加了對(duì) Docker 容器的支持。
Kubernetes
Kubernetes 是一個(gè)用于編配 Docker 容器的系統(tǒng),它通過(guò)標(biāo)簽和 Pod 的概念將容器分為邏輯單元。Pod 是 Kubernetes 和其他兩種解決方案之間的主要區(qū)別——它們是一組容器集合,形成一起部署和調(diào)度的服務(wù)。與基于關(guān)聯(lián)性的容器 (如 Swarm 和 Mesos) 調(diào)度相比,這種方法簡(jiǎn)化了集群的管理。
Kubernetes 調(diào)度器的任務(wù)是監(jiān)控帶有空 PodSpec 的 Pod。NodeName 指定將容器安排在集群中的某個(gè)位置。
這是與 Swarm 和 Mesos 的不同之處,Kubernetes 允許開發(fā)者在運(yùn)行 Pod 時(shí)通過(guò)定義 PodSpec.NodeName 來(lái)繞過(guò)調(diào)度器。
調(diào)度器使用謂詞和優(yōu)先級(jí)來(lái)定義 Pod 應(yīng)該運(yùn)行在哪些節(jié)點(diǎn)上。我們可以使用新的調(diào)度器策略配置覆蓋這些默認(rèn)值。
我們可以通過(guò)命令行標(biāo)志 policy-config-file 指定一個(gè) JSON 文件,在啟動(dòng) Kubernetes 時(shí)將會(huì)使用該文件描述的謂語(yǔ)和優(yōu)先級(jí),調(diào)度器將使用這些定義好的策略。
10監(jiān)控和日志工具
為什么監(jiān)控和日志工具對(duì)于 DevOps 來(lái)說(shuō)很重要?
快速恢復(fù);
響應(yīng)速度;
透明性;
發(fā)生事故時(shí)減少人工干預(yù)。
監(jiān)控和日志工具示例
ELK
ELK 是三個(gè)開源產(chǎn)品的集合——Elasticsearch、Logstash 和 Kibana。它們都是由 Elastic 公司開發(fā)、管理和維護(hù)的。
E 代表 ElasticSearch——用于存儲(chǔ)日志;
L 代表 Logstash——用于傳輸、處理和存儲(chǔ)日志;
K 代表 Kibana——一個(gè)可視化工具 (Web 界面)。
Datadog
Datadog 是一個(gè)針對(duì)云規(guī)模應(yīng)用程序的監(jiān)控服務(wù),通過(guò)基于 SaaS 的數(shù)據(jù)分析平臺(tái)來(lái)監(jiān)控服務(wù)器、數(shù)據(jù)庫(kù)、工具和服務(wù)。
Datadog 應(yīng)用程序性能監(jiān)控 (APM 或跟蹤) 幫助用戶深入了解應(yīng)用程序性能——從自動(dòng)生成的儀表盤(監(jiān)控關(guān)鍵指標(biāo),如請(qǐng)求量和延遲)到單個(gè)請(qǐng)求的詳細(xì)跟蹤信息——與日志和基礎(chǔ)設(shè)施監(jiān)控信息并列展示。
當(dāng)向應(yīng)用程序發(fā)出請(qǐng)求時(shí),Datadog 可以看到分布式系統(tǒng)的跟蹤,并向用戶顯示關(guān)于這個(gè)請(qǐng)求的系統(tǒng)數(shù)據(jù)。
New Relic
New Relic 是一家總部位于加州舊金山的科技公司,它開發(fā)基于云的軟件,幫助網(wǎng)站和應(yīng)用程序所有者跟蹤服務(wù)性能。
New Relic 的應(yīng)用程序性能監(jiān)控軟件分析產(chǎn)品 (APM) 提供有關(guān) Web 應(yīng)用程序性能和最終用戶體驗(yàn)滿意度的實(shí)時(shí)和趨勢(shì)數(shù)據(jù)。
Prometheus
Prometheus 是一款用于事件監(jiān)控和警報(bào)的免費(fèi)應(yīng)用程序。它在時(shí)間序列數(shù)據(jù)庫(kù)中記錄實(shí)時(shí)指標(biāo),基于 HTTP 拉取模型,支持靈活的查詢和實(shí)時(shí)警報(bào)。
Prometheus 服務(wù)器的核心原理是抓取——也就是說(shuō),調(diào)用各個(gè)節(jié)點(diǎn)暴露出來(lái)的指標(biāo)端點(diǎn)。它定期收集這些指標(biāo)并將它們存儲(chǔ)在本地。
Zipkin
Zipkin 是一個(gè)分布式跟蹤系統(tǒng)。它用于收集診斷延遲問(wèn)題所需的時(shí)間數(shù)據(jù),提供了數(shù)據(jù)的收集和查找功能。
如果日志文件中有跟蹤 ID,則可以直接跳指定位置。否則的話,你可以基于服務(wù)、操作名稱、tagsm 和持續(xù)時(shí)間等屬性進(jìn)行查詢。它將為你匯總出一些有趣的數(shù)據(jù),例如花費(fèi)在服務(wù)上的時(shí)間百分比以及操作是否失敗。
Azure Monitor
Azure Monitor 提供了一個(gè)全面的解決方案,用來(lái)收集、分析和執(zhí)行來(lái)自云端和本地環(huán)境的遙測(cè)數(shù)據(jù),從而最大化應(yīng)用程序和服務(wù)的可用性和性能。
它可以幫助你了解應(yīng)用程序的執(zhí)行情況,并主動(dòng)識(shí)別影響它們的問(wèn)題以及它們所依賴的資源。
幾個(gè) Azure Monitor 的使用場(chǎng)景:
使用 Application Insights 檢測(cè)和診斷應(yīng)用程序和依賴項(xiàng)之間的問(wèn)題;
將基礎(chǔ)設(shè)施問(wèn)題與用于 VM 的 Azure Monitor 和用于容器的 Azure Monitor 關(guān)聯(lián)起來(lái);
使用日志分析深入監(jiān)控?cái)?shù)據(jù),進(jìn)行故障排除和深入診斷;
通過(guò)智能警報(bào)和自動(dòng)運(yùn)維支持大規(guī)模操作;
使用 Azure 儀表板和工作簿進(jìn)行可視化。
11 通信工具
為什么通信工具對(duì)于 DevOps 來(lái)說(shuō)很重要?
連接團(tuán)隊(duì);
減少等待時(shí)間;
改進(jìn)團(tuán)隊(duì)協(xié)作。
通信工具示例
Slack
Slack 是由 Slack 公司開發(fā)的即時(shí)通訊平臺(tái)。
Slack 本質(zhì)上是整個(gè)公司的一個(gè)聊天室,旨在取代電子郵件成為溝通和分享的主要方式。你可以用頻道進(jìn)行分組討論,也可以通過(guò)私有消息進(jìn)行信息、文件共享,等等。
微軟 Teams
微軟 Teams 是一個(gè)統(tǒng)一的通信和協(xié)作平臺(tái),結(jié)合了工作討論、視頻會(huì)議、文件存儲(chǔ)和應(yīng)用程序集成。
Teams 是一種基于聊天的協(xié)作工具,它為全球、遠(yuǎn)程和分布式的團(tuán)隊(duì)提供協(xié)作能力,并通過(guò)公共空間共享信息。你可以使用它提供的一些很酷的功能,比如文檔協(xié)作、一對(duì)一聊天、團(tuán)隊(duì)聊天,等等。
谷歌 Hangouts
谷歌 Hangouts 是谷歌開發(fā)的一款通訊軟件產(chǎn)品。Hangouts 最初是 Google+ 的一個(gè)功能,在 2013 年谷歌開始將 Google+ Messenger 和谷歌 Talk 的功能整合到 Hangouts 中,成為了一個(gè)獨(dú)立的產(chǎn)品。
Hangouts Chat 是進(jìn)行組織內(nèi)交流的一種有效方式。你可以與一名或多名同事發(fā)送信息,可以創(chuàng)建聊天室進(jìn)行多人討論,并使用機(jī)器人來(lái)進(jìn)行工作自動(dòng)化。你可以在電腦瀏覽器和 Android 或 iOS 手機(jī) App 中使用 Hangouts Chat。
Zoom
Zoom Video Communications 是一家遠(yuǎn)程會(huì)議服務(wù)公司,總部設(shè)在加利福尼亞州的圣何塞。它提供了一種遠(yuǎn)程會(huì)議服務(wù),結(jié)合了視頻會(huì)議、在線會(huì)議、聊天和移動(dòng)協(xié)作。
Skype 更適合尋找整體商業(yè)解決方案的團(tuán)隊(duì),而 Zoom 更適合頻繁進(jìn)行視頻聊天和會(huì)議的團(tuán)隊(duì)。不過(guò),這兩種工具都不是專門為遠(yuǎn)程工作而構(gòu)建的。
中國(guó)版本推薦
騰訊會(huì)議、釘釘、飛書、WeLink 等。
12 知識(shí)分享工具
知識(shí)分享工具為什么對(duì)于 DevOps 來(lái)說(shuō)很重要?
減少知識(shí)浪費(fèi);
提高新員工的效率;
減少犯同樣的錯(cuò)誤。
知識(shí)分享工具示例
GitHub Pages
GitHub Pages 是一個(gè)靜態(tài)站點(diǎn)托管服務(wù),直接從 GitHub 上的存儲(chǔ)庫(kù)獲取 HTML、CSS 和 JavaScript 文件,可在構(gòu)建過(guò)程中運(yùn)行這些文件,然后發(fā)布網(wǎng)站。你可以在 GitHub Pages 示例集合中看到 GitHub Pages 站點(diǎn)的示例。
Confluence
Confluence 是一個(gè)由 Atlassian 開發(fā)并發(fā)布的協(xié)作程序。Atlassian 用 Java 編程語(yǔ)言開發(fā)了 Confluence,并于 2004 年首次發(fā)布。
Confluence 是一個(gè) Wiki 協(xié)作工具,用于幫助團(tuán)隊(duì)有效地協(xié)作和共享知識(shí)。你可以用 Confluence 捕獲項(xiàng)目需求、將任務(wù)分配給特定用戶,并用 Team Calendar 插件一次性管理多個(gè)日歷。
Jekyll
Jekyll 是一個(gè)支持博客的靜態(tài)站點(diǎn)生成器,用于個(gè)人、項(xiàng)目或組織站點(diǎn)。它是由 GitHub 聯(lián)合創(chuàng)始人 Tom Preston-Werner 用 Ruby 開發(fā)的,并采用了 MIT 開源許可。
Jekyll 是一個(gè)解析引擎,打包成 Ruby gem,用來(lái)基于動(dòng)態(tài)組件構(gòu)建靜態(tài)網(wǎng)站。
谷歌 Sites
谷歌 Sites 是谷歌提供的一個(gè)結(jié)構(gòu)化的 Wiki 和網(wǎng)頁(yè)制作工具。谷歌 Sites 的目標(biāo)是讓任何人都能夠創(chuàng)建支持不同編輯器協(xié)作的簡(jiǎn)單 Web 站點(diǎn)。
這些站點(diǎn)在每一個(gè)屏幕上(從桌面到智能手機(jī))看起來(lái)都很棒——做到這些都不需要學(xué)習(xí)設(shè)計(jì)或編程。
13 總結(jié)
這篇文章涵蓋的所有類別可以幫助你更好地實(shí)施 DevOps。其中任何一種都很有用,而且我認(rèn)為所有這些都是你需要的,幫助團(tuán)隊(duì)以可持續(xù)的方式向客戶交付價(jià)值,并幫助你脫穎而出。
我提到了 DevOps 工具鏈,比如規(guī)劃工具、問(wèn)題跟蹤工具、源代碼控制管理、構(gòu)建和測(cè)試代碼、持續(xù)集成和部署源代碼、管理配置、使用云平臺(tái),然后是監(jiān)控和日志,以及溝通和知識(shí)共享。
我希望你能夠喜歡這篇文章。DevOps 是一種令人興奮的工作方式,盡管它不是唯一的方式,甚至不是最好的方式。更好的東西可能會(huì)在未來(lái)出現(xiàn),但目前看來(lái),它似乎代表了一種很好的團(tuán)隊(duì)協(xié)作方式。它讓團(tuán)隊(duì)共同努力,交付價(jià)值,同時(shí)也幫助他們專注于客戶,而不僅僅是技術(shù)或內(nèi)部的東西,也包括了速度、學(xué)習(xí)以及公司的未來(lái)。
責(zé)任編輯:彭菁
-
應(yīng)用程序
+關(guān)注
關(guān)注
38文章
3327瀏覽量
58859 -
工具
+關(guān)注
關(guān)注
4文章
314瀏覽量
28218 -
devops
+關(guān)注
關(guān)注
0文章
122瀏覽量
12432
原文標(biāo)題:必備的DevOps工具鏈大盤點(diǎn)
文章出處:【微信號(hào):芋道源碼,微信公眾號(hào):芋道源碼】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。
發(fā)布評(píng)論請(qǐng)先 登錄
評(píng)論