开发者学堂课程【阿里云 ChatOps 实战:什么是 ChatOps】学习笔记,与课程紧密联系,让用户快速学习知识。
课程地址:https://developer.aliyun.com/learning/course/536/detail/7283
什么是 ChatOps
内容介绍:
一、工作流程与步骤
二、GitHub Workflow
三、ChatOps
四、实现过程
一、工作流程与步骤
钢铁侠的智能管家系统 J.A.R.V.I.S 能够独立地思考并且帮助主人处理事务,J.A.R.V.I.S 会自动对数据进行查询并分析数据,生成所想要的内容,带来了自动化。
在传统的流程中,重启一台 VM 需要先打开终端,并且通过 SSH 登录到 VM,在这个过程中如果没有得到认证,还需要输入密码,登录成功后,需要执行 reboot 命令,等待命令成功后再次通过 SSH 登录到 VM,输入密码,完成后续操作。此过程需要七步操作。
在 ChatOps 的流程中,重启一台 VM 需要先打开聊天框,如果与其他团队已经进行沟通则可以省略这一步,然后输入重启口令,等待执行后查看返回信息。而此过程相对于传统流程更加简单,只需要四步操作,但此时是一直与其他团队进行沟通的,第一步可以忽略不计,所以实际的操作只有三步。
二、GitHub Workflow
GitHub 的工作大量依赖于智能机器人和 ChatOps:
60%的员工在家远程办公,新员工入职培训便是查看其他人聊天,感受别人是如何工作的。
使用机器人执行各种运维脚本,将所有需要重复、操作繁琐的事情交给机器人来完成。
在聊天工具中和同事沟通、运维、查看监控等,所有相关人员都可以看到具体的情况。
三、ChatOps
(1)含义
ChatOps 是以聊天的方式来完成具体的运维工作,以聊天室和沟通平台作为中心,通过一系列的机器人去对接后台的服务,工作人员只需要在聊天窗口中与机器人进行对话,就可以与后台的工作人员进行交互。整个工作的展开类似于使用智能助手一样简单自然。
(2)困境
目前的部署方式的问题所在:
1、人力成本越来越高
2、运维相关工作枯燥乏味:靠工程师手动通过 SSH 或者第三方工具来部署服务的方式枯燥乏味,容易出错。
3、运维相关工作部署时间较长,还需要全程守候
(3)优势
1、ChatOps 的优势在于透明、高效、移动友好、任务自动化。
2、透明
当工作依赖于 ChatOps 时:
所有的沟通、具体的场景、上下文都在沟通过程中共享,过程透明,任何一个人都可以通过查看历史记录来快速切换进入相应的场景,以此来简化沟通压力,降低沟通成本。
整个操作的过程透明,沟通相关方明确,可以快速找到各部分的负责人。
整个流程的进度透明,各相关方可以合理安排进度。
3、高效
当工作依赖于 ChatOps 时:
沟通的成本降低,所有相关方可以参与流程,更加高效。
减少场景的切换,降低场景切换的成本,无需在终端、浏览器、聊天工具中不断切换。
新人可以通过查看聊天记录来快速切换场景,了解在什么样的场景下使用什么样的命令,同时由于将大量的命令都封装在机器人简短的命令中,新人可以快速地进入状态。
4、移动友好
当工作依赖于 ChatOps 时:
聊天工具提供了移动客户端,只要手机在手,可以在任何时间,任何地点进行运维。
5、任务自动化
当工作依赖于 ChatOps 时:
将单调、容易出错的任务切换为机器人自动执行,降低出错的可能。
改进持续交付的流程。
机器人执行的命令由团队内部的专家编写,为每一个操作者赋予专家的能力。
四、实现过程
1、ChatOps Workflow
ChatOps 是一个完整的工作流:ChatOps 主要由 DevOps Team(DevOps 团队、ChatRoom(聊天工具)、Bot(机器人)、Infrastructure(基础设施)四个部分组成。
ChatOps 源自于 DevOps 团队在聊天室中对机器人的操作,机器人会根据命令对基础设施进行对应的操作并获取反馈,获取反馈后,通过聊天工具反馈给 DevOps 团队,DevOps 团队根据反馈继续执行各项工作。在此过程中,最重要的在于选择聊天工具及机器人,对于基础设施可以通过编程来实现。
2、聊天工具
Slack:国外强大的团队协作聊天工具,提供丰富的接口。BearyChat (倍洽):国内的类似 Slack 的产品。
Rocket.Chat:开源免费的聊天工具,可以在企业内网部署。
dingTalk(钉钉):阿里巴巴旗下的企业沟通工具,支持的机器人不完善。
3、Bot
目前市面上有较多的 Bot 机器人能够帮助我们构建 ChatOps 工作流:
Hubot: Hubot 是 Github 开源的高度自定义化的机器人且基于 JavaScript/CoffeeScript 的编写。
Lita:Lita 是基于 Ruby 的 Lita.io 开源的机器人
Err:基于 Python 的机器人框架
4、最后选择的是倍洽与 Hubot 相结合的方式