AWS推出自家程式码导师CodeGuru,替用户揪出浪费运算资源的程式码

继微软之后,AWS应用机器学习技术也推出程式码导师服务CodeGuru,用来自动审查程式码,其包含可静态分析程式码的Reviewer,以及动态分析程式的Profiler,可找出用户程式码中最耗费资源的部分,并提供最佳写法的建议。
CodeGuru由Reviewer和Profiler两部分组成,CodeGuru Reviewer是以规则探勘和监督式机器学习模型训练而成,模型结合了逻辑回归和神经网络,可用来侦测AWS API和SDK的使用,与最佳实作的差异,标记可能产生问题的写法,像是批次操作的错误处理或是执行绪不安全的类别等。Reviewer会寻找程式码变更,并且同时探勘文件资料进行交互参照,在审查程式码时,产生新的模型,为用户程式码提供最佳实作的建议。
另外,CodeGuru Profiler则会针对问题,像是过度重建耗费资源的物件、进行耗费资源的反序列化、使用低效能的函式库,或执行过多的日志记录等问题,提供具体的建议,让用户修改程式码以降低CPU使用率、运算成本,甚至是改进易用程式效能。
CodeGuru Profiler代理会在生产环境中持续执行,不停地寻找应用程序中耗费大量资源的程式码,但代理仅会占用少量的CPU容量,不会明显地影响应用程序效能。用户可以安装小型代理程式分析应用程序,并在CodeGuru控制台中进行控制。
AWS提到,他们内部已经使用CodeGuru最佳化了8万个应用程序。AWS以庞大的程式码库训练CodeGuru机器学习模型,除了使用内部数十万个专案之外,还用了GitHub中超过10万个开源专案的程式码。目前CodeGuru仅支援Java应用程序,而其他程式语言的支援则会在后续释出。
而CodeGuru是依照Reviewer审查的程式码行数,以及Profiler执行的时间来计费。Reviewer每扫描100行程式花费0.75美元,而Profiler则是跟着应用程序运作,采样在Amazon EC2执行个体、ECS、EKS以及AWS Fargate执行的应用程序,其CPU利用率和延迟等资料。
每个应用程序分析的计价,会根据Profiler采样时间来计算,一个采样小时等于Profiler代理在执行个体上执行1个小时的时间,因此当应用程序在两个执行个体上执行,两个执行个体都执行Profiler代理1个小时,则采样时间会计为2小时,一个月前36,000小时每小时0.005美元,36,000小时以上就不再额外收费。
