ChatOps = AIOps 落地 + DevOps升级?

2017-09-14 16:14:11 恩惠 前沿技墅

       一波未平,一波又起。技术领域不断兴起的新概念让人应接不暇,而新概念必然是为了解决现有工作场景中的问题而提出的。相信每一次新的看见都会为我们的工作带来惊喜。说AIOps是必然趋势,那DevOps是否就已过时了呢?ChatOps又是什么?通过本文,让我们一起来探讨这其中的关系,看见隐藏在我们工作中的惊喜!


从起初的开发方式说起


       起初,老一辈程序员想要开发一个软件,需要了解软件开发的各个环节,从编写需求文档、软件开发、测试、部署到运维技术支持等,一个人的工作中可能会涉及软件生命周期中的各个方面。


       后来,随着客户需求的不断增加,软件开发需要更快的速度,实现更多功能,有更好的用户体验。起初的工作方法对于程序员们来说已经跟不上客户的需求节奏了,因此,需要明确划分程序员所负责的工作模块,以提高工作效率。于是,有了产品、开发、测试、运维等不同的角色。俗话说“术业有专攻”,每个岗位的人员在自己所属的方向上深入研究探索,一定能更加高效地开发出用户体验更好的产品。


       那时,各角色部门之间交流不多,只是在上一级团队完成工作时将任务传递给下一级。比如,产品人员完成软件需求设计后,拿给开发人员进行开发。这种瀑布式的开发流程理论上很和谐,除了比较单线程工作,其他好像没什么问题。但在后续的开发过程中,人们的需求不断增加,需要随时将新的需求加进开发中,又或者最开始定下的需求后面会随时修改。这使得很多软件项目很容易夭折。


       为了解决瀑布式开发流程所带来的问题,人们提出一些思想:敏捷开发、精益开发等。总的思想是加强内部沟通协作、消除浪费提高生产开发效率、持续快速交付等。这些思想促进了开发团队成员(业务分析师、架构师、前端开发人员、后端开发人员等)之间的沟通协作,提高了产品的开发效率。


       产品开发完成并测试通过之后,后续的上线部署和维护工作便交到了运维人员手中。如果说敏捷精益开发解决了开发团队之间协作的问题,那么运维和开发之间的信息鸿沟又如何填平呢?DevOps应运而生!


应运而生的DevOps


       DevOps 是来源于 Development (开发)和 Operations(运维)的一个组合词,是一系列过程、方法与系统的统称,旨在促进开发、测试和运维人员之间的沟通与协作。


       简单来说,它是通过引入一系列的工具,通过三种不同角色成员间的协作而实现的一种自动化的工作模式。借用乔梁老师的观点,这里可以概括为两个关键的方面:

       •      全局观,从软件交付的全局出发,加强各角色之间的合作。

       •      自动化,借助支持校本化、无需人机交互的管理工具。


       这种工作方式带来的好处显而易见:

       •      实现持续快速交付。

       •      能够降低人力成本。


       在很大程度上,DevOps 更多是指开发群体之间的一种协作模式,它不是一个角色的称呼,也不是一个部门或团队的称呼,而是一种思维方式、一种工作理念、一种能力!遵循这种理念,就有了这种能力,开发和运维团队之间的障碍便被消除了,工作没有堆积,开发的交付和运维的部署维护被放进了同一个时间盒子里,产品开发上线和运维的效率将得到很大提升。


图 1


从自动化运维到AIOps


        “应运而生的DevOps” 一节中曾经说到,DevOps是需要借助一系列的工具,通过开发和运维之间的沟通协作而实现的一种自动化的工作模式。如果说DevOps是一种工作模式或者是一种工作理念,那么,自动化运维可以说是该理念在其中一个关键点上的落地。


       自动化运维的实现包含很多方面,如资源性能监控和应用性能监控、批量运维服务器、日志集中分析、持续集成和发布、安全漏洞扫描、自动部署和备份等。每个方面都有相应的自动化运维工具可以使用,比如开源的性能监控系统Zabbix、批量运维工具SaltStack及开源的日志分析工具ELKStack等。也可以基于这些自动化运维工具搭建适合自己整体工作环境的自动化运维平台。


       基于自动化运维平台的DevOps当前已经帮助一些企业提高了生产效率,减少了流程上的失误和人员上的疏忽。然而,自动化运维还只是停留在帮助我们发现故障、产生预警、根据人工输入参数自动部署备份的阶段,而问题的定位和处理还是需要运维人员亲自来解决。随着云计算、微服务的普及,业务指数级的增长,当我们遇见报警数繁多时该怎么处理?当一类故障发生时,我们是否可以快速凭借我们的经验来定位问题呢?如果是那些初来乍到、脑袋里毫无经验的运维人员来解决的话,是不是会花费更多的时间?


       随着人工智能的兴起,以上问题是否可以通过AI+Ops(即AIOps,智能运维)实现呢?Gartner Group提出的AIOps中的AI,其实是 Algorithmic IT的缩写,而不是很多人以为的 Artificial Intelligence的缩写,但不管是哪种写法,都意味着利用机器学习算法对线上运行的真实数据和日志等作出故障预判,从而执行相应的运维操作。


       AIOps可以说是自动化运维的升级版,所以并非DevOps的取代者,而是DevOps更高级别的落实者。


ChatOps简介


       ChatOps 的理念由 DevOps 延伸而来,又结合AI(人工智能)落地,可以说是人工智能和新型工作理念结合的产物。它也是一种新型智能工作方式,帮助团队利用 ChatBot 机器人使成员和各项辅助工具连接在一起,以沟通驱动的方式完成工作。同时解决人与人、人与工具、工具与工具之间的信息孤岛问题,从而有更高的工作效率和更好的协作体验。


       2013 年,GitHub 在其内部最早开始推行 ChatOps,希望能以聊天的方式更容易更快速地去完成 DevOps 承载的工作。


图 2


       ChatOps 以聊天室(沟通平台)为中心,通过一系列的机器人去对接后台的各种服务,工作人员只需在聊天窗口中与机器人对话,即可与后台服务进行交互,整个工作的展开就像是使唤一个智能助手那样简单自然。


       GitHub 团队内部实现的 ChatOps, 与一个叫作 Hubot 的机器人框架密切相关,Hubot 提供很多聊天机器人所需要的基础设施,借助 Hubot 框架能比较方便地和自己编写的功能或自己的系统对接。目前,Hubot 已经发展出了较好的生态圈,有很多开源插件可以借用。


图 3


       ChatOps 站在巨人的肩膀上发展,也为工作带来了显而易见的好处:

       •      移动友好。只需要在前台与预设好的机器人对话即可完成与后台工具、系统的交互,在移动环境下无须再与众多复杂的工具直接对接,大大提升移动办公的可行性。

       •      DevOps文化打造。用与机器人对话这种简单的方式降低 DevOps 的接受门槛,让这种自动化办公的理念更容易地扩展到团队的每一个角落。

       •      公开透明。所有的工作消息都在同一个聊天平台中沉淀并公开给所有相关成员,可以消除沟通壁垒,工作历史有迹可循,团队合作更加顺畅。

       •      上下文共享。减少因工作台切换等对消息的截断,保证消息的完整性,让工作承接有序,各角色,各工具都成为完成工作流中的一环,打造真正流畅的工作体验。


ChatOps 的实践经验


       ChatOps 主要由四个部分组成:自动化的理念、一个沟通承载平台、一系列连接人与工具的机器人,以及一些后台工具和服务(基础设施)。它不仅可以应用在技术团队中,还可以发展为适应不同种类团队的方法模型,这也是 ChatOps 这个概念提出的背景之一。随着全行业的发展和人力成本的攀升,ChatOps也可以说是应用于全行业的DevOps。


图 4

 

       国外早期的工作沟通工具 HipChat,或新秀 Slack 都是作为 ChatOps 承载平台的好选择,在中文环境下,则可选择 BearyChat(倍洽)等。除上文介绍过的 Hubot 外,还有一些比较成熟的机器人框架,如 LITA、ErrBot 等。至于机器人后面对接的具体服务则更加数不胜数,例如一个工程师文化驱动的团队,不仅可为开发人员接入 GitHub、Jenkins 等工具,也可为产品运营接入 Trello、Email 等。


       这些被接入的工具借助机器人这个载体,完成了内部提醒消息向同一个消息平台中的实时同步,并因为这种并行的同步行为的发生,而使得团队原本散落在不同第三方服务中的消息在同一个消息中心——即团队的沟通平台——中形成了一个按照时间顺序汇总的消息流,帮助团队各个成员随时且全面地了解团结各项任务的进度或安排,真正实现了团队消息的透明共享。


图 5


       除对接已有的产品,团队也可使用 Hubot 等自定义机器人框架对接团队内部开发的一些具体的功能,如直接通过命令在聊天窗口查询待上线列表,实时了解 CPU 的使用状况等。


图 6


        机器人这个概念在团队沟通环节中产生,使得团队的协同和自动化工作进入了一个崭新的时期,不仅带来了新的交互方式——使得团队成员在不离开沟通窗口的前提下即可完成大部分日常工作,不因窗口切换而导致工作时间的切割和工作精力的分散,贯彻了DevOps的工作理念——增强了团队协作并让更多的工作趋向于自动化,而且为AIOps逐渐普及和落地提供了良好的平台和基础。


总结


       DevOps是为了解决瀑布式开发流程存在的问题而提出的一种工作理念。这种工作理念强调,通过借助自动化工具和不同角色之间的沟通协作来实现敏捷精益开发、持续交付和高效运维,提高产品开发上线及维护的效率。而通过使用自动化工具进行的自动化运维可以看成是DevOps理念落地的关键之一。在这个互联网业务量飞速增长、人工智能兴起的年代,我们完全可以考虑将自动化运维进一步发展为AIOps。而ChatOps又恰恰是人工智能技术和DevOps协作理念一个很好的结合,也势必为AIOps和DevOps更好地融合普及加添助力!让我们一起来期待未来开发运维新场景带来的惊喜吧!


参考资料

[1] http://www.cnblogs.com/jetzhang/

p/6068773.html

[2] http://www.infoq.com/cn/articles/

devops-not-legend

[3] 赵成,郭蕾.为什么说运维的未来必然是 AIOps?.微信公众号InfoQ


本文相关图书《ChatOps智能运维》即将面世,敬请期待!


点击 阅读原文 可以看到人工智能领域里程碑式著作《智能Web算法》的最新版。



长按二维码,关注“前沿技墅”,抢先接收新知、了解书讯、结识大咖。

任何伟大,无不起步于不经意间,你可以选择不经意错过,或不经意开始……