开发和运营的整合为软件开发带来了新的视角。如果您是DevOps实践的新手,或者希望改进当前流程,那么了解哪种工具最适合您的团队可能是一项挑战。
我们将几个开源工具列出来,这里面包括从自动构建的工具到应用程序性能监控平台 ,以帮助您做出明智的决定:哪些开源工具会比较适合您的构建情况。现在来看一下吧。
1. Gradle
DevOps工具栈需要一个可靠的构建工具。多年来,都是Apache Ant和Maven一直主导着自动化构建工具市场,但Gradle 在2009年出现了,其受欢迎程度自那时起飞速增长。
Gradle是一个非常通用的工具,它允许你使用Java,C ++,Python或其他语言编写代码。Gradle还受到Netbeans,Eclipse和IntelliJ IDEA等流行IDE的支持,谷歌也会选择它作为Android Studio 的官方构建工具 。
虽然Maven和Ant使用XML进行配置,但Gradle引入了基于Groovy的DSL来描述构建。2016年,Gradle团队还发布了基于Kotlin的DSL ,现在您也可以在Kotlin中编写构建脚本。这意味着Gradle确实借鉴了一些(前者)学习经验,如果您以前使用过Groovy,Kotlin或其他JVM语言,是***不过的了。
此外,Gradle使用Maven的存储库格式,因此如果您之前有使用Maven的经验,那么对于依赖关系管理将会很熟悉。您还可以将Ant构建 导入Gradle。
关于Gradle的最棒的功能是增量构建 ,因为它们节省了大量的编译时间。根据Gradle的性能测量结果 ,它比Maven快100倍。
有部分是因为增量的原因,还有部分原因是由于Gradle的缓存构建和守护进程 。缓存重复输出任务,守护进程把构建信息放在了内存当中。
总而言之,Gradle允许更快的运输,并提供了许多配置可能性。
2.Git
Git 是***的DevOps工具之一,广泛应用于整个软件行业。它是一个分布式SCM(源代码管理)工具,深受远程团队和开源贡献者的喜爱。Git允许你跟踪开发工作的进度。您可以保存源代码的不同版本,并在必要时返回到以前的版本。你可以创建独立的分支,在上线前将新特性合并到分支。
要将Git与您的DevOps工作流程集成,您需要一个在线代码存储服务来托管您团队的工作内容,目前两个***的在线代码托管服务是GitHub和Bitbucket。GitHub更为知名,但Bitbucket为小型团队(最多五个团队成员)提供免费***制的私人存储空间。使用GitHub,您只能免费访问公共存储空间 - 这对许多项目来说仍然是一个很好的解决方案。
GitHub和Bitbucket都有很棒的集成。例如,您可以将它们与Slack集成,以便每当有人进行新的提交时,团队中的每个人都会收到通知。
3.Jenkins
Jenkins 是许多软件开发团队的***DevOps自动化工具。它是一个开源CI / CD服务器,可以在自动化交付流程的不同阶段使用。Jenkins受欢迎的主要原因是其巨大的插件生态系统。目前,它提供了1000多个插件 ,集成了几乎所有DevOps工具,从Docker到Puppet。
使用Jenkins,您可以根据自己的需要设置和自定义CI / CD流程。我在Jenkins Docs中 找到了以下示例。这只是其中一种可能性。看起来还不错,不是吗?
Jenkins 入门非常容易,因为它在Windows,Mac OS X和Linux上都是开箱即用的。您也可以使用Docker 轻松安装它 。您可以通过Web界面设置和配置Jenkins服务器。如果您是初次使用的用户,可以选择使用一些常用插件进行安装。但是,您也可以创建自己的自定义配置。
使用Jenkins,您可以尽快迭代和部署新代码。它还可以做到让您衡量流程管道中每个步骤是否成功。也有人抱怨Jenkins 用户界面“丑陋”并且不直观。
4、Bamboo
Bamboo是Atlassian的CI / CD服务器解决方案,具有许多与Jenkins类似的功能。两者都是流行的DevOps工具,可以在自动化交付流程的不同阶段使用。然而,Jenkins是开源的,但Bamboo得按需收费。所以,***问题应该是:如果有免费替代方案,是否值得选择专有软件?这就得取决于您的预算和目标了。
Bamboo有许多预先构建的功能,这些必须在Jenkins中手动设置。这也是Bamboo拥有较少插件的原因(与Jenkins的1000+相比,大约100个)。实际上,你不需要那么多的Bamboo插件,因为它基本都是开箱即用。
Bamboo与其他Atlassian产品都是无缝集成,比如Jira和Bitbucket。您还可以访问内置的Git和Mercurial分支工作流程和测试环境。一句话概括,Bamboo可以为您节省大量的配置时间。它带有更直观的用户界面,提醒工具,自动完成功能和其他便利功能。
5. Docker
Docker 是2018年的头号容器平台。它也被认为是最重要的DevOps工具之一。Docker在IT科技圈广受欢迎,主要是因为它使分布式开发成为可能,并能使应用程序部署自动化。它使应用程序部署过程变得更便携更安全。Docke应用程序也独立于操作系统和平台。您可以使用Docker容器而不是VirtualBox等虚拟机。
我最喜欢Docker的是你不必担心依赖关系管理。您可以将所有依赖项打包在应用程序的容器中,并将整个事物作为独立单元发送。然后可以在任何计算机或平台上运行该应用程序。
Docker也与Jenkins 和Bamboo 集成。如果将其与其中一个自动化服务器一起使用,则可以进一步改善交付工作流程。此外,Docker也非常适合云计算。近年来,AWS和Google Cloud等所有主要云厂商都开始支持Docker。因此,如果您计划进行云迁移,Docker会使这个流程简化一些。
6. Kubernetes
今年,Kubernetes 也是热点。它是一个容器编排平台,将Docker化提升到了一个新的水平,它适用于Docker或其任何替代品。Kubernetes是近几年才出现在大众视野的; 它的***个版本于2015年问世。由几位Google工程师创建,他们希望找到一个大规模管理容器的解决方案。使用Kubernetes,您可以将容器分组为逻辑单元。
如果您只有几个容器,则可能不需要容器编排平台。但是,当您达到一定程度的复杂性并需要扩展资源时,这是下一个合乎逻辑的步骤。Kubernetes允许您自动化管理数百个容器。
使用Kubernetes,您无需将容器化应用程序绑定到一台计算机上。相反,您可以将其部署到计算机群集。Kubernetes自动化整个集群中容器的分发和调度。
Kubernetes集群由一个主节点和几个工作节点组成。主节点实现预定义的规则,并将容器部署到工作节点。Kubernetes还会意识到某个工作节点在何时关闭并在必要时重新分配容器。
7、Puppet Enterprise
Puppet Enterprise是一个跨平台的配置管理平台。 它允许您以代码的形式管理基础架构。 由于它可以自动化管理基础架构,因此您可以更快,更安全地交付软件。 Puppet还为开发人员提供了一个用于小型项目的开源工具。 但是,如果您正在处理更大的基础架构,您可能会发现Puppet Enterprise的额外功能,例如:
●实时报告
●基于角色的访问控制
●节点管理
使用Puppet Enterprise,您可以管理多个团队和数千个资源。 它可以自动了解基础架构中的关系。 并依赖其中关系巧妙地处理故障。 当遇到配置失败时,它会跳过所有相关配置。 关于Puppet值得一提的事情是它有超过5,000个模块,并有许多流行的DevOps工具集成。
8、Ansible
Ansible是一个配置管理工具,类似于Puppet和Chef。 您可以使用它来配置基础架构并自动部署。 与其他类似的DevOps工具相比,它的主要卖点是简单易用。 Ansible遵循与Puppet相同的基础设施代码(IAC)方法。 但是,它使用超级简单的YAML语法。 使用Ansible,因为Puppet具有其声明式语言,所以你可以在YAML中定义任务
无Agent架构是Ansible另一个经常提到的特色。 由于没有守护进程或Agent在后台运行,因此Ansible是一种安全且轻量级的配置管理自动化解决方案。 与Puppet类似,Ansible也有几个模块。
9. Nagios
Nagios 是***的免费和开源DevOps监控工具之一。它可以监控基础结构关系以便可以找到并修复问题。Nagios可以记录任务,事件中断和事件故障。您还可以借助Nagios的图表和报告密切关注趋势。这样,您可以预测中断和错误并检测安全威胁。
尽管有许多用于基础架构监控的DevOps工具,但Nagios因其丰富的插件生态系统 而脱颖而出。由于Nagios在IT圈也已存在了一段时间(自2002年以来),它周围有一个庞大的社区。除了插件,他们还可以免费制作附加组件,教程,翻译和其他好东西。
Nagios提供四种开源监控解决方案:
Nagios Core
Nagios XI
Nagios Log Server
Nagios Fusion
Nagios Core是一个命令行工具,具有所有基本功能。您还可以选择附带基于Web的GUI和监视向导的Nagios XI。
Nagios Log Server允许您搜索日志数据并设置有关潜在威胁的警报。而且,Nagios Fusion允许您同时监控多个网络。
总的来说,Nagios为DevOps团队提供了基础架构监控解决方案。但是,设置Nagios并使其与您的环境兼容可能需要一段时间。
10、Raygun
Raygun是***的监控报告平台。APM是其***产品。 Raygun的DevOps工具可帮助您诊断性能问题并将其追溯到确切的代码,函数或API调用行。 APM工具也非常适合Raygun故障管理流程。例如,它会自动识别您的***优先级问题并自动创建问题。
Raygun APM可以帮助您充分利用其他DevOps工具,确保若有问题发生,您会一直收到有关错误问题的通知。由于它自动将错误链接回源代码,因此Raygun通过为整个团队提供监控功能来实现开发和操作。
找到***的DevOps工具,需要自己亲自实验和尝试。设置和配置这些开源工具通常会需要花费更多时间,好在大多数商业DevOps工具都提供免费试用版,允许您免费测试和评估它们。
译者介绍:刘劲辉 优维科技高级解决方案架构师 曾就职于阿里巴巴移动事业群,具有多年的业务运维和运维研发经验。曾负责开发建设基于阿里游戏中心 JWS 框架的自动化运维平台,对 DevOps 实践落地有丰富经验。