从去年底开始,生成式 AI(AIGC) 作为热门话题,深入影响到了 IT 行业的各个领域和所有从业者。
DevOps 是通过持续集成、持续部署、持续交付的方式,将开发和运营更好地整合在一起的流程,它的发展与架构的演进是紧密相连的。当前的架构逐渐在向微服务化的方向发展,出现了许多新的技术,如容器、无服务器、可观测等技术等,它们都推动了 DevOps 技术以及整个 DevOps 生态的发展。这些技术将安全、数据、智能等技术和 DevOps 集中在一起,使开发和运维能够更紧密地衔接在一起,使产品能够更快地迭代和演进。
亚马逊云科技开发者社区为开发者们提供全球的开发技术资源。这里有技术文档、开发案例、技术专栏、培训视频、活动与竞赛等。帮助中国开发者对接世界最前沿技术,观点,和项目,并将中国优秀开发者或技术推荐给全球云社区。如果你还没有关注/收藏,看到这里请一定不要匆匆划过,点这里让它成为你的技术宝库!
DevOps 的现代化
从开发和运维两个维度来看,实现 DevOps 的现代化需要采取不同的策略。
在开发方面,我们需要更快速地迭代产品,减少编译和生成的时间,采用更多的低代码或无代码技术,将开发和测试尽可能地融为一体。
在运维方面,我们需要采用主动监控来减小噪声,提高运维效率,使得运维可以更好地帮助开发进行反馈,从而实现快速的迭代。
如果从代码的角度来看 DevOps 的话,可以将 DevOps 核心分为三大领域:
- 代码开发:如何利用人工智能技术来更好更快地开发出更精准、更高效的代码?虽然开发者数量不断增加,但仍然没有达到满足市场需求的程度,而人工智能技术可以辅助开发者更快地完成工作,来避免花费时间在重复性工作上。
- 代码审核:如何使代码审核的流程更加便捷、更加自动,能更好地发现其中的错误,并且提供一个更佳的修复建议?人工智能技术可以帮助检测错误并提供修复建议,从而提高代码审核的效率和准确性。
- 代码运行:如何更加智能地发现代码运行在实际生产环境中运行可能出现的错误,又如何改进运行中可能发现的性能缺陷?目前,智能监控和观测可以帮助快速发现并解决代码运行中的错误和性能缺陷。
面向未来的 DevOps
人工智能技术在 DevOps 中的应用越来越广泛,尤其是生成式 AI 技术。
自从跨时代意义的 Transformer 论文在 2017 年发表之后,生成式 AI 就已经开始在学术界逐渐崭露头角。去年,OpenAI 推出的 ChatGPT,极大引发了全球关注。不仅如此,不同的厂商、社区、研究机构和公司都在生成式 AI 领域做了大量的工作。
5 年多来,大模型的效率和性能都有了显著提升,这使得大模型可以在越来越多的场合进行应用。
亚马逊云科技提供高效的开发者工具通过生成式 AI 为开发者提供帮助。
Amazon CodeWhisperer
Amazon CodeWhisperer 的主要特点:
- 多语言支持和 IDE 集成:CodeWhisperer 支持多种语言,包括 Java、Python、C 和 C++ 等,并且可以与主流的 IDE 集成,如 Visual Studio Code 和 IntelliJ 等。
- 完全免费:该工具是完全免费的,只需要注册亚马逊云科技的 Builder ID 即可开始使用。
- 避免偏见:CodeWhisperer 能够帮助开发者构建面向任何人群的应用。
- 生成各种类型的代码:CodeWhisperer 能够生成各种类型的代码,甚至可以生成数据结构中的代码。
- 高效生产力:使用 CodeWhisperer 可以有效提高开发者的效率。在 CodeWhisperer 生产力挑战赛中,使用该工具的参与者,完成所有任务的可能性提高了 27%,而相对于未使用该工具的参与者,这个概率速度增加了 57%。
CodeWhisperer 的三大主要功能:
- 代码生成:CodeWhisperer 可以生成任何类型的代码,包括数据结构中的代码等等。它具有自主学习能力,可以根据开发者的风格生成和其模式相匹配的代码,使得代码风格更加协调,帮助开发者提供更好的代码建议。使用 CodeWhisperer 可以大大提高开发者的效率。
- 参考跟踪:CodeWhisperer 可以根据函数生成相应的代码参考引用,即 reference 以及代码的引用源,为开发者提供多种建议。尤其对于企业商业化过程中需要选择开源数据和代码构建应用的典型应用场景来说,这个功能至关重要。
- 安全扫描:安全对于代码来说至关重要, CodeWhisperer 利用其 AI 能力进行代码扫描,检测代码中的安全漏洞,并提供修复建议。工具支持多种编程语言来扫描难以发现的安全建议。对于企业用户来说,可以进行身份认证和单点登录的配置,以便更好地进行权限管理和协作。
CodeWhisperer 是如何生成代码的呢?
首先,在 IDE 中编写一些代码,然后 IDE 自动将其发送到 CodeWhisperer 中。CodeWhisperer 会进行实时的代码建议,并给出源代码的参考,进行安全扫描。其次,它会返回代码建议,给开发者更多选择的权利。最后,开发者可以根据 CodeWhisperer 提供的多个代码建议进行选择,进行确认。
Amazon CodeGuru
代码审核是软件开发过程中不可或缺的一部分。它有助于提高代码性能和错误处理能力,以及整体性能效率。
人工智能技术在代码审核中扮演着重要的角色,尤其是在发现低效率代码和进行日志和调试分析方面。
然而,代码审核也存在着一些挑战,比如:如何改进代码性能、缺乏行业标准和最佳实践等。开发者需要不断积累经验,对代码进行不断改进,以提高性能效率,并解决可视化最昂贵代码行的问题等等。
Amazon CodeGuru 是一项开发者服务,旨在帮助开发者提高代码审核和优化性能效率。它包含两个小组件:
- CodeGuru Reviewer 用于代码审核和修改建议;
- CodeGuru Profiler 用于检测和优化最昂贵的代码行,提高代码性能。
CodeGuru Reviewer:自动化代码审核
CodeGuru Reviewer 类似于人工审核,但使用了人工智能技术来加速整个流程。它支持 Java 和 Python 两种语言,和 Amazon CodeCommit、GitHub 等代码库。审核完成后,开发者可以根据修改意见进行代码修改,并将代码合并到原来的代码库中。
对于 Java 语言,CodeGuru Reviewer 提供了许多亚马逊的最佳实践,包括并发处理、资源泄露等。同时,它还支持安全问题的审核,以帮助开发者构建更安全的 Java 应用程序。对于 Python 语言,CodeGuru Reviewer 同样提供了许多最佳实践,包括如何更好地使用标准库、如何进行错误处理以及如何解决资源泄露等问题。
CodeGuru Profiler:性能调优工具
CodeGuru Profiler 用于查找性能最低的代码行,以帮助开发者优化代码性能。它支持 Java 和 Python 两种语言,在 Lambda、EC2、ECS、EKS、Fargate 等平台上运行。CodeGuru Profiler 安装一个小型代理程序来收集观测性数据,并将其传送到后端进行可视化分析。这个代理程序占用的 CPU 利用率不到 1%,对生产系统的影响几乎可以忽略。
CodeGuru Profiler 可视化展示了系统的性能数据,以帮助开发者发现性能瓶颈。它可以查找最耗时的代码行,并提供优化建议。这个工具可以帮助开发者在生产系统中解决性能问题,提高系统的性能和可靠性。
在 Amazon Prime Day 中,CodeGuru 得到了广泛的应用。通过 CodeGuru 的使用,整个系统的 CPU 效率提升了 300% 以上,成本降低了将近 40%。这使得整个系统的性能得到极大的提升,满足了更多消费者网购对于平台性能的需求。
AI 实现可观测
可观测性在 DevOps 中扮演着重要的角色,通过观测能够帮助开发者获取系统的修改建议、以及代码调整、开发测试的洞察等,可以帮助我们提升整个系统的运作效率。
在大规模运营中,我们需要对不同的指标进行观测,包括资源指标、监控指标和日志指标等。然而,随着系统越来越复杂,需要更多的资源来进行监测,为了避免出现问题,我们需要更加自动化、智能化的工具来帮助我们进行大规模运维。
选择要观测哪些指标是一个挑战,需要有针对性地监测应用和数据库等各个方面。有时候可能会漏掉一些问题,甚至对于开发者认为不会出现的问题也可能经常出现,这给 DevOps 团队带来了很多的困扰和加班的压力。因此,我们需要一个更加自动化、智能化的工具来帮助我们进行大规模的运维。
可观测性的成熟度模型通常被分为从 1 到 4 这样四个级别。
最简单的是基础设施监控,只实现一些基本的监控,提供了一些简单的可视性。而最高级别则是自我修复的能力,通过持续的反馈回路自动解决问题。然而,对于有些系统来讲,实现最高级别的自我修复能力可能是非常遥不可及的。因此,针对不同的系统和不同的能力,构建一个可观测性成熟度的矩阵可以不断提升自己的能力。
亚马逊云科技提供了很多能力和服务来帮助大家构建一个成熟的可观测性体系,从基本的 CloudWatch、CloudTrail 到高级的服务如 DevOpsGuru、CodeGuru Profiler、X-Ray 等等。此外,也有很多可观测开源项目可以在云上方便地使用。
DevOps Guru 监控系统
亚马逊云科技的 DevOps Guru 监控系统是一个完全托管的服务,由人工智能提供支持,帮助企业自动创建调整警报,进行异常检测,解决持续观测中的问题,提供预防性建议,以及将人工智能技术与大规模运营整合,提升企业开发者的 DevOps 能力。
在使用 DevOps Guru 监控系统时,我们需要确定要监控哪些资源。这里有很多要监控的资源,所以需要进行统一的策划和部署。可以使用标签、CloudFormation 或自定义边界来选择要监控的资源群,然后设置通知。有很多通知方式,包括 SNS、事件、桥接、系统管理器等等,可以帮助快速响应通知警报,定义整个代码群应用。
接下来,我们将进行两种洞察方法:被动式和主动式。
被动式洞察称为反应式洞察,会在适当的时候进行检测,使用数十个指标、事件、日志等来监测,发现因果关系,解决各种问题。
主动式洞察则是更前瞻性的,可以预测故障和问题,早期发现、早期解决,更好地服务运营。预防是比解决问题更为重要、也更复杂的过程。
因此,我们需要将被动式和主动式的洞察方式进行整合,构建更好的可观测性体系。
这是 DevOps Guru 洞察的一个示例:
这里可以看到全面的展示,包括不同的指标和曲线,展示系统的观测和运营情况。此外,还提供了修改建议的操作方式。使用 DevOps Guru,可以自动化地创建和监测资源的度量,为快速缓解提供前瞻性的意见,实现更多的机器学习驱动的主动洞察,为整个 DevOps 运营提供帮助。
使用 DevOps Guru,可以大幅度提升报警创建、报警维护运营问题的性能,包括问题缓解和主动报警情况下。可以自动化地创建和监测资源的度量,为快速缓解提供可前性的验意见。使用 DevOps Guru 之前,通常无法实现主动性的见解。使用 DevOps Guru 之后,有更多的机器学习驱动的主动见解,为整个 DevOps 运营提供了良好的帮助。
这是在亚马逊云科技的平台中使用 AIOps 进行监控的整体架构图:
这是一个非常开放、非常全面的生态系统,可以连接到很多不同的指标数据和源,监控不同的日志跟踪记录等。同时,还可以进行异常检测、增强洞察等,有各种各样的维度向开发者进行各种仪表的展示和报警。同时,和很多第三方平台相结合,帮助进行更好的运营管理和故障排查。
大模型技术的进一步发展,也在影响更多的 DevOps 领域。同时 DevOps 也在不断的影响大模型的训练、调优和部署,使得大模型可以得到更快的开发和应用,通常我们称之为 LLMOps。
总结
人工智能技术在 DevOps 中的应用越来越受到关注,可以通过代码生成、代码审核和监控观测三个维度来完全赋能 DevOps。希望能够通过本文的介绍为更多的 DevOps 开发者提供帮助。
请持续关注 Build On Cloud 微信公众号,了解更多面向开发者的技术分享和云开发动态!
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。