11 月 19 - 20 日 Apache Pulsar 社区年度盛会来啦,立即报名! 了解详情
写点什么

当 DevOps 遇见 AI,智能运维的黄金时代

  • 2017-07-17
  • 本文字数:5100 字

    阅读完需:约 17 分钟

“弱人工智能”(Narrow AI), 是在某些特定领域高效完成任务的专用人工智能, 比如识别图片中的内容或是通过搜索大量医学临床案例为医生提出治疗建议的专用人工智能。目前可实现的人工智能的本质是,人来提出目标,由机器分析大量数据人来高效找到答案。

人工智能应用的分类

很多情况下人工智能无法给出 100% 正确的回答(其实人类也是一样的),如何找到人工智能善于解决的问题就成了首要的任务。

人工智能应用可以分成三类:

  • 核心业务,失败不可接受。医疗,银行,法律。
  • 核心业务,失败率可接受。自动驾驶,自然语言理解。
  • 非核心业务,对失败不敏感。用于改善用户体验。

从人工智能发展和应用的过程来看,通过对感知的模拟,帮助人类做决策,直到完全代替人类处理大量重复的数据方面的工作

另一方面,由巨大商业利益推动的人工智能将很快成为现实,自动驾驶商业应用会带来客观的商业价值比如:

人为交通事事故减少,保险费降低,无人参与驾驶,用车成本减少到五分之一;

按需用车,汽车保有数量会减少到三分之一,导致车商业模式变革;

车辆流量变化,大量节省道路和停车场的面积,导致城市规划改变。

人工 + 智能才是最佳的组合方式

卡斯帕罗夫和李世石真的败给了机器吗?

(IBM 的深蓝和谷歌的 AlphaGo)在人类选手的对面,是人工智能汇集了所有人类智慧和经验的智能流算法,如果是这样的话人类必败无疑。

但反过来想如果人类也有一个人工智能辅助来比赛呢?那胜负就未尝可知了。

卡斯帕罗夫在被深蓝击败后,发起了自由式国际象棋比赛,可以使用人工 + 智能(半人马选手)方式参与比赛,由人工智能给出建议,人类来决定是否采纳建议。2014 自由式国际象棋对抗比赛人类赢得了 42 场半人马选手赢得 53 场,当前最优秀的国际象棋团队都是半人马选手由人类和人工智能组成。既然人工智能可以帮助人类成为最优秀的象棋选手,那么可以推测人工智能也能帮助人类成为最优秀的医生、飞行员、法官 和教师甚至是运维和开发人员。

人工智能的工作方式和解决的问题种类

上图为典型的机器学习流程(图来源于 Natalia Konstantinova 博士的博客)

典型的机器学习通过无监督学习和监督学习,抽取特征,再通过机器学习算法,

实现基于通用特征分组,得出预测模型,通过预测模型为新数据数据打标签。

机器学习可以解决以数据为基础四类问题:逻辑推理预测、规划师、沟通者、体验与情感

由 Ajit 的一篇博客中总结到人工智能善于解决的 12 种问题

  1. 领域专家:模拟现场专家给出建议
  2. 领域扩展:给出新见解新方法。
  3. 复杂规划师:比非 AI 算法易于优化
  4. 更好的沟通者:智能代理,自动语言翻译
  5. 新感知能力:机器视觉产生了自主车辆
  6. 企业 AI:改进业务流程
  7. ERP AI: 通过认知系统增强 ERP
  8. 跨界影响预测:比如自主车辆导致司机岗位需求降低;人为交通事事故减少,保险费降低;按需用车消费导致车企商业模式变革,车辆流量变化,导致城市规划改变。
  9. 目前算法和硬件问题无法很好解决的问题:语音识别达到人的能力。
  10. 更好的专家系统:通过资料无监督学习获取知识
  11. 超长序列模式识别:时间序列预测模型
  12. 情感分析:通过行为预测人类情感的变化

运维发展的历程与人工智能的作用

运维行业经历了初始、专业化、工具化、平台化、云化和智能化过程。从手动运维阶段基本没有数据,到规模化结构化数据和智能化非结构化数据的趋势。

人工智能发展初期充当辅助人类的助手角色,以增加销售额,提升用户体验,优化生产过程和节省成本为目标。

手动阶运维阶段

运维工作量小运维人员主要工作就是看监控屏幕,随着对运维要求提高,工作分工此阶段产生,产生了稳定,便捷,可靠,快速的工作原则。

人工智能可以做的是:基于人的经验,对结构化销售数据进行商业智能分析(BI)找出数据中的知识,从而提升销售额。存在的问题主要是数据专家基于经验发现业务数据中的知识,对业务了解程度成为 BI 有效性的最大瓶颈。即缺乏即懂业务规则又懂数据发掘的人才阻碍商业智能的发展。

规模化阶段

随着 DevOps 概念的推出,工具大量涌现来协助运维工作运维能力大幅提升,带来问题是很少有一家公司可以生产覆盖所有 DevOps 生命周期的工具,而学习多种不同厂商的工具完成任务带来很高的技术门槛。随着一些创业型公司崛起,运维工作量爆发式增长,为了保证业务的连续性 SRE 也在此时期产生,主要目标是使用软件工程技术实现业务大幅增长而运维工作了保持平稳。

人工智能可以做的是:出现以结构化数据为主工业级解决方案,使用算法为主解决商业通用问题,以提高人员利用率加快创造价值为典型问题。

同时也存应用了工业级智能解决方案有多大的效率提升很难估算和当数据知识变化后很难进行跟踪优化的问题。

生态化阶段

随着互联网规模的发展,少数大公司承担起基础设施的工作,通过高度集中提升数倍的运维效率(在亚马逊购买 1 美元的基础设施,可以带来与传统数据中心 7 美元投资相同的计算力),这种变革让云计算客户专注于业务的发展将基础设施运维交给云计算平台。市场规模继续增长一个公司无法使用一套解决方案覆盖所有细分市场的需求,生态化从而产生。因此大量的数据为人工智能实用化奠定基础。

人工智能可以做的是:出现以非机构化数据为主通用的技术框架,不同的公司负责一部分问题形成生态圈,协助业务人员完成工作,通过新感知能力半自动或自动化完成以前手工的工作。

如何结合新的感知能力辅助人类在巨大数据量,变化的规律中做出决策成为新的问题。

用矛盾论的观点分析 DevOps

DevOps 的本质是在解决矛盾的对立与统一的问题

DevOps 存在矛盾的两方面,我们做的事情无外乎一分为二,最终二合为一 矛盾论

这是第一次西方的 DevOps 方法论与中国的矛盾论结合,其实所谓的方法论要不就被认为是废话(一般性原则),要不就是不被人理解(太深奥)。不妨我们往下看看,一分为二和二合为一是什么意思。

我们先抛开 DevOps 的定义,假设我们 DevOps 要做什么事情,他就像足球比赛开始时候裁判抛出的硬币正面或反面朝上,来决定由哪一方先发球,先发球就意味着具有很大优势,但是双方认可这枚硬币来作为双方都可以接受的方式来开始一场比赛。这就是 DevOps 在研发和运维工作中起到的低成本的沟通协调的作用。

很有趣的一点就是随着 DevOps 理论的提出各种工具(硬币)大量涌现,这些工具只不过提供了比抛硬币复杂一些的规则而已。而人工智能会给这些工具带来增强效果。

不能一味的追求事物的某个方面而忽略另一方面

我们在回过头来看一分为二是什么意思。

研发追求功能的吞吐量,主要关注需求实现时长,发布频率和部署前置时间。而运维追求稳定性,主要关注部署成功率,应用错误率,事故严重程度和严重 bug。这本来就是一对不可调和的矛盾。

但是从更高的维度看,只做好吞吐量或是稳定性,不能带来性能提升、体验提升和业务成功。当我们确定了运维和研发的共同目标–即业务成功后,问题就变成:为了共同的业务成功,研发和运维在 DevOps 协同过程中,不会一味最求吞吐量或是稳定性。

为什么人工智能在 DevOps 中大有可为?

DevOps 可以获取几乎所有类型的数据

指标体系框架来自《精益软件度量》

我们了解到人工智能解决的问题都是以数据为基础的,那么有了价值、效率、质量和能力方面有指标和数据就可以在 DevOps 过程中通过人工智能解决问题了。

找到 DevOps 全生命周期中人工智能可以改善问题

(点击放大图像)

在DevOps 生命周期中还有很多工具无法实现自动化的过程,这些过程往往会投入大量的人力和沟通成本,也有很多信息不足无法做出很好决定的场景,在这些场景中人工智能可以根据以往大量数据训练的模型,给出建议,从而给出研发和运维都能认同的工作方式,提升工作效率提高工作质量。

当人工智能牵手DevOps

(点击放大图像)

我们现在有了DevOps 生命周期中的数据,同时也了解到人工智能易于解决的四类问题。我们可以尝试使用全连接的方式找出36(4x9)个在DevOps 领域里适合使用人工智能解决的问题。

比如上图中的“精益需求管理”过程中:通过价值和效率数据使用逻辑推理和预测人工智能方法,得出需求的价值命中率和客户满意度的预测。通过这些人工智能得出的标签优化需求的优先级管理。这样从完全靠人工经验的过程变为人工智能辅助完成的高效过程。

到那时需求人员只需要调节想得到的转化率(运营指标),或是性能(运维指标),就可以通过人工智能方式自动提升改善这些指标的需求的优先级。。甚至是根据需求改变的特性,分析大量现有代码库中的通过测试的代码而自动为开发人员推荐代码。

“分层自动测”过程中:使用图片转文字,方式将必须人工完成的测试自动化弯道提高测试效率与准确率。

“持续运营反馈”过程中:通过自动化运维根因分析,提升定位系统问题的效率。

找到成功的第三条路,在吞吐量和稳定性中间建立平衡让两方面都能正常行事

再说“最终二合为一”的矛盾论下半部分。通过人工智能给出的第三种方式让双方都能向自己的目标前进,从而为一个共同业务成功目标结合为一个整体。

比如,在“安全发布策略(灰度发布)“阶段,使用研发团队的能力数据、内在质量数据和历史中发布后的外部质量数据训练机器学习模型。通过这个模型在发布阶段给出软件发布后外部质量评估。在发布过程中对比前后两个版本的外部质量差距来决定是否进入灰度发布的下一个阶段。回想当初那个正面是Dev 反面是Ops 的硬币,这个AI 的工具是不是先进了不少呢?

人工智能可能的应用

通过DevOps 过程获得数据,使用人工智能提升服务或产品竞争力需要想象力。唯一限制我的是我们的大脑想不到的伟大的想法,而不是什么我们做不到。下面想象一下科幻大片里的一些场景。

1. 终结者自动驾驶一样,通过监控系统反馈,进行自动化软件发布过程

2. 安德的游戏一样动态监控互动界面,像一个孩子通过 AR 方式指挥庞大的舰队战胜外星生物那样管理系统软件与硬件的运维工作

  • a. 告警抑制
  • b. 服务自愈
  • c. 主动运维

3. 像钢铁侠超大别墅中智能管家一样的容量规划管理

  • a. 自然语言交流
  • b. 容量预测规划

4. 像黑客帝国杀毒程序一样的风险合规管理

  • a. 攻击特征提取
  • b. 主动防御黑客攻击

5. 像乔布斯一样的先验用户体验

  • a. A/B 测试(fisher‘s exact test 费歇尔精准检验)
  • b. 软件质量评估

不得不提的是 1996 年 12 月苹果公司收购了 NeXT,使乔布斯回归苹果,到 2011 年 10 月乔布斯去世,苹果市值在 15 年时间里从 30 亿美金增长到 3470 亿美金,增长 115.7 倍。不得不说乔布斯的用户体验感知能力足够科幻了。

智能运维领域案例

2014-2016 百度通过机器学习实现了被动异常监控和主动的流量调度算法。

腾讯通过人工智能帮助我检测和打击欺诈犯罪

很多公司都在人工智能方面做出了尝试,在目前寻求差异化的时代,人工智能可以成为产品的一个亮点进行差异化竞争,成为避免价格战的手段。

智能运维行业应用参考:

尾声——在很长一段时间里人工智能不能完全取代人类

人工智能不会导致大范围失业,随着人类的技术发展,生产力的提高,人口在增加,不过失业率没有明显上升反而生活水平在提高,更多的工作产生了,人工智能也不过是一种提高生产力的技术而已。 随着生产力提升各种细分低技术含量工作也会继续细化吸收被释放的低端劳动力,产生比如细分的家政服务换季整理衣服,高层建筑擦玻璃。

再看我们的祖辈从事工业和农业工作,那个年代无法想象会有靠动动手指就能养活自己的程序员的职业。而我们大多从事技术工作,而不是工人或农民。机械化取代了大量农业劳动的同时,生产率的提高了,价格的下降,随着产业发展更多需求来带更多投资。而周边产业获得投资日益发展带来更多高端就业机会,比如生物科技农药化肥,农用机械也随之产生。

目前人工智能没有自我意识, 就像人类根据鸟类的启发造出飞机一样,人类和人工智能是不同的智能,无法让人工智能像人类一样自主学习。 可以预见在相当长的时期内人工 + 智能的组合方式会成为主流,由人类意识来确定目标(定义模型训练的损失函数),由人工智能高效实现。

所以目前大多数人工智能只应用在非常狭小的领域,这些人工智能虽然高效但“自闭” 在自己的领域里。比如也许人工智能可以与人类高效的沟通,但他并不能像相声演员一样给你带来愉快的沟通氛围。

在可预见的未来的很长一段时间都里,人类把一部分运维工作交给人工智能,然后去创造新的运维工作,随着新运维工作不断成熟又会把一部分工作交给人工智能不断循环。

作者介绍

万金,Thoughtworks 高级咨询师,10 年 + 工作经验,知名外企与中国企业的 IT 从业经验,包括 IBM、华为、中兴、Thomson。具有 7 年云计算相关经验,多系统的研发和运维经验,熟练掌握敏捷和 DevOps 方法论和实践,具有软件研发生命周期工具与流程改进丰富经验。

2017-07-17 17:086934

评论

发布
暂无评论
发现更多内容

Vuex在uniapp中的使用

孙铭

Vue vuex 10月月更

Java基础 | if语句和循环结构

几分醉意.

ide Java、 10月月更

Vue.nextTick核心原理

yyds2026

Vue

知识管理是团队的心脏,让企业管理更上一层楼

Baklib

文档 文档协同

【LeetCode】分割数组Java题解

Albert

算法 LeetCode 10月月更

华为云数据灾备方案助力企业安全,守住企业底线

路过的憨憨

华为

华为云桌面,安全可靠的云上办公首选

路过的憨憨

华为

HTTP 常用的状态码及使用场景

孙铭

HTTP 10月月更 200

InfluxDB Cluster - InfluxDB Enterprise 集群的开源替代方案

奇小在

Influxdb 时序数据库 分布式存储, InfluxDB Cluster

助力企业资源的合理利用,华为云数据库RDS for MySQL使用经济更省心!

路过的憨憨

鸿蒙开发实例|分布式文件服务

TiAmo

华为 鸿蒙 10月月更

Spring Boot 应用使用 application.yml 和 application.properties 的区别

Jerry Wang

Java mvc spring springboot 10月月更

低代码无代码区别在哪?通过这5点来区别准没错

优秀

低代码 无代码

View层、Controller层、Service层、Dao层的区别以及对应的功能

孙铭

service DAO 10月月更

云端软件运行,小程序安全沙箱技术为端侧安全保驾护航

Geek_99967b

小程序

DevOps|1024程序员节如何做?介绍下我的思路

laofo

DevOps 研发效能 1024程序员节 快手

Java之抽象类

魏铁锤

10月月更

Opencv 图像处理:数字图像的必会知识

timerring

OpenCV 计算机视觉 10月月更

SegmentFault 思否发布开源问答社区软件 Answer

万事ONES

1024里的小温暖,用技术让生活变得更美好!

阿里技术

1024程序员节

大家都在“卷”的推荐系统还有进步空间吗?看技术大牛们怎么说

小红书技术REDtech

华为云灾备,保护企业信息数据势在必行!

路过的憨憨

华为

企业文档过多如何管理?文档协同能够帮到你

Baklib

文档 文档管理

【愚公系列】2022年10月 Go教学课程 038-异常处理

愚公搬代码

10月月更

重磅丨九科被评为“2022年中国流程挖掘行业典型实践厂商” 实力再获“RPA中国”认可

九科Ninetech

RPA 流程挖掘 数智化转型

“程”风破浪的开发者|我是如何快速学 Go 的?GoFrame 只用了 3 天时间就从小白变大佬?

王中阳Go

Go golang 学习方法 10月月更 “程”风破浪的开发者

Zookeeper的服务器的log4j升级为log4j2的升级方案(忽略配置化兼容问题)

洛神灬殇

zookeeper

Vue3, setup语法糖、Composition API全方位解读

yyds2026

Vue

Java实现随机人名抽取

魏铁锤

10月月更

Java领域又一神作!《凤凰架构》仅开源3小时,竟遭受Github万人哄抢

程序员小毕

程序员 架构 分布式 程序人生 系统设计

当我遇到10亿参数组合

FunTester

当DevOps遇见AI,智能运维的黄金时代_语言 & 开发_万金_InfoQ精选文章