由机器学习推动的DevOps新时代

后拇指

有一件事总能激起我的兴趣,那就是回顾一项技术是如何发展的。编写与计算机通信的程序有着一段特别有趣的历史。早在19世纪中期,阿达·洛芙莱斯就被公认为是第一个使用查尔斯·巴贝奇的分析机计算伯努利数的程序。在下一个世纪的晚些时候,出现了用于lambda计算的编码语言和基于磁带计算的图灵机。然后汇编语言、FORTRAN、LISP、COBOL、BASIC、C和SQL随着更通用和专门的编程语言而来,一直到21世纪。快进到今天,我们有Python, Java, Rust, Julia, Swift,以及一整套编程语言,这些语言都是为人类与计算机交流以实现特定的结果而设计的。

虽然编程语言已经有了巨大的发展,但它们的核心仍然有一个主要的共同点:让计算机以最高效和无错误的方式完成目标。现代语言在许多方面使开发变得更容易,但在我们实际检查单个代码行以使其无错误方面没有太大的改变。在提高代码质量以提高性能和降低运营成本方面,我们做得更少。必威体育精装版app官网

构建和发布计划曾经减缓了开发人员交付新特性的时间,而云通过提供一个逐步提高构建、测试和部署代码速度的功能,加速了这一过程。必威体育精装版app官网现在,新特性只需几个小时(而不是几个月或几年)就能交付,只要最终用户准备好,他们就能拿到新特性。这在很大程度上是通过IT和软件开发团队如何协作交互和构建最佳实践的新范式实现的:DevOps。必威体育精装版app官网

尽管DevOps技术在过去5年中有了巨大的发展,但它仍然具有挑战性。与并发性、安全性或敏感信息处理相关的问题需要专家评估,并且通常会通过现有机制(如同行代码审查和单元测试)解决。即使对于那些可以投资于专业代码评审员的开发人员的组织来说,pace软件的开发也会产生复杂且大量的代码,难以手动评审。采样始终是随机的,并且无法保证此手动过程会拾取所有甚至大部分相关的bug或性能问题。这最终会导致技术债务和不良客户体验的增加。必威体育精装版app官网

与以机器学习为动力的大师一起构建和操作

认识到这些挑战,AWS正在使用最新技术革新DevOps。We开始将DevOps及其周围的工具链视为一个数据科学问题–当我们这样想时,代码、日志和应用程序度量都是我们可以通过机器学习(ML)优化的数据。

代码审查就是一个例子,它对于提高软件质量、软件安全性,以及在使用关键代码库的团队中增加知识转移非常重要。Amazon CodeGuru reviewer于2020年6月正式发布,使用ML和自动推理来自动识别关键问题、安全漏洞和应用程序开发过程中难以发现的bug。必威体育精装版app官网

CodeGuru Reviewer还向开发人员提供了关于如何修复问题的建议,以提高代码质量,并在bug必威体育精装版app官网到达面向客户的应用程序并导致不良体验之前,大大减少修复bug所需的时间。为了便于使用,开发人员的常规代码审查过程没有任何变化,团队可以简单地将CodeGuru添加到他们现有的开发管道中,以节省时间并减少产生错误代码的成本和负担。这些工具使客户能够更加灵活、更快地创新,并为客户提供尽可能最好的体验。开发人员实际上可以专注于他们喜欢做的事情——发明和构建。自发布以来,Reviewer已经扫描了超过2亿行代码,并为开发人员提供了165000条修复建议。事实上,每天有超过25000名Amazon开发人员使用它来支持他们的代码审查过程。

科学在工作,为您的代码提供有价值的见解

那么到底发生了什么呢?在高层次上,CodeGuru Reviewer接受了来自AWS和Amazon的数十年最佳实践和经验的培训。我们使用ML和自动推理,因为它允许客户自动化我们自己在数千个开源和Amazon存储库中完成的数百万代码审查的经验教训。CodeGuru Reviewer将ML用于多个目的,包括通过分析对现有代码的更改或推断不完整的信息来建模最佳实践,并避免资源泄漏,等等。作为一种服务,Reviewer比任何手动代码审查过程都要快,可以在30分钟内扫描1M行代码,为您的代码开发过程节省了大量时间。必威体育精装版app官网最重要的是,它提供了关于如何修复它发现的问题的建议。

在下面的示例中,Reviewer分析的代码不需要包含所有依赖项来标识缺失的代码,它使用ML对可能发生资源泄漏的地方做出适当的决定。CodeGuru结合了静态分析和ML来准确地警告开发人员错误,并减少误报。必威体育精装版app官网当单独使用静态代码分析时,经常会出现误报,因为分析通常是建立在不完整的信息上(只有源文件,而不是代码库中的外部依赖项)。CodeGuru Reviewer中的资源泄漏检测器将静态代码分析与ML模型结合在一起,ML模型用于推断外部依赖关系并提供更准确的建议。

这是CodeGuru评审人员帮助开发人员自动化评审过程的方法之一。必威体育精装版app官网它还可以在将代码部署到生产环境之前检测安全漏洞、语法错误和其他代价高昂的错误。

找出应用程序中最昂贵的代码行

代码审查只是DevOps故事的一部分。最佳实践的另一个方面是测试和生产中的应用程序评测。对性能问题进行故障排除、发现并查明异常情况以及捕获不必要地消耗计算资源的代码行可能是一个高度手动且耗时的过程。传统的应用程序评测也遗漏了难以找到的代码块,这些代码块导致了尚未发现的问题。CodeGuru Profiler通过帮助开发人员了解其应用程序的运行时行为、识别并消除代码低效、提高性能和降低计算成本,从而补充了CodeGuru Reviewer的自动代码审查功能。简而言之,CodeGuru Profiler可以帮助您识别最昂贵的代码行。亚马逊的内部团队在30000多个生产应用程序上使用了Amazon CodeGuru Profiler,从而节省了数千万美元的计算和基础设施成本。必威体育精装版app官网

我们的目标与CodeGuru超越传统方法手工代码审查和应用分析开创一种新的方式来思考DevOps利用毫升。CodeGuru帮助开发人员要积极主动,而不是被动的,学习利用连续反馈回路由见解由ML,最终,必威体育精装版app官网成为更好、更高效的程序员。这使得开发人员能够通过减少必威体育精装版app官网部署风险和加快新特性的交付来更好地维护高质量的客户体验。

与所有AWS服务一样,我们正在不断改进CodeGuru,并一直在努力扩大语言支持,深化向开发人员提供的建议。我们最近还引入了一种全新的定价结构,以帮助客户根据项目规模和部署计划对代码评审进行预算和扩展。在不久的将来还会有更多令人兴奋的更新。我鼓励您查看最新的必威体育精装版app官网aws.amazon.com/codeguru

为DevOps的新时代扩展功能

有了CodeGuru,我们已经深入到代码检查和应用程序分析的自动化,但我们还在做更多的事情来转换DevOps。我们最近推出的另一项服务是Amazon DevOps Guru。DevOps Guru在基础设施级别进行操作,以进一步增强和自动化DevOps。该服务分析应用程序指标、日志、事件和跟踪等数据,以建立基线操作行为,然后使用ML检测异常。DevOps大师的伟大之处是建立的基线行为不是静态的,而是能够识别失败的指标明显不同但组合在一起最终会影响应用程序的可用性和性能(例如延迟和传入的请求)。该服务使用预先训练的ML模型,能够识别应用程序请求的峰值,这是你可能会想到的,因为我们在亚马逊Prime Day看到的事件。它能够将指标关联和分组在一起,以理解这些指标之间的关系,因此它知道何时警报,何时不警报。

根据我的经验,我知道在凌晨2点被传呼一个潜在的应用程序问题,但却发现这是一个错误的警报。不一定要这样,DevOps Guru是我们帮助解决这一问题的一种方法,它可以减少错误警报,识别具有高置信度警报的问题,然后就如何在问题变得严重停机、代价高昂的停机时间和糟糕的客户体验之前解决问题提供建议。

DevOps guru(类似于codeguru)的一大优点是它不需要ML专业知识。它将提供建议,甚至包括修复问题的文档链接,而不需要深入的领域专业知识。

下一代DevOps

有了CodeGuru和DevOps Guru,我们对DevOps的新时代以及利用ML能力增强开发人员专业知识的可能性感到兴奋。必威体育精装版app官网我们看到各种类型的客户都开始利用这些技术,比以往任何时候都更有信心。对应用程序安全、性能和无错误的信心。有了ML提供的DevOps工具,客户将有更多的时间创新,并为他们的客户提供良好的体验。

将ML应用到DevOps将是一个游戏规则的改变者。我们才刚刚开始。

评论的Disqus