DevOps落地重要的一方面是选好工具集,本文介绍了最流行的DevOps工具。ios
开发和运维的集成翻开了软件开发的全新篇章。若是你仍是DevOps的新手,或者正在寻求改进已有流程的方法,那么第一道关卡就是调研哪些工具最适合你的团队。编程
本文整理了工具列表,为你们选择所需的工具提供详实的参考信息。让咱们一块儿看看从自动化build工具到应用程序性能监控平台领域里,十大最佳DevOps工具是哪些吧。浏览器
1. Gradle缓存
DevOps工具集须要一种可靠的build工具。Apache Ant和Maven统治着自动化build工具市场不少年,可是 Gradle 在2009年现身,从那时起它就迈着稳定增加的步伐愈来愈流行。Gradle的功能很强大,容许用户用Java,C++,Python或者其余语言编程。各类流行的IDE,好比Netbeans,Eclipse以及Intellij IDEA也都支持Gradle。若是这还没法说服你使用它,那么还有一点可能有所帮助,Google也选择它做为Andriod Studio的 正式build工具 。安全
Maven和Ant使用XML配置,Gradle则引入了一种基于Groovy的DSL来描述build。在2016年,Gradle团队还发布了一种 基于Kotlin的DSL ,所以用户如今也能够用Kotlin来编写build的脚本。这意味着Gradle的学习须要必定的时间,若是你之前用过Groovy,Kotlin或其余JVM语言的话,那么会有助于Gradle的快速掌握。除此以外,Gradle使用Maven的repository格式,所以若是使用过Maven的话对Gradle的依赖管理也会比较熟悉。还能够 将Ant build导入 进Gradle。服务器
Gradle最好的设计是 增量build ,所以能够节省大量的编译时间。根据Gradle的 性能报告 ,它比Maven快100倍。这样的性能优点一部分来源于这种增量设计,另外也得益于Gradle的 build缓存 和 daemon 。build缓存重用task的输出,而Gradle的Daemon将build的信息储存在内存里,能够在多个build间共享。网络
总的来讲,Gradle让快速交付成为可能,也让配置更加灵活。架构
2. Git运维
Git 是最流行的DevOps工具之一,在软件界使用普遍。它是一种分布式SCM(源码管理)工具,远程团队和开源贡献者都很喜欢它。Git让用户能够跟踪本身开发工做的进度。用户能够保存本身源码的不一样版本,而且在须要的时候切回以前的版本。它也很适合作实验,由于能够建立单独的分支,在须要的时候仅仅merge新特性。分布式
要将Git和DevOps工做流集成起来,还须要维护repository,团队成员能够向其中push各自的工做。目前,两大最佳在线的Git repo托管服务是 GitHub 和 Bitbucket 。GitHub更有名气,可是Bitbucket给小团队(不超过五个成员)提供免费不受限的私有repo。使用GitHub,用户仅仅能够免费访问公有的repo——固然这对于不少项目来讲仍然是很好的解决方案。
GitHub和Bitbucket都有很好的集成。好比,用户能够将它们和Slack集成,这样团队的每一个人都能在有任意commit时收到通知。
3. Jenkins
Jenkins 是不少软件开发团队在走向DevOps时会用的自动化工具。它是开源的CI/CD服务器,帮助用户自动化交付流水线的不一样阶段。Jenkins之因此流行的主要缘由是其巨大的插件生态系统。目前,它提供 1000多个插件 ,所以它能够和几乎全部DevOps工具(从Docker到Puppet)集成。
使用Jenkins,用户能够搭建而且根据实际须要自定义本身的CI/CD流水线。 Jenkins文档 里介绍了以下示例。这仅仅是一种可能的实现。看着很不错,不是吗?
使用Jenkins很容易 ,它在Windows,Mac OS X和Linux上开箱即用。很容易就能够 使用Docker安装它 。用户能够经过浏览器搭建而且配置Jenkins服务器。若是你是第一次使用它,能够选择安装最经常使用的插件。固然也能够建立自定义配置。
使用Jenkins,用户能够尽快迭代并部署新代码。它还帮助用户度量流水线里每一步是否成功。我听到有人抱怨Jenkins很“丑陋”且并不直观的UI。可是,我仍旧能够很容易地找到须要的全部东西。
4. Bamboo
Bamboo 是Atlassian的CI/CD服务器解决方案,不少特性和Jenkins相似。它们都是流行的DevOps工具,帮助用户自动化发布流水线,从build到部署。可是,Jenkins是开源的,Bamboo是收费的。所以,这里永恒的问题是,有免费软件时有必要选择收费软件吗?这取决于你的经费和目标。
Bamboo有不少预构建的功能,而这些功能在Jenkins里得本身手动搭建。这也正是Bamboo的插件更少的缘由(大概100个,Jenkins有1000+个)。实际上,你并不须要Bamboo的不少插件,由于它带着不少开箱可用的功能。
Bamboo和其余Atlassian产品,好比Jira和Bitbucket无缝集成。用户还能够访问内建的Git和Mercurial分支工做流及测试环境。总之,Bamboo能够节省不少配置的时间。它的UI也更为直观,有提示,自动补全和其余有用的特性。
5. Docker
Docker 在2013年发布以后已经成为了数一数二的容器平台,而且仍然在持续改进。它是最重要的DevOps工具之一。Docker在科技界掀起了容器化的潮流,主要是由于它让分布式开发成为可能,而且自动化了应用程序的部署。它将应用程序隔离成单独的容器,所以应用变得更加便携也更为安全。Docker应用程序也独立于OS以及平台。用户可使用Docker容器代替虚拟机,好比VirtualBox。
我最喜欢Docker的一点是用户无需担忧依赖管理。能够将全部依赖打包进应用程序的容器,并将全部的东西当作独立的单元交付。而后,用户能够很轻松地在任意机器或者平台上运行这个应用程序。
Docker也和 Jenkins 以及 Bamboo 集成。若是你将自动化服务器和Docker搭配使用,能够进一步改进交付工做流。另外,Docker也很适用于云计算。最近几年,全部主流的云供应商,好比AWS,Google Cloud,都已经支持Docker。所以,若是你计划云迁移,那么Docker能够帮助简化这一进程。
6. Kubernetes
今年,每一个人都在谈论 Kubernetes 。它是容器编排平台,将容器化推动到下一个层面。它可使用Docker或者其余替代产品。Kubernetes仍然很新;2015年才推出第一个版本。它由一些Google的工程师建立,他们想找到管理大规模容器的方案。使用Kubernetes,用户能够将容器组织成逻辑单元。
若是你只有几个容器,那么可能并不须要容器编排平台。可是,当系统达到必定级别的复杂度,须要扩展资源的时候,这就是合理的下一步。Kubernetes让用户能够自动化管理上百个容器的过程。
使用Kubernetes,无需将容器化的应用程序绑定到某个单独的机器里。相反,你能够将它部署到一个机器集群里,Kubernetes会自动化分发并在整个集群里调度容器。
一个Kubernetes集群包含一个master和几个worker节点。master节点实现预约义的规则,而且将容器部署到worker节点上。Kubernetes负责全部一切。好比,它注意到某个worker节点下线了,就会将其上的容器从新分发到别的节点上。
7. Puppet企业版
Puppet Enterprise 是一个跨平台的配置管理平台。它让用户能够将基础架构当作代码来管理。由于它自动化了基础架构管理,用户能够更快更安全地交付软件。Puppet还给开发人员提供了小型项目可使用的 开源工具 。可是,若是你负责的是较大的基础架构,就会发现Puppet Enterprise的 额外特性 是有价值的,好比:
实时报告
基于角色的访问控制
节点管理
使用Puppet Enterprise,你能够管理多个团队和数千资源。它能自动理解基础架构里的关系。它处理依赖关系而且智能地处理故障。当遇到一次失败的配置时,它也会跳过全部依赖的配置。Puppet最好的一点是它有 5000多个模块 ,能够和 不少流行的DevOps工具 集成。
8. Ansible
Ansible 是一个配置管理工具,和Puppet,Chef相似。用户能够用它配置本身的基础架构而且自动化部署。和其余相似的DevOps工具相比,它的主要卖点是简洁易用。Ansible遵循和Puppet同样的基础架构即代码(IAC)的理念。可是,它使用超级简单的YAML语法。使用Ansible,用户能够在YAML里定义任务,而Puppet则有本身的声明式语言。
无代理的架构是另外一个常常被说起的Ansible的特性。由于后台没有运行daemon或者代理,Ansible是安全而且轻量级的配置管理自动化的解决方案。和Puppet相似,Ansible也有 一些模块 。
若是想要更好地理解Ansible在DevOps工做流里是怎么工做的,能够查看Red Hat Blod里的 这篇博文 。它介绍了在Jenkins流水线里,如何使用Ansible来预配环境以及部署应用。
9. Nagios
Nagios 是最流行的免费并开源的DevOps监控工具。它能够监控基础架构从而帮助用户发现并解决问题。使用Nagios,用户能够记录事件,运行中断以及故障。用户还能够经过Nagios的图表和报告监控趋势。这样,能够预测运行中断和错误,而且发现安全攻击。
虽然基础架构监控里有不少DevOps工具,可是Nagios由于其丰富的 插件生态 而脱颖而出。由于Nagios已经发布不少年了(2002年发布),围绕它的社区很大。除了插件,社区还贡献了add-on,指导文章,翻译等等有用的东西——都是免费的。
Nagios提供了四中开源监控解决方案:
Nagios Core
Nagios XI
Nagios Log Server
Nagios Fusion
Nagios Core是一个命令行工具,提供了全部基本功能。用户还能够选择 Nagios XI ,它提供了基于网页的GUI以及监控向导程序。Nagios提供了 功能的比对 。
Nagios Log Server让用户能够搜索日志数据,而且配置可能攻击的报警。Nagios Fusion能够同时监控多个网络。
总体来讲,Nagios给DevOps团队提供了基础架构监控解决方案。可是,它须要必定的时间搭建,而且须要考虑和你的环境的兼容性。
10. Raygun
Raygun 是领先的错误监控以及崩溃报告的平台。 应用程序性能监控 (APM)是其最近的项目。Raygun的DevOps工具帮助用户分析性能问题,而且定位到代码的某一行,某个function或者API调用。APM工具和Raygun的错误管理工做流能够协同工做。好比,它自动定位最高优先级的问题,并建立issue。
Raygun APM可以帮助最大化其余DevOps的价值,由于你老是能收到问题通知。由于它自动将错误连接到源码里,Raygun给整个团队提供统一的真理来源来定位错误和性能问题,将开发和运维紧密联系在一块儿。
哪些DevOps工具适合你的团队?
找到最佳的DevOps工具须要一些测试和经验。搭建以及配置开源软件一般须要更多时间。大多数商业DevOps工具都有免费试用版本,用户能够测试而且评估。最终选择哪些工具取决于团队的需求和目标。
感兴趣的能够本身来个人Java架构群,能够获取免费的学习资料,群号:855801563对Java技术,架构技术感兴趣的同窗,欢迎加群,一块儿学习,相互讨论。