ChatOps=AIOps落地+DevOps升级+SRE实践

 ChatOps=AIOps落地+DevOps升级+SRE实践
产品迭代技术升级概念换代 @全体成员   

传统—云计算/大数据—人工智能——……
虚拟机VM—容器Doceker—微服务Microsevice—无服务Serverless—……
@全体成员 群里可以开启全员学习模式

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

AI人工智能技术近几年发展得如火如荼,而随着深度学习技术的成熟,AI也正在逐步从尖端技术慢慢变得普及,AI目前已经可以实现很多功能了,如语音识别、自然语言理解、数据挖掘、计算机视觉等。除此之外,现在又多了一个落地应用——这是一座尚未开采的金矿——AIOps。

2016年,Gartner定义了一个新名词——AIOps,即基于算法的IT运维(Algorithmic IT Operations),这可能和你的第一反应Artifical Intelligence Operations有所偏差,不过本质上意义是一样的。Algorithmic IT Operations源自业界之前所说的ITOA(IT Operations and Analytics),算法的效率提升了 AIOps 的价值,通过持续学习,智能运维将把运维人员从纷繁复杂的告警和噪音中解放出来,运维插上了机器学习和算法的虎翼,将变得更自动化、智能化。Gartner 的报告宣称,到 2020 年,将近 50% 的企业将会在他们的业务和 IT 运维方面采用 AIOps,远远高于今天的 10%。
 

ChatOps=AIOps落地+DevOps升级+SRE实践_第1张图片


智能运维的必要性相信不必多言,如今的IT基础架构相比于前五年,前十年,规模和复杂度都呈倍数增长,服务数量更是呈指数增长,早期的运维方式已经无法负荷愈加沉重的工作量,而人工智能的发展给运维带来了契机,AIOPS应运而生。


从起初的开发方式说起

插播一条IT 运维发展历程的广告

1. 人工运维时代
初期阶段IT基础设施通常处在小规模状态。几台至几十台机器的规模,足以满足业务需求。早期一般企业采用的都是人工运维,决策分析几乎完全由人工完成。

2.自动化运维时代
随着云时代到来,IT基础设施迅速发展成几百上千台服务器,更多的业务系统上线,因此,各类孤岛式的运维管理工具也开始上线,提升运维效率。

3. DevOps时代
DevOps是一组过程、方法与系统的统称,企业希望将原本笨重的开发与运维之间的工作移交过程变得流畅无碍,便可借助DevOps来完成,DevOps的目标是流程的自动化——让代码完成过去手工的工作,从而大大节省成本。

4. AIOps时代
AIOps智能运维,用机器学习方法做决策分析,算法的效率提升了 AIOps 的价值,通过持续学习,智能运维将把运维人员从纷繁复杂的告警和噪音中解放出来。

5、ChartOps ……

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

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

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

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

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

应运而生的 DevOps

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

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

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

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

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

  • 实现持续快速交付。

  • 能够降低人力成本。

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

ChatOps=AIOps落地+DevOps升级+SRE实践_第2张图片

从自动化运维到 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 承载的工作。

ChatOps=AIOps落地+DevOps升级+SRE实践_第3张图片

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

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

ChatOps=AIOps落地+DevOps升级+SRE实践_第4张图片

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

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

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

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

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

ChatOps 的实践经验

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

ChatOps=AIOps落地+DevOps升级+SRE实践_第5张图片

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

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

ChatOps=AIOps落地+DevOps升级+SRE实践_第6张图片

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

ChatOps=AIOps落地+DevOps升级+SRE实践_第7张图片

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

AIOps智能运维如何做好?
清华计算机系副教授,智能运维算法专家裴丹教授为我们提出了如下见解。
机器学习本身有很多成熟的算法和系统,及其大量的优秀的开源工具。如何成功的将机器学习应用到运维之中?还需要以下三个方面的支持:
1.    数据。互联网应用本身具有海量的日志。需要做优化存储。 数据不够还需要自主生成。
2.    标注的数据。日常运维工作会产生标注的数据。 比如出了一次事件后,运维工程师会记录下过程, 这个过程会反馈到系统之中, 反过来提升运维水平。
3.    应用。运维工程师是智能运维系统的用户。用户使用过程发现的问题可以对智能系统的优化起正向反馈作用。

总结

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

附录:AIOps落地谁家?

Google | 数据中心人工智能模型
早在2014年,人工智能就在IT运维领域有所应用,在Google,人工智能是提高各个大型数据中心效率的重要工具。
Google使用“类神经网络”技术分析其众多数据中心的工作情况,并根据所得数据进行维护。这个“类神经网络”的核心部分其实是一些算法,可以识别模型(patterns),并根据相应模型做出判断,即Google使用这些算法管理数据中心。它们无法超越人脑,但在某些情况下却更快,更全面。
从具体来看,每隔几秒,Google就会收集数据中心所有的处理信息,从设备耗能多少,到硬件冷却到室温需要多少水无一不包括。Google数据中心青年工程师Jim Gao就是使用这些数据构造人工智能模型,在不同条件下预测数据中心效率。如果数据中心的效率低于模型预测,公司就会收到相关信息。这个模型,同样可以帮助Google决定何时管理数据中心的设备,比如何时清理热交换器,提高设备冷却性能。这样一来,这个模型具有辨别功能,解放了Google的工程师们,也大大提高数据中心的运维效率。

百度 | 基于日志 trace 的智能故障定位系统
结合机器学习技术的进步,百度实现了一套基于日志 trace 的智能故障定位系统及其背后的一套技术方案,最终能够实现 WQPS/sec 的 PV 根因定位能力,并能够根据根因做统计上的多维度汇聚,该系统应用于百度核心搜索系统,极大的提升了重大异常问题定位效率。

阿里 | 机器学习在大规模服务器治理复杂场景的实践
我们今天面临的问题,云、支付和交易的程序通过虚拟化打散在百万级的服务器上, 面对如此庞大的基础设施, 传统的运维方法受到了极大地挑战。海量告警无法及时处理、脏数据影响定位、批量问题如何提炼。
在无高质量样本的情况下,通过关联分析和异常检测算法,构建算法闭环。自动迭代,让批量问题的预测精度不断提高。打通故障定位和装机系统,提供从发现 ->定位 ->跟踪 ->修复的一站式解决方案。

各个行业的企业正在采用AIOps——银行、娱乐、交通、零售,甚至政府。从运维的发展角度看, AIOps 是必然趋势,将为企业带来最直接最深远的价值。

更多应用请参考:宜信正式开源其AIOps落地三大利器 -  http://bigdata.51cto.com/art/201709/551310.htm
文献资料参考:AIOps是什么?它与AI有什么关系? http://www.infoq.com/cn/news/2017/06/AIOps-ai-relation

你可能感兴趣的:(ChatOps=AIOps落地+DevOps升级+SRE实践)