7个变革DevOps的工具

7个变革DevOps的工具

1. 简介

随着公司业务的不断迅速增长,使得管理复杂的IT基础设施需求变得更为艰难。解决应对这一复杂变幻的挑战的最佳方法是让开发团队和运维团队紧密协作,实现灵活应对。拥有一个DevOps专家团队可以实现在最少时间服务中断的情况下实现IT基础设施的动态伸缩。

DevOps团队执行各种任务, 如:

  • 新虚拟机的配置
  • 配置网络设备和服务器
  • 应用程序部署
  • 收集和聚合的日志
  • 性能监视服务、网络和应用程序
  • 报警和自动修复的问题
  • 服务器和服务可用性监控

如果不使用正确的工具集来执行这些任务将会是一件即费时又费钱的事。某些DevOps工具需要巨大的投资, 而有一些却很容易获取,因为它们是开源。你可以进行一个简单的成本效益分析, 然后选择一组工具, 帮助你解决当前应用场景下遇到的问题。

2. 7个变革DevOps的工具

以下是7个顶级DevOps工具,将彻底改变DevOps的未来。

2.1 Docker

容器能帮助结合应用程序及其依赖项封装到一个包中,因此开发人员和系统管理员可以放心的将应用程序运行在任何linux系统上,而无需担心系统环境和配置存在差异化。

近几年,一个名叫DOCER的新容器技术获得了业界的青睐,许多DevOps专家和公司都在尝试加快使用这一技术的步伐。许多公司正计划着将他们的应用程序部署方式从虚拟机/物理服务器(VMs/Servers)切换为容器化的部署方式。

使用Docker技术使你能够用容器化的技术创建、部署和运行应用程序。Docker和虚拟机(VM)有些相似,但有所不同,Docker依赖于Linux内核来和主机进行资源隔离。Docker使用命名空间,cgroup,LXC等内核功能实现容器资源和主机资源的隔离,从而提高了应用的性能、减少了应用的大小。

Docker的日益普及归因于这一事实,一些领先的组织在早期采用了这项技术,这里有一些有趣的数据描述了Docker的快速普及情况。

下面是使用Docker的一些利好:

  1. 快速应用部署
    Docker容器拥有对运行时环境的最小要求,这减少了应用部署文件的大小和部署时间。
  2. 可移植性和复用性
    一旦你编译生成好了一个docker image, 它就可以用docker engine部署到任何机器上。比如说,同一个docker image可以部署运行在生产、测试和staging阶段上的机器。
  3. 应用配置 vs 系统环境配置
    docker image中可以集成应用运行环境所需的所有环境配置和应用设置。
  4. 版本控制和组件重用
    你可以跟踪你的容器的版本更新,检查版本差异,如果有需要的话,可以回滚到以前的版本。容器会复用之前使用的layer中组件,这使得它非常轻量化。
  5. 更好的CI/CD管道
    从开发到生产环境,docker为应用程序提供了一个一致的环境,从而使得代码开发、测试和部署管道变得更快速、高效和容易。

我们这样使用Docker

我们所有的应用都有一个基础的docker image,在很短的时间里,我们可以很快地将它们部署到开发/staging/生产环境中,并对这些images进行更新和维护。Docker帮助我们在多个docker容器里对资源进行分配和简单隔离,改善了我们的构建管道,并让我们在构建自身过程中运行完整的合理性测试。

2.2 Jenkins

在开发过程中,代码集成以及监测代码改动造成的回归性功能缺陷是一件即费时又费力的工作。持续集成(CI)于是成了敏捷开发中很重要的一部分。CI作为一个集成性的框架,可以帮助开发人员和测试人员在CI服务器上对代码更新后进行自动测试。

Jenkins是一个用于持续集成部署的开源工具。它可能不像其他独立CI工具(如Atlassian, Bamboo, Teamcity)那样功能强大,但它有一个
庞大的插件库,可实现高度的可扩展和定制化。
下面是使用Jenkins的一些利好:

  1. 软件/应用程序测试
  2. 自动化代码部署
  3. 构建和测试报告失败
  4. 运行Shell脚本
  5. 与许多其他工具集成像Maven,Ant,Docker,Git等。
  6. 像Cron作业自动化任务

这里有一些有趣的数据描述了Jenkins的使用普及情况。

我们这样使用Jenkins

Jenkins允许我们使用其庞大的插件库进行自定制,所以我们使用它来进行完整的构建和部署。在Jenkins的帮助下,我们实现了自动化加载测试环境。Jenkins从GIT版本中拉取最新的提交版本后,自动加载测试环境并执行加载测试。我们也使用Jenkins来实现一键按需性能测试环境的搭建。

2.3 New Relic:应用性能监测

New Relic是一个非常著名的应用程序性能监测工具。它能获取应用程序关键性的性能数据,如应用程序加载时间。使用New Relic你可以监视你的应用程序在世界各地的响应时间以及一些核心的应用组件如关键事务、自定义错误记录、外部服务调用和可伸缩性/负载分析等。

下面是使用New Relic提供的一些监测解决方案:

  1. APM
    帮助你监测应用程序的性能。
  2. 移动设备
    通过提供端对端日志、错误信息以及各角度下的吞吐量等信息,帮你监视和管理iOS/Android应用程序的性能。
  3. 服务器
    提供服务器健康状态的最新信息以及服务器上CPU、内存以及硬盘等状态最新变化的事件通知等。
  4. 浏览器
    对用户在网站上的使用体验提供深入和可操作的优化策略和见解。
  5. 集成环境
    提供自动化,可编写脚本的工具来监控你的网站,关键业务事务和API端点。
  6. 洞见
    收集和分析你的软件资源,并提供可视化的数据见解来提高你的业务增长。

New Relic是应用性能监控市场的领导者,它能指出你应用程序中真正的痛点。

我们这样使用New Relic

New Relic APM 帮助我们诊断出应用程序中的瓶颈,包括耗时最长的查询和模块。New Relic Servers 帮助我们监控服务器的关键指标如CPU、网络、磁盘、内存、进程。New Relic Synthetics 帮助我们监控在全球范围内的私有端点。

2.4  Ansible

在过去的十年来,云计算越来越被大幅地采用。云服务不再是一个简单的存储和检索服务,而是一个运行完整的业务关键程序的有用技术。随着云计算的发展,大大增加了基础设施和环境的复杂性,通过手动更新来管理整个应用程序堆栈和基础设施变得不再可行。作为一个自动化(配置管理工具)平台, Ansible允许你持续不断地定义,建立和维护复杂的云基础设施。

下面是使用Ansible的一些利好:

  1. Ansible是开源的
  2. Ansible能用于以下方面:
    a. 系统配置 b. 持续集成  c. 管理应用部署  d. 编制联排
  3. 无代理架构
    它适用于ssh协议,因此不需要安装远程代理。
  4. 轻量级,易于使用
  5. 简单的配置语言(使用YAML文件)

我们这样使用Ansible

Ansible允许我们集中管理所有的变化。我们也使用Ansible在EC2实例群上安装和更新软件包,如apt-get update,docker, 漏洞检测(shellshock 和 heartbleed)等。

2.5  SaltStack

尽管在配置管理领域,Chef和Puppet同样是市场领先者,SaltStack在各大领先的DevOps组织中还是迅速取得了一席之地。SaltStack使用Python开发, 它基于推式方法如推送配置文件到客户端。SaltStack需要通过主服务器和代理部署到目标服务器进行通信和控制,它使用ZeroMQ通讯层, 这使得它相对比其他的配置管理工具更快。

下面是使用SaltStack的一些利好以及应用场景:

  1. 非常高的性能
  2. 容易扩展和部署
  3. 内部透明,很容易看到内部细节。
  4. 输入、输出和配置一致——都采用YAML

SaltStack的一些特性:

  1. 使用在master和minion之间采用ZeroMQ通讯协议,比ssh协议要快很多
  2. 支持多主机架构,因此能实现快速扩展和容错。

2.6  Splunk

我们发现在服务器和云平台上有大量的可用数据。Splunk是一个可以从这些海量数据中获取洞见的数据平台。Splunk让你紧密关注通常被忽略的数据。Splunk提供的洞见帮助企业分析数据提供决策,从而提高生产力和盈利能力。Splunk在一个可搜索的数据中心捕获、索引和关联实时数据,并由此生成图表,报告、警报、可视化信息。

下面是使用SaltStack的一些利好以及应用场景:

  1. 从任何可能的数据源收集和索引日志和机器数据
  2. 强大的搜索、分析和可视化功能
  3. 提供安全、IT运营、商业分析等方面的应用解决方案
  4. 提供不同规模、安全性和可用性,以适合任何组织
  5. 可用作为一个软件或SaaS解决方案

2.7  Kubernetes

Kubernetes是一个开源的docker编排工具,它是一个轻量级、多重云、可扩展和自愈平台。它可帮助你即时扩展你的应用程序、发布推出新的功能、优化硬件使用资源。Kubernetes是Google于2014年启动的一个项目。

下面是使用Kubernetes的一些关键特性:

  1. 自动bin打包
  2. 水平扩展
  3. 自动发布和回滚
  4. 自愈
  5. 服务发现和负载均衡器
  6. 密钥和配置管理
  7. 存储编排
  8. 批处理执行

我们这样使用Kubernetes

Kubernetes帮助我们减少QA/Prod环境上的支出,因为它使我们能够更好地利用现有的资源。Kubernetes加速构建和部署次数从每周30增长到55。Kubernetes提供开箱即用的部署特性(如滚动更新),我们可以做零停机生产环境部署。

在过去的几年里,docker被大幅度地使用,下面是一些关键统计数据,显示最近被使用的容器联排工具的基本情况。

3. 结论

随着越来越多的公司组织把他们的开发和运营团队紧密结合,使用上述工具,将能帮你更有效地提高产品的交付管道。基于用例场景以及功能特性等,你可以很容易地选择最适合你的DevOps工具。在Welldum Studio, 我们会根据用户的使用场景和用例选用上述合适的工具。通过这种方式,我们显著地减少花费在日常操作任务的时间。我们曾在一个项目上通过使用Kubernetes在docker部署微服务的架构模式将部署时间从20分钟减少为3分钟;我们也使用New Relic来监测应用程序的瓶颈。

4. 关于作者

David, CTO of Welldum Studio

David有10多年丰富的互联网开发和架构经验,曾就职于腾讯无线产品部,负责手机网游的开发工作;后赴美加入硅谷某大型互联网门户网站任全栈工程师,负责网站的整体架构、性能优化以及数据挖掘等工作。欢迎添加作者微信进行技术探讨和交流。

5. 关于Welldum Studio

Welldum Studio成立于2014年,核心团队来自硅谷、BAT、清华大学和中科院,我们提供全栈式技术开发服务。我们的服务范围包括UX/UI设计、网站开发、App开发、微信开发、游戏开发、大数据挖掘和大规模分布式高负载并发系统的设计开发以及性能优化等。我们的官网是 http://www.wlelldum.com, 欢迎咨询交流。

注:本文是Welldum Studio(http://www.welldum.com)的原创文章,版权所有,转载请注明文章的出处。

时间: 2024-11-07 18:50:49

7个变革DevOps的工具的相关文章

DevOps开源工具的三种分类整理

原文地址:http://www.360doc.com/content/16/0322/07/31263000_544210096.shtml 随着开发运维一体化的DevOps运动在国内外蓬勃发展,DevOps相关工具也呈现热闹趋势,在这个言必谈如何实施落地引入工具.建设平台的大环境下,我们今天也来盘点一下DevOps相关工具. 先来看一下业界对DevOps工具的各种分类介绍. 一.DevOps应用交付工具链   ElasticBox是国外一个云应用管理工具,主要用于实现云应用生命周期的可视化管理

15个私有云上的 DevOps 开源工具

原文:http://www.sohu.com/a/136276885_262549 在可维护性,可靠性,效率和安全性方面,DevOps 为私有云在改进操作流程方面发挥着重要的作用.私有云是一个由许多硬件和软件组件组成的复杂系统. 对于任何支持的企业组织,操作流程的自动化和文档记录,规划变更和跟踪应用的更新都是强制性的要求. 同样的方法也适用于云计算的工作负载量.此外DevOps的实践也成为开发者和 QA 团队事实上的标准,特别是当使用私有云作为开发或目标平台时.当然,并不是所有的云操作方面都可以

N个免费DevOps开源工具,没用过,至少应该了解!

文/华为eSDK 在介绍Devops工具之前,先跟随码花来了解下:Devops是个啥? Devops=[Development]+[Operations]. 简言之,Devops主要用于开发.测试.运维之间的沟通.协作与整合,减少开发和运营之间的摩擦,从而快速部署软件或应用程序,并且可以快速检测. 作为小白,你可能就要问了:那,Devops到底是个什么样的存在形式,是个软件还是啥? 错!!!Devops既不是软件.也不是网站.更不是代码,而是一组方法.过程与系统的统称. Devops包含了很多优

DevOps 系列工具之 Puppet 资源简介

资源清单 Puppet 可以管理的所有项目被称为 Puppet 资源.软件包.配置文件和服务都是 Puppet 所能管理的资源.资源指令组合为 Puppet 清单(Manifest)文件.资源是 Puppet 配置管理脚本(清单)的组成部分.资源又以下一些元素组成:类型:将要配置的资源类型(软件包.服务.文件等).资源类型有许多种.标题:配置管理脚本引用资源的方式属性:为资源指定的位置.不同资源类型有不同的属性提供者:与配置管理脚本引用资源方式相关的工具.通常不在资源陈述中说明.Puppet 根

DevOps - 配置管理工具Ansible

配置管理工具 配置管理工具(SCM,Software Configuration Management)可以将代码.软件方式实现的基础设施配置信息保存,也可以根据需求变化反复进行变更. 相关工具包括Ansible.Chef.Puppe.SaltStack等,版本管理工具有Git.Subversion等. 省时省力:通过自动化进行快速设置 声明式:通过配置信息对当前配置对象的具体状态进行明确描述 抽象化:配置信息能涵盖细微的环境差异 收敛性:不管对象的状态如何,最终都会达到期望的状态 幂等性:不管

实现DevOps开源工具整合之Gitlab-ce安装

  文档OARP 序号 分类 姓名 范围要求 1 Owner 林志国   2 作者 林志国   3 审核人     4 审核人     5 审核人     6 批准人       文档修订记录 序号 版本号 修订日期 修订概述 修订人 审核人 批准人 备注 1 V1.0 2018.07.09 创建 林志国                                                                                         目录 文档OAR

最全的DevOps自动化工具集合

版本控制&协作开发:GitHub.GitLab.BitBucket.SubVersion.Coding.Bazaar 自动化构建和测试:Apache Ant.Maven .Selenium.PyUnit.QUnit.JMeter.Gradle.PHPUnit 持续集成&交付:Jenkins.Capistrano.BuildBot.Fabric.Tinderbox.Travis CI.flow.ci Continuum.LuntBuild.CruiseControl.Integrity.Gu

一文解读DevOps工具链 (转)

在列出DevOps 工具链之前,介绍一下什么是DevOps,虽然DevOps这个概念现在还没有标准的定义,但我们可以追溯一下其过去九年的历史发展过程(从2009年-2017年),列出几个相对明确又有所不同不同的定义,从而能够比较全面了解DevOps的内涵. [2009]DevOps是一组过程.方法与系统的统称,用于促进开发.技术运营和QA部门之间的沟通.协作与整合: [2011]快速响应业务和客户的需求,通过行为科学改善IT各部门之间的沟通, 以加快IT组织交付满足快速生产软件产品和服务的目 [

DevOps详解

最近我阅读了很多有关DevOps的文章,其中一些非常有趣,然而一些内容也很欠考虑.貌似很多人越来越坚定地在DevOps与chef.puppet或Docker容器的熟练运用方面划了等号.对此我有不同看法.DevOps的范畴远远超过puppet或Docker等工具. 这样的看法甚至让我感觉有些气愤.DevOps在我看来极为重要,过去15年来,我一直在大型机构,主要是大型金融机构中从事工程业务.DevOps是一种非常重要的方法论,该方法将解决一些最大型问题的基本原则和实践恰如其分地融为一体,很好地解决