主要内容
人工智能正在通过简化任务、提高安全性和优化操作来改进 DevSecOps 工作流程。利用人工智能生成代码建议、自动测试和富有洞察力的聊天提示,从而提高工作效率。
利用人工智能的解释和建议的修复措施,有效解决安全漏洞问题。利用人工智能进行根本原因分析、日志汇总和性能优化。
实施必要的防护措施,包括数据隐私控制、访问管理和提示验证,以确保负责任和安全地使用人工智能。
通过指标和仪表板监控和衡量人工智能对工作流程的影响,并根据需要调整策略。
探索先进的人工智能技术,如检索增强生成(RAG)和自定义模型,以进一步优化,并与不断发展的人工智能代理和提示工程领域保持联系。
云原生 - DevSecOps
让我们来探讨 DevSecOps 及其与云原生的联系。当您开始 DevSecOps 之旅时,请考虑一下您目前所处的阶段。您是在部署、自动测试、使用暂存环境,还是从零开始?
在整个讨论过程中,我鼓励您找出当前面临的最低效的任务。是问题创建、编码、测试、安全扫描、部署、故障排除、根本原因分析,还是其他?
想象一下人工智能在提高效率方面的潜力。不过,承认工作流程多样性的重要性至关重要。我们稍后将探讨具体的例子。
为人工智能设立防护栏至关重要。确保数据安全,防止环境泄密。此外,衡量人工智能的影响也至关重要。不要因为别人在实施人工智能,自己也在实施。建立一个令人信服的案例并证明其价值。我们还将深入探讨这方面的问题。
开发工作流程中的人工智能
在快节奏的软件开发领域,简化工作流程对于提高效率和取得成功至关重要。2024 年,70% 的受访者表示,他们组织中的开发人员需要花费一个月以上的时间才能入职并提高工作效率,而 2023 年这一比例为 66%(资料来源:GitLab 2024 年全球 DevSecOps 调查)。人工智能已准备好重构我们的工作方式。通过在工作流程中使用人工智能,我们可以获得很多好处,包括提高效率、减少在重复性任务上花费的时间、增强对代码的理解、加强协作和知识共享以及简化入职流程。
在软件开发方面,人工智能提供了在各个阶段加强工作流程的多种可能性--从将团队分成开发、运营和安全等专门角色,到促进规划、管理、编码、测试、文档和审查等典型步骤。
人工智能驱动的代码建议和生成功能可以自动完成自动补全和识别缺失的依赖关系等任务,从而提高编码效率。此外,人工智能还能提供代码解释,总结算法,提出性能改进建议,并将冗长的代码重构为面向对象的模式或不同的语言。
人工智能的影响不仅限于开发,还延伸到运营领域。通过分析较短的描述,人工智能可以生成全面的问题描述,从而节省宝贵的时间和资源。它还可以总结冗长的讨论和问题描述,使团队成员更容易了解情况并参与其中。
人工智能在现实世界中的应用实例
Anthropic Claude Workbench 是一款功能强大的工具,可在底层大型语言模型 (LLM) 上开发和运行人工智能提示查询。例如,一个简单的提示就能生成有关启动 Golang 项目的全面指导,包括 CLI 命令、GitLab 的 CI/CD 配置,甚至 OpenTelemetry 仪器。这样就不需要在无数的选项卡和资源中进行筛选,从而节省了时间,提高了效率,尤其是对新团队成员而言。
此外,人工智能还能帮助制作详细的问题描述,将简短的想法转化为全面的建议。在所提供的示例中,该工具会根据情况探索是否使用 SDK 或自动仪器对源代码进行检测。这是启动讨论和探索不同解决方案的好方法。
此外,人工智能对于总结冗长的讨论和计划也很有价值,可以快速理解复杂的问题。通过将内容粘贴到 Anthropic Claude 3 工作台,它可以有效地浓缩信息,从而更快地做出决策,并采用更有针对性的方法。
另一方面,人工智能通过总结冗长的问题描述、用 Go 生成 Kubernetes 可观察性 CLI、将 Go 代码重构为 Rust 代码,以及为合并请求推荐审核人员,展示了其多功能性。
人工智能助力运营: 事件响应、可观察性和成本优化
将重点从开发转向运营,让我们来探讨人工智能如何彻底改变根本原因分析、可观察性、错误跟踪、性能和成本优化。一个常见的痛点是 CI/CD 管道停滞不前,就像修改后的 XKCD 303 漫画一样。
人工智能可以分析作业日志并提供可操作的见解,甚至提出修复建议,而不是手动筛选作业日志。通过完善提示并与人工智能对话,开发人员可以快速诊断和解决问题,甚至获得优化建议。
安全性至关重要,因此在分析前必须过滤密码和凭证等敏感数据。精心设计的提示可以指导人工智能以任何软件工程师都能理解的方式解释根本原因,从而加快故障排除。这种方法可以大大提高开发人员的效率。
在云原生部署方面,Kubernetes 故障可能是一场噩梦。不过,像 CNCF 沙盒项目 k8sgpt 这样的工具可以利用 LLM 分析部署,并从 SRE 或效率的角度提出建议。它可以与各种 LLM 配合使用,甚至可以在 MacBook 上使用 Ollama 本地运行。
可观察性是运营的另一个关键方面,而人工智能可以简化日志分析。在事故发生时,人工智能可以汇总大量日志数据,从而更快地找出根本原因,帮助迅速解决问题。Honeycomb 将人工智能集成到其产品中,为复杂的可观察性任务提供了查询助手和其他人工智能功能,就是这种方法的典范。
最后,可持续发展监控正受到越来越多的关注,Kepler 等工具使用 eBPF 和机器学习来预测 Kubernetes 环境中的功耗。这使企业能够优化成本和可持续性,减少碳足迹。
这些例子展示了人工智能如何在各个领域改变运营、提高效率和推动创新。
人工智能在安全工作流中的应用
将我们的注意力转移到安全工作流程上,人工智能可以成为了解和减少漏洞、加强安全扫描和解决供应链问题的强大盟友。67% 的开发人员表示,他们所使用的代码中有四分之一或更多来自开源库,但目前只有 21% 的组织使用软件物料清单(SBOM)来记录构成软件组件的成分(来源:GitLab 2024 年全球 DevSecOps 报告)。
在过去的一起安全事件中,一个开源工具中的 CVE 导致了意想不到的后果,反思这起事件,我们可以清楚地看到,深入了解漏洞及其长期修复方法至关重要。
人工智能可以用简单的语言解释漏洞,澄清格式字符串漏洞、命令注入、定时攻击和缓冲区溢出等概念。通过了解恶意攻击者是如何利用漏洞的,开发人员可以实施有效的修复,而不会引入回归或影响代码质量。
利用 “以软件安全工程师的身份解释此漏洞 ”等提示,人工智能可以分析代码片段,提供潜在漏洞的示例,并提出稳健的修复建议。此外,人工智能甚至还能生成合并请求或拉动请求,提出代码修改建议,自动执行修复流程,确保安全扫描和 CI/CD 管道验证修复。
这种简化的方法不仅节省了时间,还降低了人为错误的风险,使漏洞管理更加高效和有效。
人工智能防护网--隐私、数据和安全性能、验证
将我们的注意力转移到人工智能防护栏上,解决隐私、数据安全、性能以及人工智能在工作流程中的整体适用性问题至关重要。首先,必须仔细检查数据使用情况。您的数据(包括源代码)不应用于训练人工智能模型,因为存在潜在的泄漏风险。专有数据不应发送给外部供应商进行分析,尤其是在银行或政府机构等受监管的环境中。
此外,如果人工智能功能使用了聊天记录,那么数据保留政策和删除做法应该透明。有必要就数据使用和隐私发表公开声明,并向您的 DevOps 或人工智能提供商咨询他们的政策。
安全是另一个最重要的问题。应控制对人工智能功能和模型的访问,并建立管理机制来确定谁可以使用这些功能和模型。此外,还应实施保障措施,防止向提示发送敏感内容。
对提示回复进行验证对于避免被利用至关重要。要确保负责任地、合乎道德地使用人工智能工具,就必须为团队成员制定明确的指导方针和要求。
透明度是关键。应随时提供有关人工智能使用、开发和更新的文档。此外,制定处理人工智能故障或模型更新的计划对于保持工作效率至关重要。像 GitLab 这样的人工智能透明中心可以提供有价值的见解和信息。
无论您使用的是 SaaS API、自管理 API 还是本地 LLM,性能监控都至关重要。OpenLLMetry 和 LangSmith 等可观察性工具可以帮助跟踪工作流程中人工智能的行为和性能。
最后,由于可能出现幻觉,LLM 的验证至关重要。测试框架和评估指标对于确保人工智能生成的响应的质量和可靠性至关重要。
通过认真处理这些注意事项,您可以利用人工智能的强大功能,同时最大限度地降低风险,并确保负责任地有效整合到工作流程中。
人工智能的影响
从 “护栏 ”到 “影响”,衡量人工智能对开发工作流程的影响提出了新的挑战。超越传统的开发人员生产力指标并探索其他方法至关重要。
考虑将 DORA 指标与团队反馈和满意度调查结合起来。此外,还要监控代码质量、测试覆盖率以及 CI/CD 管道失败的频率。检查发布时间是否缩短或保持一致。
无论是通过 Grafana 等工具还是其他平台,建立全面的仪表盘来跟踪这些指标都是至关重要的。通过分析这些见解,我们可以更深入地了解人工智能是如何影响我们的工作流程的,并找出需要改进的地方。虽然精确测量的道路还在继续,但不断探索和完善我们的方法将使我们更全面地了解人工智能对生产力和整体开发成果的影响。
采用人工智能
虽然将人工智能整合到工作流程中大有可为,但在验证人工智能的影响的同时,还必须考虑安全、隐私和数据使用方面的防护措施。检索增强生成(RAG)等先进技术可以增强人工智能的能力。
RAG 通过整合文档或知识库等外部信息源,解决了基于旧数据训练的 LLM 的局限性。通过将这些资源加载到矢量存储中并与 LLM 集成,用户可以访问最新的特定信息,甚至是有关当前 Rust 发展或伦敦天气等主题的信息。
RAG 还有一些实际应用,例如为 Discord 或 Slack 等平台创建知识库聊天。即使是像 GitLab 手册这样复杂的文档,也可以有效地加载和查询。
借助 LangChain 等工具和 Ollama 等本地 LLM 提供商,您可以构建自己的 RAG 驱动解决方案。这使您无需依赖外部 SaaS 提供商就能利用专有数据,确保数据安全和隐私。
人工智能/LLM 代理
另一个值得关注的领域是正在快速发展的人工智能/LLM 代理。它们可以动态收集数据来回答复杂的问题,从而提高准确性和效率。虽然这项技术仍在开发阶段,但它对 DevSecOps 来说潜力巨大。
此外,还可以考虑针对特定用例定制提示和模型。根据内部数据训练的本地 LLM 具有安全和隐私优势。探索代理调整,将其作为一种具有成本效益的替代方案,以取代全面的定制化再培训。这些先进的技术可以进一步优化您的 DevSecOps 工作流程。
结论
总之,要确保高效地实施 DevSecOps,有几个关键的考虑因素。首先,从工作流程的角度来看,重复性任务、低测试覆盖率和错误可以通过利用代码建议、生成测试和使用聊天提示来解决。其次,在安全领域,解决延迟发布的安全回归问题需要漏洞解释、解决方案和团队知识建设。
最后,从运营角度来看,开发人员在失败部署上花费过多时间,可以从根本原因分析和 k8sgpt 等工具中获益。通过解决这些问题,企业可以加强 DevSecOps 实践,简化软件开发和交付流程。
渝公网安备50010702505508