DevOps 和人工智能 – 天作之合
如今,人工智能和机器学习无处不在,所以它们开始在 DevOps 领域崭露头角也毫不令人意外。人工智能和机器学习正在通过自动化任务改变 DevOps,并使各企业的软件开发生命周期更高效、更深刻和更安全。我们在 DevOps 趋势中简要讨论过这一问题,现在是时候让我们加深一下对 DevOps 中的人工智能和机器学习的认识了。首先,我们来了解一下最能突显这一现代技术的趋势和数据。
人工智能和机器学习趋势
毫无疑问,人工智能和机器学习的应用越来越普遍,并且正在成为十分有价值的技能。我们近期有关 DevOps 趋势的文章中提到,到 2023 年,约有 40% 的 DevOps 团队将应用人工智能增强对 IT 运营的监控。此外,根据德勤的预测,全球人工智能定制应用开发服务市场将在 2023 年增长超过 610 亿美元。鉴于未来几年内市场预计会有如此庞大的增长,学习如何与人工智能和机器学习技术合作将会是一项能够带来丰厚利润的技能。
毫无疑问,机器学习很快就会被应用于技术产业以外的领域,例如电子商务、娱乐和医疗保健。由于许多领域都将应用机器学习,机器学习正成为一项重要技能,助力开发人员或 IT 专业人士的职业发展,并为这些持续增长的趋势提供支持。GitLab 2021 年 DevSecOps 调查数据显示,约 30% 受访的开发者认为人工智能或机器学习技术是其未来职业生涯中最重要的技能。此外,弗雷斯特公司预测,在 2022 年,至少有三分之一的测试专业人员将采用机器学习实现更为智能的测试自动化。因此,对掌握人工智能和机器学习技术的需求正在增长,这也进一步证实为何有更多的开发人员认为掌握这些工具十分关键。
为什么 DevOps 需要人工智能
机器学习以及自然语言处理,可基于广泛参考的指导原则,生成高质量的技术项目要求。这有助于确保运行的系统和配置始终符合相应的企业安全政策。实际上,机器学习可以检测出项目中不完善的要求,无法衡量的量化项,以及其他项目要求的不足。这样,项目管理团队便能更好地编制项目所需的要求,同时最大限度减少规划中的不准确性和缺陷,从而开发高性能的产品。
支持现代应用程序的各种工具和技术呈指数级增长,这就导致有更多的组件需要管理。有更多需要管理的资源意味着 DevOps 团队的工作可能会极其乏味和繁琐,尤其是这些工作都需要人工完成时。随着对更高水平的自动化和新的管理技术的需求不断增加, DevOps 也愈发需要人工智能和机器学习。人工智能可帮助 DevOps 团队减轻技术负债,更好地制定项目要求。而基于人工智能的测试将有助于解决测试覆盖率方面的技术负债问题。因此,DevOps 团队便能在无需配置不必要资源的前提下对系统和服务进行测试。
人工智能和机器学习在 DevOps 中还有另一个应用场景,即协助管理来自应用程序或基础设施的警报。例如,根据从过去的行为中提取的信息、警报严重性以及警报来源,人工智能可协助判断警报响应的优先次序。这样,DevOps 团队便能优化警报系统,使系统自动区分噪音或误报与急需采取应对措施的关键问题。此外,经过训练的机器学习算法有助于更快解决关键问题,DevOps 团队将花费更少的时间筛选监控服务中记录的日志信息,判断问题的根本原因。
人工智能的争议
人工智能和机器学习的应用也伴随着一些安全问题。机器学习算法的好坏取决于训练使用的数据。因此,基于开源项目训练的工具可能会使开发人员无意中将 bug 和安全漏洞引入代码。这可能导致漏洞进入生产环节,对企业生产的软件和服务造成负面影响。
此外人工智能和机器学习还面临着一些安全漏洞威胁。人工智能工具可能会十分容易遭受勒索软件的攻击。黑客利用漏洞将系统驱动器加密,并且只有在支付“赎金”后才能拿到密钥。这是一个在不断发恶化的危险漏洞。实际上,勒索软件正在迅速成为更多企业面临的主要漏洞。然而,随着人工智能和机器学习不断发展,它们将能够在更多漏洞进入生产环节前进行检测并减少影响。
有人担心人工智能或机器学习会在工作中取代他们的位置。NoOps,即无需要人为干预即可管理基础设施,可能会在未来导致运营团队被淘汰。机器有可能通过原来的配置模式学习如何自主进行配置和管理,从而导致人和机器之间的竞争。弗雷斯特公司副总裁兼首席分析师指出,有人认为人工智能会在五年内降低对开发人员的需求,因为机器自己就能编写一些基本的基础设施代码。
不过,采用人工智能和机器学习可以带来新的机遇。了解如何利用这些工具训练算法和分析大量数据可获得公司所需的更为准确的结果或预测数据。构建采用机器学习或人工智能的应用程序可以带来更多高性能的应用程序,从而让企业在竞争中保持领先地位。此外,机器和服务会不时出现故障,因此需要有精通机器学习的专业人员进行故障排除,解决使用人工智能工具可能出现的功能性问题。总而言之,虽然人工智能和机器学习有可能取代人们的部分工作,但它们也提供了构建、管理和修复公司运营所需的人工智能工具和技术的机会。
DevOps 中的人工智能和机器学习
在 DevOps 领域采用的人工智能和机器学习技术呈现出不同的形式。以下是两种技术在该领域的部分应用方式。
AI-Ops 和 ML-Ops
AI-Ops 和 ML-Ops 分别指“人工智能操作”和“机器学习操作”,涉及使用人工智能或机器学习来执行操作任务。团队可以训练算法,在软件开发生命周期不同阶段自动运行任务。AI-Ops 通过分析和机器学习来研究 DevOps 管道中使用的操作工具生成的大量数据,从而了解需要执行哪些任务以及如何执行相应的任务。
在构建阶段,可以使用人工智能和机器学习自动构建虚拟环境来测试源代码。而在监控阶段,它们则可以用来确保资源运行不会出现任何问题。这样,开发人员和运营团队便能在他们的应用程序和基础设施中持续保持整体一致性。有了 AI-Ops 和 ML-Ops,计算机系统可以学习现有环境,在开发阶段打包代码,并在生产中以最佳状态运行。由于资源会提前配置,团队因此能够节省手动配置和管理资源的时间,且不必主动监控系统性能。
自动化
DevOps 团队开始利用人工智能和机器学习实现工作流程自动化。人工智能、机器学习和数据科学实践可以毫不费力地迅速解决问题。例如,人工智能可以为软件开发生命周期的开发阶段提速。这可以通过运行 Tabnine 和 GitHub Copilot 等人工智能代码补全工具实现。这类工具在开发阶段提供代码建议来协助开发人员工作。此外,人工智能还能自动创建质量保证环节所需的测试。测试团队因此可以花费更少的时间进行测试,并在测试环境内的自动化方面投入更多时间,提前验证代码并将代码送往生产环节。除了测试代码,人工智能和机器学习还可以执行更多自动化任务。它们根据添加到机器学习算法中的数据集使代码审查工作自动化。这有助于实现代码优化过程的自动化,并提高应用程序性能。
质量
人工智能和机器学习不仅能够将软件开发生命周期中的更多流程自动化,还能提高企业软件的质量。通过检查原来的代码版本和保存的应用程序日志的统计数据,
人工智能工具可以协助预测部署失败的情况。知道哪些方法行得通后,团队便能改进软件版本,并在送往生产环节前相应做出更改。根据 Enterprise Project 一篇文章的内容,机器学习能够发现代码中的问题,如资源泄漏、潜在的并发竞态条件和浪费的 CPU 周期,这些都可能影响生产中的软件性能。 获得这些信息后,DevOps 团队将更深入地了解面临的性能瓶颈,优化代码或基础设施来弥补不足之处。在提高代码质量方面,人们可能会对机器学习和人工智能的可靠性抱有疑虑,但最近的研究证明了这类工具在软件管理方面的可靠性。Facebook 使用的 bug 检测之类的机器学习工具已被证实在检测缺陷和针对源代码提供补救建议方面具有大约 80% 的正确率。人工智能和机器学习工具正逐步完善,在不久的将来,它们在提高软件质量方面也将变得更加可靠。
安全
尽管有人担忧人工智能和机器学习的安全问题,但事实证明,这类工具能够有效保障服务和基础设施安全。它们可以检测系统和服务中的异常。根据 GitLab DevSecOps 报告,人工智能数据整合和机器学习算法使异常检测效率更高,甚至在设备启动的时间内便能完成。DevOps 团队在设备启动完成后会立即收到与系统漏洞有关的消息。此外,机器学习工具可以通过训练实时检测异常,并立即提醒 DevOps 团队。因此,这些工具可以防止更多软件漏洞被利用,保证企业和终端用户的安全。
人工智能和机器学习在管理 IT 环境整体合规性方面也有帮助。例如,DevOps 团队可以训练人工智能或机器学习算法,通过制定基线来监控企业整体的安全合规性。这样,他们便能采取预防措施,通知用户漏洞情况或关闭不符合安全规则的设备,将威胁扼杀在摇篮中。见证了安全方面的进步,一些公司开始为自己的服务应用或收购新的人工智能工具。例如,杰蛙近期就收购了 Vdoo。Vdoo 是一个用于检测和修复漏洞的人工智能工具,它通过调查设备的行为实现相应功能,其中人工智能会将设备的行为与基线做比较,以确定设备未按设计目的运行的时间。之后,DevOps 团队将决定是否关闭该恶意设备,并将设备与其他关键资源隔离,或额外对人工智能工具提示的设备行为进行研究。多亏了人工智能和机器学习具有的异常检测能力,DevOps 团队因此更容易保障安全并维持资源整体合规性。
低代码/无代码
值得一提的是,科技行业越来越多地在采用低代码或无代码工具。人工智能学习和管理技术资源的能力将减少团队的人工管理成本,他们只需编写很少的代码甚至不需要代码即可让系统和服务运行。可以肯定的是,这样的能力将使未来的开发人员在确保项目整体质量的同时,通过最少的手动作业和简单的界面开发软件。而且,由于低代码/无代码工具减少了编程中的复杂性,利用更少的代码在应用程序中创建所需的功能将使开发团队效率更高,更容易排除故障。因此,越来越多的开发人员和 DevOps 工程师正在采用低代码或无代码工具,他们希望把更多的精力用于保障软件质量,建立和部署高性能的应用程序。
人工智能工具
行业中已经存在多种人工智能和机器学习工具。 以下列举了该领域中的几个工具。
Arize AI 是一个 DevOps 机器学习工具,可以更快识别根本原因并解决模型性能问题。Arize AI 支持实时监控且监控范围广,可以自动发现潜在的性能和数据问题,并向 DevOps 团队发送实时警报以尽快采取补救措施。基于该工具为训练其模型而收集的数值型数据的模式,DevOps 团队将收到与应用程序或基础设施性能潜在问题相关的通知,因此该工具有助于团队在软件开发生命周期持续实施监控。
Dynatrace 是一个 AIOps 工具,提供DevOps 团队可在 CI/CD 管道中利用的能力,包括可观察性、自动化、人工智能和云原生应用安全。基于其确定性人工智能训练所采用的操作数据, Dynatrace 可在异构云环境中提供可实施的洞察。这有助于 DevOps 团队
识别可能对企业产生负面影响的云原生异常,从而安全地将应用程序部署到一个或多个云环境中。此外,其自动化运行时应用漏洞检测功能结合了 Snyk 的漏洞数据库与 Dynatrace 分析能力,可覆盖整个软件开发生命周期,旨在解决从代码阶段到监控阶段的安全漏洞。
另一个值得一提的机器学习工具是 Diffblue。Diffblue 是用于实现软件开发生命周期测试阶段自动化的人工智能平台典范。它与 Java 代码库集成,并生成反映当前代码行为的单元测试,几乎毫不费力便能执行自动回归测试,优化持续集成工作流程,提前发现回归问题。
我们的名单上还有最后一个工具 —— Amazon CodeGuru。该人工智能工具用于检测安全漏洞和自动进行代码审查。借助机器学习和自动推理、最佳安全实践以及从代码审查中学习的信息,Amazon CodeGuru 可帮助实现代码审查自动化,并就如何针对检测到的问题采取补救措施提供建议。在某种程度上,该工具可以被视为下一代静态代码分析工具,并为其添加机器学习能力。
结论
人工智能和机器学习正深刻影响着软件和基础设施的构建、部署、管理及测试方式。从自动测试到异常检测,人工智能和机器学习将显著改善整个开发周期。DevOps 团队应该把所有这些工具和能力视作新的驱动力,将部分人工作业留给自动化人工智能工具执行,以提高产品质量和优化系统与服务管理。根据需要自动化的任务和条件训练算法,DevOps 团队也就不会被公司运营方面需要关注的要求压得喘不过气。尽管有人对这些工具保持警惕,但未来几年内,人工智能和机器学习很可能会在 DevOps 团队的系统和服务中发挥重要作用。
点击了解 CI/CD 加速解决方案,并获取试用 License!
相关文章:

DevOps 和人工智能 – 天作之合
如今,人工智能和机器学习无处不在,所以它们开始在 DevOps 领域崭露头角也毫不令人意外。人工智能和机器学习正在通过自动化任务改变 DevOps,并使各企业的软件开发生命周期更高效、更深刻和更安全。我们在 DevOps 趋势中简要讨论过这一问题&am…...

基于主动安全的AIGC数据安全建设
面对AIGC带来的数据安全新问题,是不是就应该一刀切禁止AIGC的研究利用呢?答案是否定的。要发展AIGC,也要主动积极地对AIGC的数据安全进行建设。让AIGC更加安全、可靠的为用户服务。为达到此目的,应该从三个方面来开展AIGC的数据安…...

Java 程序的命令行解释器
前几天我写了一个简单的词法分析器项目:https://github.com/MarchLiu/oliva/tree/main/lora-data-generator 。 通过词法分析快速生成 lora 训练集。在这个过程中,我需要通过命令行参数给这个 java 程序传递一些参数。 这个工作让我想起了一些不好的回忆…...

从事开发近20年,经历过各种技术的转变和进步
1、jsp、javabean、servlet、jdbc。 2、Struts1、hibernate、spring。 3、webwork、ibatis、spring 4、Struts2、mybatis、spring 5、spring mvc ,spring全家桶 6、dubbo,disconf 微服务,soa 7、springboot 全家桶 8、docker 9、dock…...

unet v2学习笔记
unet v2介绍: UNet v2开源!比UNet显存占用更少、参数更少,猛涨20个mIoU 代码:https://github.com/yaoppeng/U-Net_v2 模型96m。 实际测试,1060显卡,256*256,需要13ms。 速度慢于rvm人脸分割…...

MQ入门—centos 7安装RabbitMQ 安装
三:RabbitMQ 安装 1.环境准备 Linux 的 CentOS 7.x 版本。Xftp 传输安装包到 Linux。Xshell 连接 Linux,进行解压安装。 RabbitMQ安装包 链接:https://pan.baidu.com/s/1ZYVI4YZlvMrj458jakla9A 提取码:dyto xshell安装包 链接&…...

虾皮Shopee商品详情API:电商实时数据获取的关键
随着互联网的普及和电子商务的快速发展,电商行业已经成为全球范围内最具影响力和前景的产业之一。在电商行业中,商品详情API接口是实现快速、准确获取商品信息的关键技术之一。本文将介绍获得虾皮Shopee根据ID取商品详情 API在电商行业里的重要性&#x…...

VUE中的8种常规通信方式
文章目录 1.props传递数据(父向子)2.$emit触发自定义事件(子向父)3.ref(父子)4.EventBus(兄弟组件)5.parent或root(兄弟组件,有共同祖辈)6.attrs和listeners(…...

overleaf 加载pdf格式的矢量图时,visio 图片保存为pdf格式,如何确保pdf页面大小和图片一致
Overleaf支持多种矢量图形格式,其中一些常见的包括: PDF(Portable Document Format): PDF是一种常见的矢量图形格式,Overleaf可以直接加载和显示PDF文件。许多绘图工具和LaTeX生成的图形都可以导出为PDF格式…...

西南科技大学数字电子技术实验四(基本触发器逻辑功能测试及FPGA的实现)预习报告
一、计算/设计过程 说明:本实验是验证性实验,计算预测验证结果。是设计性实验一定要从系统指标计算出元件参数过程,越详细越好。用公式输入法完成相关公式内容,不得贴手写图片。(注意:从抽象公式直接得出结果,不得分,页数可根据内容调整) (1)D触发器 特征方程: Q…...

“新程序员”必须学会的8个GPT提问技术 | 抢免费注册DevChat名额
ChatGPT 等大语言模型给人带来惊喜也给人带来了焦虑。惊喜在于它给各种工作带来的提效是肉眼可见的,焦虑在于很多人都担心会被 AI 替代,可能工程师们对此最深有感触。很多工程师已经开始用 GPT 来处理一些手头的开发工作,可能是写脚本&#x…...

Flink系列之:大状态与 Checkpoint 调优
Flink系列之:大状态与 Checkpoint 调优 一、概述二、监控状态和 Checkpoints三、Checkpoint 调优四、RocksDB 调优五、增量 Checkpoint六、RocksDB 或 JVM 堆中的计时器七、RocksDB 内存调优八、容量规划九、压缩十、Task 本地恢复十一、主要(分布式存储…...

七轴开源协作机械臂myArm视觉跟踪技术!
引言 ArUco标记是一种基于二维码的标记,可以被用于高效的场景识别和位置跟踪。这些标记的简单性和高效性使其成为机器视觉领域的理想选择,特别是在需要实时和高精度跟踪的场景中。结合机器学习和先进的图像处理技术,使用ArUco标记的机械臂系统…...

etcd初探
官方网站 https://etcd.io/ etcd是什么 etcd is a strongly consistent, distributed key-value store that provides a reliable way to store data that needs to be accessed by a distributed system or cluster of machines. It gracefully handles leader elections du…...

微信小程序如何实现WXML和js文件之间的数据交互
在微信小程序中,WXML负责页面结构的描述,而js文件则负责页面的逻辑处理和数据交互。要实现WXML和js文件之间的数据交互,可以通过以下几种方法: JS传输数据到WXML 数据绑定:在WXML中使用{{}}语法将js文件中的数据绑定…...

计算机网络基础——以太网类型,常见标准和架构
一、标准以太网 标准以太网(10Mbit/s)通常只定位在网络的接入层,新一代多媒体、影像和数据库产品很容易将10Mbit/s运行的以太网的带宽吞没。10Mbit/s 的以太网可以实现100m距离的连接。 二、快速以太网 数据传输速率为100Mbps 的快速以太网…...

HarmonyOS(二)—— 初识ArkTS开发语言(下)之ArkTS声明式语法和组件化基础
前言: 通过前面ArkTS开发语言(上)之TypeScript入门以及ArkTS开发语言(中)之ArkTS的由来和演进俩文我们知道了ArkTS的由来以及演进,知道了ArkTS具备了声明式语法和组件化特性,今天,搭…...

VUE篇之日历组件
1.简单日历组件展示 思路:根据当前月的第一天是星期几,来显示日期 <template><div class"wrap"><el-button click"preMonth">上个月</el-button><el-tag>当前年份{{ curYear }}</el-tag><e…...

【selenium】自动化使用 chrome 的 user-data-dir
jwensh2023.12.18 文章目录 背景当前位置默认位置windowsMac OS XLinuxChrome操作系统AndroidiOS系统 覆盖用户数据目录命令行环境(Linux)编写 AppleScript 包装器 (Mac OS X) 用户缓存目录在 Mac OS X 和 iOS 上,用户缓存目录源自配置文件目…...

pythonUnitTest框架
UnitTest框架 UnitTest参考文章:https://blog.csdn.net/qq_54219272/article/details/123265794 目标(看完UnitTest框架该有的收获) 掌握UnitTest框架的基本使用方法掌握断言(判断实际结果和预期结果是否一致)的使用方…...

微服务最佳实践:构建可扩展且高效的系统
微服务架构彻底改变了现代软件开发,提供了无与伦比的敏捷性、可扩展性和可维护性。然而,有效实施微服务需要深入了解最佳实践,以充分发挥微服务的潜力,同时避免常见的陷阱。在这份综合指南中,我们将深入研究微服务的关…...

源码赏析: 数据结构转换工具 configor (一)
一、configor 先贴地址 configor,先看configor的特性: Header-only & STL-likeCustom type conversion & serializationComplete Unicode supportASCII & Wide-character support 说白了,这个工具用于自定义类型的转换和序列化…...

使用java调用python批处理将pdf转为图片
你可以使用Java中的ProcessBuilder来调用Python脚本,并将PDF转换为图片。以下是一个简单的Java代码示例,假设你的Python脚本名为pdf2img.py: import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader…...

机器学习——自领域适应作业
任务 游戏里面的话有很多跟现实不一样的情况。 想办法让中间的特征更加的接近,让feat A适应feat B,产生相对正常的输出。 在有标签数据和没有数据的上面进行训练,并能预测绘画图像。 数据集 训练5000张总数,每类有500张测试100…...

ValidatorUtil字段验证工具类
字段验证工具类 package com.aa.bb.cc.common.utils;import com.aa.bb.cc.common.exception.BusinessException; import org.apache.commons.collections.CollectionUtils; import org.apache.commons.lang3.StringUtils;import javax.validation.ConstraintViolation; import…...

Python 自动化之处理图片(一)
图片美化与大小调整 文章目录 图片美化与大小调整前言一、基本结构二、引入库三、用户输入模块四、图片美化模块五、大小调整模块总结 前言 本文主要分为两部分。一是图片的美化吧算是,主要从亮度、对比、色彩饱和度、锐度四个方面进行美化;二是图片的像…...

Axure动态面板的应用与ERP系统登录界面、主页左侧菜单栏、公告栏的绘制
目录 一、动态面板 1.1 简介 1.2 使用动态面板的原因 二、动态面板之轮播图实现案例 2.1 完成步骤 2.2 最终效果 三、动态面版之多方式登录案例 四、动态面板之后台主界面左侧菜单栏 五、ERP登录界面 六、ERP主界面菜单栏 七、ERP公告栏 八、登录页面跳转公告栏 一…...

电机(按工作电源分类)介绍
文章目录 一、什么是电机?二、按工作电源分类直流电机1.直流有刷电机结构工作原理:直流减速电机 2.直流无刷电机结构工作原理: 3.总结结构和工作原理:效率和功率损耗:调速性能:寿命和可靠性:应用…...

Web前端JS通过使用AudioWorkletNode() 获取 Video/Audio 视音频声道(左右声道|多声道)
写在前面: 在之前的博文Web前端JS如何获取 Video/Audio 视音频声道(左右声道|多声道)、视音频轨道、音频流数据中,介绍了通过使用AudioContext.createScriptProcessor()方法来获取视音频音轨(声道)数据。但由于W3C不再推荐使用该A…...

力扣LeetCode75题
为了面试,小伙伴们可以平时练下算法题,有备无患。 LeetCode 75 - 学习计划 - 力扣(LeetCode)全球极客挚爱的技术成长平台...