本文翻译自文章 To Boost DevOps, Try ChatOps,文中用简单易懂的方式介绍了 ChatOps 的发展和价值,由 OneAPM 工程师编译整理。

当我们谈论 DevOps 时,总是围绕着「自动化」,「协作」和「工具」这几个主题。所以一旦有一个概念,能够综合以上所有特征,为现在的团队提供更好的沟通和协作方式,也不足为奇。如今团队可以通过机器人的帮助,进行团队聊天,共享信息,集成其他工具的通知,从而实现协作。如果将所有这些结合起来,创新型团队现在可以进行沟通驱动的开发和运营,这就是ChatOps。

通过创建一个新的沟通渠道,自动化常见任务,方便发布实时信息,ChatOps 可以帮助团队缩短反馈环节,提高协作能力,使团队运作得更快和更有效率。

A brief history of chat

聊天工具发展简史

通过团队聊天来进行实时协作并不是新鲜事。 这种类型的互动可以追溯到互联网早期和 BBS 时期(Bulletin Board Systems)。 用户通过拨号式调制解调器连接到远程计算机,请求与系统运行者进行实时聊天。通过文本实现实时远程交流、交换信息,在这当时,是非常新颖的概念。

随后,IRC(Internet Relay Chat) 的网络聊天协议诞生了,通过相互连接的聊天服务器网络,可实现多人实时畅聊。IRC 网络也让早期的系统管理员、DevOps 人员以及运维管理者学会了许多至今仍然沿用的行业技能。 他们学会了如何通过 IP 网络连接电脑,通过黑客攻击强化新型的 Linux 系统,通过 Eggdrop 机器人自动化任务,通过自动通知保持互通,甚至一起玩休闲游戏。现在的 DevOps 团队仍然在做这些事情,但是有 Slack、HipChat 之类的新兴工具为他们提供移动设备与常见 DevOps 工具内置集成的通用支持。

新瓶装旧酒

尽管实时聊天工具不断改变,使用它们的主要原因还是如旧:

  • 作为一个既可以同步,也可以异步的沟通渠道;对于分散式的人员与团体卓有成效。
  • 任务自动化,比如发送提醒,提供更新和通知;常见的工作流工具能轻易地与 webhook 实现集成。
  • 带有时间戳的对话、事件和通知的日志记录;对于根本原因分析和历史案例学习很有帮助。
  • 为团队实现信息的快捷传播——包括链接,截图,甚至最新的猫咪图片;实时聊天通常能够提供最新的信息。

虽然这些好处都很重要,不过却是 ChatOps 的次要价值,而其真正价值在于,通过协作缩短反馈环节。DevOps 的目的在于快速行动和学习,ChatOps 将这一概念得以实现,并应用到日常实践当中。

想象一下:一个应用程序崩溃,发出一个告警,并通知负责支持的值班工程师。工程师在聊天室中回复,她正在解决,如果有需要,会要求帮助或索要其他信息。之后,聊天室中的成员一起协作,找出错误,创建修正方案,进行测试,然后投入生产环境。解决问题之后,关闭告警。这个场景中的每一步都可以通过聊天工具进行捕捉,且大部分都是自动化的。参见以下类似场景:

截图显示该团队通过 Cloud Insight 将来自 Ai 告警通知通过事件流功能进行展示(该功能即将上线),并且试图让这种展示更为简单,因为它们很重要,可以触发行动和讨论。工程师们会讨论各自的重点领域,和回复来自其他团队的请求。这样做的意义在于,团队可以聚集在同一个地方,进行讨论和协作,而当有问题时,其他人也可以轻易找到他们。对高度分散式的团队,在需要的时候,迅速得到问题的答案,是很重要的。

ChatOps 的兴起很大程度上要归功于 GitHub 近期的工作和倡议,但其他领先的技术品牌也有所参与。 Box 公司关于如何使用 ChatOps 的博客文章 「Securing ChatOps to Enable DevOps」,PagerDuty 公司的 「What Is ChatOps and How Do I Get Started?」,以及 VividCortex 公司的 「ChatOps at VividCortex」,都提供了如何使用 ChatOps 的实践和见解。

集成是 ChatOps 中重要的新元素。主流的聊天平台,如 HipChat、Slack 都可以方便地集成其他工具,比如来自 Jira,PagerDuty,GitHub 的通知,触发条件和事件。这很关键:DevOps 团队最不需要的就是另一个“虚拟协作”工具,将对话和信息隔离到另一个地方,使查询相关信息变得更加费力。此处,真正的目标是将来自这些工具的所有信息都集成到同一个地方,所有人都可以使用。

机器人也有感情!

一旦聊天集成设置完成,便可配置一个「聊天机器人」协助团队工作,尤其是重复的任务或通知工作。 机器人可以是对话的一部分,提供当前情况的有效背景信息。其中最著名的机器人是 GitHub 的 Hubot,拥有一系列预配置的行为和命令来帮助完成一些常见的 DevOps 任务。

聊天机器人作为一个用户出现在聊天室里,可以响应带有 @mention 标注的命令。借此,可以让机器人为团队完成任务,比如开始部署,提供被监视程序的状态,或者执行远程命令。这种类型的交互将 DevOps 进程和工具直接带入对话,让每个人都能看到并参与讨论。

聊天机器人甚至能帮助舒缓压力时期的紧张。例如,聊天机器人可以根据员工咒骂的次数,生成一些欢迎笑脸,或者根据搜索词汇发送随机的 gif 动图,或生成简单的小游戏。几乎一切皆有可能,随着时间的推移,这些行为可以为每个聊天机器人定义独特的个性。

ChatOps: 如此简单,人人都能使用

如果你还没有使用过这些工具,可以从 SlackHipChat 开始尝试。他们都有免费的产品,对一些团队而言应该已经足够。还可以试试 GitHub 的 Hubot,Hubot 开创了借助机器人的聊天自动化新时代,并且设置非常简单。

ChatOps不仅赋予团队全新的协作方式,还能提高整体情境感知,甚至提高你的打字技能。请一定善加利用你的新工具。

Cloud Insight 集监控、管理、计算、协作、可视化于一身,帮助所有 IT 公司,减少在系统监控上的人力和时间成本投入,让运维工作更加高效、简单。本文由 OneAPM 工程师翻译整理,想阅读更多技术文章,请访问 OneAPM 官方技术博客
本文转自 OneAPM 官方博客

提升 DevOps 效率,试试 ChatOps 吧!的更多相关文章

  1. atitit.提升开发效率---使用服务器控件生命周期 asp.net 11个阶段 java jsf 的6个阶段比较

    atitit.提升开发效率---使用服务器控件生命周期  asp.net 11个阶段  java jsf 的6个阶段比较 如下列举了服务器控件生命周期所要经历的11个阶段. (1)初始化-- --在此 ...

  2. Atitit. 提升开发效率与质量DSL ( 3) ----实现DSL的方式总结

    Atitit. 提升开发效率与质量DSL ( 3) ----实现DSL的方式总结 1. 管道抽象 1 2. 层次结构抽象(json,xml etc) 1 3. 异步抽象promise 1 4. Ide ...

  3. atitit.提升开发效率---MDA 软件开发方式的革命(3)----自动化建表

    atitit.提升开发效率---MDA 软件开发方式的革命(3)----自动化建表 1. 建模在后自动建表 1 1. 传统上,需要首先建表,在业务编码.. 1 2. 模型驱动建表---更多简化法是在建 ...

  4. atitit.提升开发效率---mda 软件开发方式的革命--(2)

    atitit.提升开发效率---mda 软件开发方式的革命--(2) 1. 一个完整的MDA规范包含: 1 2. 一个完整的MDA应用程序包含: 1 3. MDA能够带来的最大的三个好处是什么? 2 ...

  5. atitit.提升开发效率---mda 软件开发方式的革命

    atitit.提升开发效率---mda 软件开发方式的革命 1. 软件开发方式的革命开发工具的抽象层次将再次提升 1 2. 应用框架和其实现相分离 2 3. 目前的问题模型和代码不同步 2 4. MD ...

  6. atitit.提升开发效率---动态语言总结

    atitit.提升开发效率---动态语言总结 ruby,python 都不错,就是语法不好, 应用不广泛,文档,工具都非常少,不推荐... php狠不错,就是高级特性不行.. 看来子有.net/jav ...

  7. synergy帮组提升办公效率

    这个synergy确实很不错哦,当你在办公室拥有两台或者多台电脑的时候,放在面前多台显示器,多个鼠标,多个键盘,但是你的桌面上,是不是多出了些你不需要看到的键盘或者鼠标?至少我是这样子的,我希望多个显 ...

  8. atitit.提升研发效率的利器---重型框架与类库的差别与设计原则

    atitit.提升研发效率的利器---重型框架与类库的差别与设计原则 1. 框架的意义---设计的复用 1 1.1. 重型框架就是it界的重武器. 1 2. 框架 VS. 库 可视化图形化 1 2.1 ...

  9. DirectX11 With Windows SDK--19 模型加载:obj格式的读取及使用二进制文件提升读取效率

    前言 一个模型通常是由三个部分组成:网格.纹理.材质.在一开始的时候,我们是通过Geometry类来生成简单几何体的网格.但现在我们需要寻找合适的方式去表述一个复杂的网格,而且包含网格的文件类型多种多 ...

随机推荐

  1. Android开发之显示进度对话框

    一般有两种对话框,一个是普通的简单的please wait对话框,另一种是创建显示操作进度(如下载状态)的对话框. 第一种普通的效果图如下: 第一种普通的实现代码: public void onCli ...

  2. Andriod中WebView加载登录界面获取Cookie信息并同步保存,使第二次不用登录也可查看个人信息。

    Android使用WebView加载登录的html界面,则通过登录成功获取Cookie并同步,可以是下一次不用登录也可以查看到个人信息,注:如果初始化加载登录,可通过缓存Cookie信息来验证是否要加 ...

  3. javascript 【js‘s word】

    http://mp.weixin.qq.com/s?__biz=MjM5MzY2NDY0Ng==&mid=214013689&idx=1&sn=21e03f6c7bf73893 ...

  4. [PDF] PDFOperation--C#PDF文件操作帮助类 (转载)

    点击下载 PDFOperation.rar 这个类是关于PDFOperation的帮助类,主要是实现C#PDF的文件操作,具体实现功能如下1.构造函数2.私有字段3.设置字体4.设置页面大小5.实例化 ...

  5. Java写一个简单学生管理系统

    其实作为一名Java的程序猿,无论你是初学也好,大神也罢,学生管理系统一直都是一个非常好的例子,初学者主要是用数组.List等等来写出一个简易的学生管理系统,二.牛逼一点的大神则用数据库+swing来 ...

  6. pom.xml中<dependency>

    当想下载jar包时,需要在pom.xml追加<dependency>即可. 通过如下餐叙: 如下图 http://mvnrepository.com/artifact/cglib/cgli ...

  7. [HttpException (0x80004005): Failed to Execute URL.]之画蛇添足之痛

    最近很悲惨,发布的一个mvc站点,所有的静态内容,如js.css.图片都不能正常加载,服务器给出的响应是一个如下的异常黄页: Server Error in '/ua' Application.Fai ...

  8. swift 关于闭包和函数

    调用函数,有闭包参数时: 函数的实现中:闭包为参数时,有参数返回值类型: 调用闭包时,传入参数 调用函数时:闭包为参数,是闭包的实现,当闭包为最后一个参数时,可写在参数括号外面 即===>函数在 ...

  9. C#一些小技巧(二)

    教你们怎么改配色方案,因为本人智障了很久,每次想改颜色的时候都会看到一大圈的选项,难以琢磨,但是智障了那么久终于被我找到了所有的关联. 首先,要告诉你们的是,其实C#里面要改的东西只有那么几个,但是注 ...

  10. 菜鸟日记之JSP二 内置对象的理解

    ·最近学习JSP了,对编程和网络又有了一些理解.无论是现实中人与人的交流,还是网络世界的接触,都是在相互表达自己的意思让别人知道,并理解对方的信息.然后我们知道的事情不断的变多,会又交杂出新的内容,不 ...