{"id":220,"date":"2020-09-12T16:01:52","date_gmt":"2020-09-12T16:01:52","guid":{"rendered":"https:\/\/machine-learning.webcloning.com\/2020\/09\/12\/how-devfactory-builds-better-applications-with-amazon-codeguru\/"},"modified":"2020-09-12T16:01:52","modified_gmt":"2020-09-12T16:01:52","slug":"how-devfactory-builds-better-applications-with-amazon-codeguru","status":"publish","type":"post","link":"https:\/\/salarydistribution.com\/machine-learning\/2020\/09\/12\/how-devfactory-builds-better-applications-with-amazon-codeguru\/","title":{"rendered":"How DevFactory builds better applications with Amazon CodeGuru"},"content":{"rendered":"<div id=\"\">\n<p><em>This post is written in collaboration with DevFactory, an <\/em><a href=\"https:\/\/aws.amazon.com\/partners\/find\/partnerdetails\/?n=DevFactory%20FZ-LLC.&amp;id=001E000000mFQl6IAG&amp;t=psf-overview\" target=\"_blank\" rel=\"noopener noreferrer\"><em>AWS Select Technology Partner<\/em><\/a><em>.<\/em><\/p>\n<p><a href=\"https:\/\/devfactory.com\/\">DevFactory<\/a> is an enterprise SaaS-focused company that is responsible for innovation, development, and operation of over 120 enterprise products. DevFactory also offers DevGraph, an integrated suite of software development tools built on AWS.<\/p>\n<p><a href=\"https:\/\/aws.amazon.com\/codeguru\/\" target=\"_blank\" rel=\"noopener noreferrer\">Amazon CodeGuru<\/a> is an automated code review service that helps developers improve their quality of code by recommending actions in code review. CodeGuru consists of two services:<\/p>\n<p>In this post, we talk about how DevFactory uses CodeGuru Reviewer to improve their software as a service (SaaS) applications.<\/p>\n<h2>What is CodeGuru Reviewer?<\/h2>\n<p>CodeGuru Reviewer is a code review service that uses a combination of machine learning (ML) and human curation techniques to analyze millions of lines of over 10,000 open-source projects and the Amazon internal code base to learn coding practices. It uses these models to find code issues such as concurrency race conditions, resources leaks, and wasted CPU cycles.<\/p>\n<h2>DevFactory\u2019s challenge<\/h2>\n<p>DevFactory has more than 120 products and manages over 650 million lines of code. Most of these products were developed over the last two decades and therefore have custom code to implement widely available, off-the-shelf services. To adopt, upgrade, and maintain the code base with a global, fully remote workforce, DevFactory is constantly evolving and adding automation where necessary.<\/p>\n<p>One key part of the strategy is to identify and enhance the gems in each newly acquired product. These are the services, features, and applications that are both unique and valuable to the customers. ML-driven <a href=\"https:\/\/www.youtube.com\/watch?v=mKVZukgtkcA&amp;feature=youtu.be&amp;t=1849\" target=\"_blank\" rel=\"noopener noreferrer\">forecasts<\/a>? Business intelligence from social <a href=\"https:\/\/www.jivesoftware.com\/news-room\/press-releases\/aurea-peoplegraph-unlocks-the-value-of-relationship-intelligence-starting-with-jive-enterprise-communities\/\" target=\"_blank\" rel=\"noopener noreferrer\">graphs<\/a>? Containerization and productivity enhancement at <a href=\"https:\/\/devfactory.com\/\" target=\"_blank\" rel=\"noopener noreferrer\">scale<\/a>? DevFactory wants their engineering teams to deliver these to customers, and leave the undifferentiated heavy lifting to AWS services and infrastructure.<\/p>\n<p>The following table shows DevFactory by the numbers.<\/p>\n<table border=\"1px\" width=\"0\">\n<tbody>\n<tr>\n<td width=\"155\"><strong>Verticals<\/strong><\/td>\n<td width=\"155\"><strong>Repositories<\/strong><\/td>\n<td width=\"155\"><strong>Lines of Code<\/strong><\/td>\n<td width=\"155\"><strong>Number of Languages<\/strong><\/td>\n<\/tr>\n<tr>\n<td width=\"155\">20<\/td>\n<td width=\"155\">6,000<\/td>\n<td width=\"155\">~650 million<\/td>\n<td width=\"155\">45<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<p>In addition to jettisoning undifferentiated code, monitoring and maintaining the existing code base requires effort. DevFactory\u2019s ideal code analysis solution is:<\/p>\n<ul>\n<li>\n<strong>Accurate and focused <\/strong>\u2013 The most valuable code analysis tools are both highly accurate and highly targeted. Static analysis, for example, routinely turns up thousands of issues in perfectly acceptable code bases because it has both false and unimportant positives.<\/li>\n<li>\n<strong>Specialized <\/strong>\u2013 To truly improve the code base, specialized tools were needed to find issues during the following stages: <\/p>\n<ul>\n<li>\n<strong>Development<\/strong> \u2013 Coding style, correctness, and more<\/li>\n<li>\n<strong>Deployment<\/strong> \u2013 Efficient use of the right services<\/li>\n<li>\n<strong>Implementation<\/strong> \u2013 Performance and security<\/li>\n<\/ul>\n<\/li>\n<li>\n<strong>Up-to-date <\/strong>\u2013 Updating to the latest API or SDK can result in unintended consequences. Any code analysis tool needs to keep up with this creative destruction and enforce correct usage of ever-new services.<\/li>\n<li>\n<strong>Actionable <\/strong>\u2013 Code reviews and style guides are helpful, but to operate existing and new products at DevFactory\u2019s scale, they need automated analysis and automated actions. DevFactory values issue-finders that lend themselves to their (rather sophisticated) issue-fixing techniques.<\/li>\n<\/ul>\n<h2>How CodeGuru helps DevFactory<\/h2>\n<p>When CodeGuru was first unveiled at re:Invent 2019, DevFactory wanted to try it as soon as possible and enrolled in the early beta program. After running CodeGuru against code base repositories, DevFactory made the following findings:<\/p>\n<ul>\n<li>CodeGuru is predictably the leader in detecting AWS service misuse and recommending actions, which is worth a lot to anyone relying on AWS services. For DevFactory, CodeGuru flagged syntactically valid code that still produced inaccurate results due to paginated <a href=\"http:\/\/aws.amazon.com\/dynamodb\" target=\"_blank\" rel=\"noopener noreferrer\">Amazon DynamoDB<\/a> query results.<\/li>\n<li>CodeGuru resource leaks and security issue coverage is precise, actionable, and expanding. DevFactory concluded that the 21 issues CodeGuru flagged were much more valuable than the over 500 generic non-issues (and quite a few false positives) other generic tools turned up.<\/li>\n<li>As a managed service, CodeGuru reduces the burden of finding issues with the issue-finder. For the small team that does diligence on hundreds of repositories each week, reliability is just as important as accuracy.<\/li>\n<li>CodeGuru Reviewer helped DevFactory rewrite its DevGraph product, FogBugz, in cloud-native format.<\/li>\n<li>CodeGuru Profiler helped DevFactory optimize its DevGraph product, EngineYard, for its new container-based offering.<\/li>\n<\/ul>\n<h2>Conclusion<\/h2>\n<p>CodeGuru, CodeGuru Profiler, and CodeGuru Reviewer are now generally available. For more information about getting started with these services, see the following:<\/p>\n<hr>\n<h3>About the Author<\/h3>\n<p><strong><img decoding=\"async\" loading=\"lazy\" class=\"size-full wp-image-15702 alignleft\" src=\"https:\/\/d2908q01vomqb2.cloudfront.net\/f1f836cb4ea6efb2a0b1b99f41ad8b103eff4b59\/2020\/09\/09\/Muhammad-Mansoor_Resized.jpg\" alt=\"\" width=\"100\" height=\"135\">Muhammad Mansoor <\/strong>is a Solutions Architect and part of the AWS team based in New York City. Muhammad has a background in DevOps, Containers, Enterprise Transformation and Cloud Migration. In his spare time he loves to spend time with his family and enjoys running.<strong><br \/><\/strong><\/p>\n<\/p><\/div>\n","protected":false},"excerpt":{"rendered":"<p>https:\/\/aws.amazon.com\/blogs\/machine-learning\/how-devfactory-builds-better-applications-with-amazon-codeguru\/<\/p>\n","protected":false},"author":0,"featured_media":221,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":[],"categories":[3],"tags":[],"_links":{"self":[{"href":"https:\/\/salarydistribution.com\/machine-learning\/wp-json\/wp\/v2\/posts\/220"}],"collection":[{"href":"https:\/\/salarydistribution.com\/machine-learning\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/salarydistribution.com\/machine-learning\/wp-json\/wp\/v2\/types\/post"}],"replies":[{"embeddable":true,"href":"https:\/\/salarydistribution.com\/machine-learning\/wp-json\/wp\/v2\/comments?post=220"}],"version-history":[{"count":0,"href":"https:\/\/salarydistribution.com\/machine-learning\/wp-json\/wp\/v2\/posts\/220\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/salarydistribution.com\/machine-learning\/wp-json\/wp\/v2\/media\/221"}],"wp:attachment":[{"href":"https:\/\/salarydistribution.com\/machine-learning\/wp-json\/wp\/v2\/media?parent=220"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/salarydistribution.com\/machine-learning\/wp-json\/wp\/v2\/categories?post=220"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/salarydistribution.com\/machine-learning\/wp-json\/wp\/v2\/tags?post=220"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}