什么是 DevOps?
DevOps的概念由开发和运维所组成,是包括了软件开发管理和团队管理的集合体。这个单词2009年被首次提出来,并自此成为IT领域的流行语。
DevOps对每个使用“DevOps”这个词的人来讲,有不同的意义,它并不只是一个标准,一个软件或者是流程,它更像是一种文化。
Gartner这样来定义DevOps:
DevOps代表了一种新的IT文化,它专注于在面向系统的环境中采用敏捷、精益实践(lean practices)的方法,实现快速IT服务交付。DevOps强调人(文化),并寻求加强开发和运维团队之间的合作。DevOps的实施依仗于技术——特别是那些能从全周期的角度增强可编程性和动态基础架构管理的自动化工具。
从上面的定义中可以看出,DevOps是全周期软件开发(SDLC)的多重方法的集合,但它最核心的能力是利用技术和软件来理顺软件开发过程。根据凯捷的一项调查,如果正确的贯彻了DevOps的指导思想——合作,并采用了适宜的工具加以辅助,你的业务系统的部署频率可以提高30倍,而所需时间比传统工具缩短8000倍。
正确的工具
此列表旨在尽可能全面的向DevOps的初学者介绍成熟的工具,同时这些工具也是新近发布到市场的工具,无论怎样总有一款工具适合你和你的业务需要。对于那些已经开始实施DevOps的企业个人,我们也希望对你的企业发展有所帮助。
对于如此之多的工具,如何选择并没有对错之分。也没有任何单一的工具能够满足你的所有的需求,或同时被开发和运维团队所使用。那么在选择工具之前我们先把需要考虑的问题做一下分解:
- 规划和协作:在你开始全周期软件开发之前,你需要有一个统一的想法——你的开发团队会用到哪些工具。有一些DevOps工具可以帮助你完成关键的第一步。
- 构建:这里,你需要创建统一的预配置环境。至少你需要这些工具在电脑上能正常的跑起来。
- 自动化:自动化已经迅速成为DevOps默认能带来的优势之一,自动化始终会比手动方法大幅提生产效率。
- 持续集成:该工具能提供持续的,及时的回馈,但每种工具的部署带来的结果是不一样的,你为你的任务选择了正确工具吗?
- 部署:部署工作需要可预测、平稳、可靠,风险最小,自动化也将在此过程中发挥重大作用。
基于这些问题,我希望后面介绍的一系列工具能够在你将业务过渡到DevOps时提供帮助。
工具目录
基础架构即代码(Infrastructure As Code)
1、AWS CloudFormation
如果你计划,或者已经在AWS上进行你的工作,那么AWS的CloudFormation是你的必选工具。CloudFormation允许你对AWS基础设施进行建模,并快速轻松地调配所有AWS资源。所有这一切都在JSON或YAML模板文件中完成,该服务附带了各种自动化功能,可确保您的部署具有可预测、可靠并且可管理。
链接:https://aws.amazon.com/cloudformation/
2、Azure Resource Manager
Azure资源管理器(ARM)是Microsoft实现Infrastructure As Code的工具。借助JSON文件中描述的ARM模板,Azure资源管理器将预配基础架构、处理依赖关系,并通过单个模板声明多个资源。
链接:https://azure.microsoft.com/en-us/features/resource-manager/
3、Google Cloud Deployment Manager
和上述工具相似, Google Cloud Deployment Manager是Google实现Infrastructure As Code的工具,此工具使用YAML作为配置文件,使用JINJA2或PYTHON作为模板。他与众不同的功能是同步部署和“预览”,允许你在提交变更之前获得预览。
链接:https://cloud.google.com/deployment-manager/
4、Terraform
Terraform是HashiCorp的产品,Vault和Nomad也是这家公司的产品。Terraform和之前提到的工具不同,它并不局限于某一个云环境。这带来了一个好处,即可以处理复杂分布式应用程序,又不会被单一平台绑定。和谷歌云部署管理器一样,Terraform也有预览功能。
链接:https://www.terraform.io/
5、Chef
Chef是忠爱CI/CD人士的理想选择。Chef的核心是自定义recipes,templates和cookbooks以及现成的模板集合。Cookbooks可以在基础架构快速缩放的情况下进行持续的配置。所有这些都被打包在基于Ruby开发的DSL中。
链接:https://www.chef.io/products/chef-infra/
6、Ansible
在需要自动完成重复的IT任务(如配置管理、应用程序部署和服务内部业务流程)时,Ansible是你的朋友。因为不需要自定义安全架构(custom security infrastructure)和代理,Ansible易于在YAML上部署和运行,允许你以接近基本英文文本的方式定义自动化工作。
链接:https://www.ansible.com/
7、Puppet
Puppet也许是本列表中最老的一款IAC工具,同时也是最经验的成熟工具,其背后拥有成熟的社区。Puppet与众不同的是它对IAC的设置和自动化的方法。如果使用Puppet,你需要定义declarative state,Puppet 将找出如何最好地实现它。
链接:https://puppet.com/
持续集成/交付工具
8、CircleCL
CircleCI是提供用于全面部署流程的软件工具,它为集成和交付提供了最先进的平台,通过构建和测试自动化在全球发布代码。
链接:https://circleci.com/
9、Harness
作为最先提供持续部署即服务的平台之一,Harness帮助部署团队自动化其整个部署流程,并在部署失败时提供保障。
链接:https://harness.io/
10、Buddy
Buddy是一种智能CI/CD工具,借助简单的UI/UX,可大大降低DevOps的入门门槛。
链接:https://buddy.works/
自动部署
11、Probot
Probot被GitHub优化,它为App创建提供了bot框架。Probot App易于编写、部署和共享。
链接:https://probot.github.io/
12、AWS OpsWorks
AWS Opworks适合那些在AWS中使用Chef和Puppet的企业。借助AWS Opworks,你可以轻松自动化服务器的部署、配置和管理。
链接:https://aws.amazon.com/opsworks/
13、Relay
当前,事件驱动并不是一个新概念了,Relay是为DevOps专门设计的。Relay具有大量可开箱即用的集成和工作流,对于低价值的自动化任务至关重要,因此您的团队可以专注于更重要的事情。
链接:https://relay.sh/
14、CA Automic Workload Automation
以下是如何用CA Automic进行工作自动化的全面指南。
链接:https://docs.automic.com/documentation/webhelp/english/ALL/components/DOCU/12.2/AWA Guides/help.htm#_Common/Welcome/CommonWelcomeImageMaps.html
可用性测试
15、CloudEndure
提供实时的,数据块级别的复制,可以为数据库和应用提供更好的数据完整性,毫秒级RPO(Recovery Point Objective)。复制的算法不会占用系统资源,也不需要重启系统。
链接:https://www.cloudendure.com/
数据库和大数据
16、MySQL
MySQL数据库的使用相对简单,它用于存储大量信息,它稳定、可靠且功能强大,具有高级功能。它已被Facebook、PayPal和谷歌等行业巨头使用。
链接:https://www.mysql.com/
17、MariaDB
MariaDB是由MySQL的开发人员开发的开源数据库,目前已知的用户包括Wikipedia,WordPress.com和Google。对于那些对速度,可扩展性,健壮性有要求的服务来说,这是一个不错的选择。
链接:https://mariadb.org/
18、Liquibase
Liquibase是用于处理更改和部署管理的数据库的开源工具。它还可帮助团队跟踪数据库版本控制、数据库架构部署和逻辑更改。
链接:https://www.liquibase.org/
19、Datadog
Datadog允许你收集所有使程序速度慢的未使用的元数据,例如数据库查询速度慢、抛出异常、非托管错误日志和缓存缺失以及上游服务的增长。使用Datadog,所有这些事件、服务状态和指标都被收集到同一个位置,并以方便的可视化图形来表示。
链接:https://www.datadoghq.com/
20、DigitalOcean
DigitalOcean是一家快速增长的云托管提供商。在几秒钟内,它可以部署基于Linux的虚拟机(“Droplet”)。DigitalOcean提供具有高可靠性,正常运行时间百分比为99.99%,平均负载时间为219ms。
链接:https://www.digitalocean.com/
21、M3
M3是Uber的产品。它拥有众多的扩展选项,自从Uber意识到现有的开源软件不能满足其需求时,已经使用了很多年。M3是从零开始设计的,旨在最大限度地提高metrics pipeline的各个方面,同时最大限度地减少其硬件资源占用。
链接:https://eng.uber.com/m3/
22、Looker
Looker,现在是谷歌云的一部分,它是一个高度适应性的商业智能和数据分析平台,与Redshift,Snowflake,BigQuery以及50多种SQL语言无缝集成。使用Looker,你将获得前所未有的数据洞察。
链接:https://looker.com/
23、Apache Hadoop
Hadoop是专为易于扩展而设计的,其框架允许将大型数据集从单个节点扩展到数千个节点。它还拥有自己的库,旨在实现本地计算和存储。
链接:https://hadoop.apache.org/
24、HPCC Systems
HPCC Systems利用数据行业20年的经验,为您带来免费且开源的端到端数据湖平台。
链接:https://hpccsystems.com/
25、BigQuery
BigQuery是Google的产品,它将无服务、经济高效且可扩展的数据仓库带给普罗大众。
链接:https://cloud.google.com/bigquery
26、Apache Cassandra
Cassandra是处理重要数据的工具,凭借久经考验的容错性和线性可扩展性,Cassandra确保你的数据库始终保持高水平的可扩展性和可用性。
链接:https://cassandra.apache.org/
27、MongoDB
MongoDB采用独特的方法将数据存储在类似JSON格式的文档中,从而创造了一个极其灵活、可扩展的动态系统。MongoDB认为这是存储数据最理想的方法。亲自去了解一下,看看你是否同意这个说法。
链接:https://www.mongodb.com/
28、Qlik
借助Qlik的QlikSense和QlikView,你的原始数据将具有高度可操作性,Qlik利用其端到端的数据集成和分析方法,最大限度地转化您的数据为业务增长提供洞察。
链接:https://www.qlik.com/us/
29、Sisense
Sisense是构建和部署分析App背后的驱动力。Sisense数据和分析平台提供了一个敏捷的商业智能系统,旨在将简单数据转换为强大的分析工具。
链接:https://www.sisense.com/
30、Talend
Talend首次进入公众视野在2005年,它是第一家数据集成软件的开源商业软件供应商,目前仍然是该领域的领导者。
链接:https://www.talend.com/
监控
31、Sensu
Sensu提供全面的从单一服务器到云的监控。Sensu与你在使用的平台集成,并与Sensu SSO一起提供强大的安全保证。
链接:https://sensu.io/
32、SolarWinds服务器和应用监控
Solarwinds具有服务器和应用程序监控,是一款令人印象深刻的全能工具。
链接:https://www.solarwinds.com/server-application-monitor
测试
33、Vegeta
可适应的HTTP负载测试工具,可用以命令行或库的方式运行。
链接:https://github.com/tsenart/vegeta
34、QuerySurge
QuerySurge的主要吸引力是自动化实现数据校验和测试。显著的特点包括支持跨平台、内置集成大多数数据集成方案和BI测试。
链接:https://www.querysurge.com/
安全
35、Kryption
Krypton是一个有U2F验证器的移动App,具有反网络钓鱼的加密架构。所有数据加密密钥都存储在本地设备存储中,以避免不需要的外部访问。
链接:https://krypt.co/
36、Mysterium.network
Mysterium是一个由节点组成的网络,为终端用户提供提供隐私和安全,它的镜像专为嵌入式系统创建,比如树莓派。
链接:https://mysterium.network/
37、Okta
Okta提供身份管理服务。借助Okta,你可以统一管理所有员工访问,Okta功能包括单点登录(SSO)、AD和LDAP集成、多重身份验证(MFA)。所有这些都汇集在Okta集成网络中,该网络提供了多种集成方案。
链接:https://www.okta.com/
38、Palo Alto Networks
这是一家提供云安全服务的公司。服务包括分支机构移动用户的访问安全、数据保护、治理、合规性、安全监控、合规性验证和云存储安全性。
链接:https://www.paloaltonetworks.com/cloud-security
39、Small step SSH
Smallstep提供了单点登录SSH(SSO SSH)功能,这是一个易于使用的系统,可避免你每天获取、转移和轮换SSH密钥。所有SSH和sudo访问都可以通过单一管理面板进行管理。
链接:https://smallstep.com/sso-ssh/
CLI工具
40、Awless
命令行接口(CLI),旨在帮助开发人员管理Amazon Web服务。Awless透明地将本地命令转换成云端资源,并显示它们之间的关系。
链接:https://github.com/wallix/awless
41、Snyk-CLI
Snyl CLI将帮助你查找(更重要的是修复)依赖项中的漏洞,无论是ad hoc网络还是CI系统。
链接:https://support.snyk.io/hc/en-us/categories/360000456217-Snyk-CLI
42、Daytona
Daytona通过更优化的Vault客户端CLI版本为您提供帮助,特别注重自动身份验证和机密信息获取。
链接:https://github.com/cruise-automation/daytona
开发工具
43、Bitbucket
Bitbucket专为专业团队所准备,其中项目规划、代码协作、测试和部署可以在一个位置进行,提供免费使用付费订阅选项。
链接:https://bitbucket.org/product
44、Confluence
Confluence是一个非常适合项目规划、会议纪要、营销规划和博客发布的软件工具。为你的业务创建开放,可访问的工作空间。非常适合团队和公司。
链接:https://www.atlassian.com/software/confluence
45、Frame.ai
Frame从独特的角度为你了解客户管理带来帮助,通过持续监控功能帮助确定客户特定结果背后的“原因”。
链接:https://frame.ai/
46、Grit
Grit帮助程序员/开发人员将源代码从源存储库(存储、传输、共享和复制)提交到目标存储库。
链接:https://github.com/grailbio/grit
47、Jira
Jira是一个软件开发工具,可帮助开发人员捕获、分配和设置目标任务中的优先级。它允许开发人员管理整个系统开发过程,确保完成每个任务。
链接:https://www.atlassian.com/software/jira
48、EditorConfig
EditorConfig可帮助那些在具有多种文本编辑器或IDE环境的大型组织中工作的开发人员维护一致的代码样式。
链接:https://editorconfig.org/
49、Tilix
Tilix是Linux的终端仿真器,遵循gnome human接口标准。它可以创建多个可同步的窗格。
链接:https://gnunn1.github.io/tilix-web/
50、Jsonnet
Jsonnet使得Json扩展易于理解。该工具引入了多种功能,如消重、与自定义/现有应用程序集成,其他格式生成,包括JSON、INI和YAML等。
链接:https://jsonnet.org/
51、Hzaelcast
Hazelcast是纯内存缓存解决方案,提供创新、低延迟、以数据为中心的应用程序。它可以通过并行处理多线程架构实时处理任何应用程序。
链接:https://hazelcast.com/
虚拟化
52、Cloudcraft
Cloudcraft是一个可视化设计软件,通过针对AWS优化的智能组件,可帮助开发人员在几分钟内创建架构图。该工具无需静态文档和规格说明。
链接:https://cloudcraft.co/
53、DBSchema
借助对SQL和NoSQL数据库的支持,DbSchema提供了一个功能强大且易于使用的可视化数据库设计器,供您管理Schema。