亚马逊AWS官方博客

如何配合 Amazon CodeGuru 使用 DevFactory 提升应用程序质量

Original Link: https://aws.amazon.com/cn/blogs/machine-learning/how-devfactory-builds-better-applications-with-amazon-codeguru/

本文为AWS精选技术合作伙伴DevFactory合作编写。

DevFactory 是一家专注于企业级SaaS解决方案的厂商,负责创新、开发及运营超过120种企业级产品。DevFactory还开发出DevGraph,一款基于AWS的集成软件开发工具套件。

Amazon CodeGuru 是一项自动化代码审查服务,可根据代码审查结果提出建议,帮助开发人员提高代码质量。CodeGuru中包含两项服务:

在本文中,我们将讨论DevFactory公司如何使用CodeGuru Reviewer改进其软件即服务(SaaS)应用程序。

CodeGuru Reviewer是什么?

CodeGuru Reviewer是一项代码审查服务,将机器学习(ML)与人工管理技术相结合,已经在训练过程中对超过一万个开源项目中的数百万行代码进行处理,并使用Amazon内部代码库学习编码实践。CodeGuru Reviewer利用多种模型查找并发争用条件、资源泄漏与CPU周期浪费等代码中常见的性能损耗问题。

DevFactory面对的挑战

DevFactory拥有120多款产品,管理的代码总量超过6.5亿行。这些产品大多开发于过去二十年中,其中包含大量用于实现各类现成服务的自定义代码。为了通过遍布全球的远程协作员工对代码库进行使用、升级与维护,DevFactory一直在不断改进、并持续提升业务流程的自动化水平。

此项发展战略的一大核心,在于识别并增强每一项新收购产品中的精髓。对客户来说,这些精髓代表着最独特且最具价值的服务、功能与应用程序。无论是机器学习驱动型预测、基于社交图谱的商务智能、规模化容器环境还是生产率提高方案,DevFactory都希望自己的工程团队能够将这些成果切实交付给客户,并将繁重且与竞争优势无甚关联的任务留给AWS服务及其基础设施。

下表所示,为DevFactory的业务统计数字。

垂直行业 代码库数量 代码行数 语言数量
20个 6000套 约6.5亿行 45种

除了区分出与竞争优势无关的代码之外,对现有代码库的监控与维护同样非常重要。DevFactory的理想代码分析解决方案应当:

  • 准确且针对性强——最具价值的代码分析工具应该既准确又具有很强的针对性。例如,静态分析往往会在完全正常的代码库中发现成千上万个问题,其中既包括误判、也有一些并不重要的小瑕疵。
  • 专业化——要真正改善代码库质量,需要使用专用工具立足以下各个阶段发现问题:
    • 开发——编码风格、正确性等
    • 部署——有效使用正确服务
    • 实施——性能与安全性
  • 及时更新——最新API或SDK很可能带来意想不到的后果。为此,一切代码分析工具都必须跟上这一基本更新节奏,在保障业务稳定运行的同时不断推进服务更新。
  • 可操作性——代码审查与风格指引当然非常重要,但要结合DevFactory庞大的运营规模维护现有产品及众多新方案,自动化分析与运营体系可谓不可或缺。DevFactory重视问题发现者们的意见,允许他们使用各种复杂的技术解决实际问题。

CodeGuru如何为DevFactory提供助力

在CodeGuru在re: Invent 2019大会上首次亮相时,DevFactory就希望尽快将其纳入早期beta测试计划。在针对自身代码库运行CodeGuru之后,DevFactory得出以下结论:

  • 可以预见,CodeGuru将在检测AWS服务滥用与提供措施建议方面成为市场领导者,并给一切依赖于AWS服务的企业与个人带来巨大价值。对于DevFactory公司,CodeGuru甚至能够成功标记出语法本身正确有效,但由于Amazon DyanmoDB查询结果分页而导致输出有误的代码。
  • CodeGuru的检测精确的覆盖了资源泄漏与安全问题,其结论拥有良好的可操作性,且功能一直在持续扩展。DevFactory由此得出的结论是,CodeGuru标记出的21个问题,在重要性上甚至超过其他所有通用型工具发现的500个问题(包括大量误报)的总和。
  • 作为一项托管服务,CodeGuru减轻了使用问题查找器寻找代码问题的负担。对于每周需要对数百套代码库进行尽职调查的小型团队而言,可靠性的重要程度不亚于准确性。
  • CodeGuru Reviewer帮助DevFactory以云原生格式重新编写了DevGraph中的FogBugz产品。
  • CodeGuru Profiler帮助DevFactory优化了其DevGraph中的EngineYard产品,并为其引入基于容器的全新架构。

总结

CodeGuru、CodeGuru Profiler以及CodeGuru Reviewer现已全面上线。关于这些服务的更多使用说明与细节信息,请参阅以下内容:

本篇作者

Muhammad Mansoor

AWS纽约团队解决方案架构师。Muhammad在DevOps、容器、企业转型以及云迁移方面拥有丰富积累。在业余时间,他喜欢与陪伴家人和跑步。