Amazon CodeGuru (demonstração)
Análises automáticas de código
Identifica as suas linhas de código mais caras
Treinado em décadas de conhecimento e experiência
Os modelos de machine learning do CodeGuru são treinados nas bases de código da Amazon, compreendendo centenas de milhares de projetos internos, além de mais de 10.000 projetos de código aberto no GitHub. Dezenas de milhares de desenvolvedores da Amazon contribuíram para o treinamento do CodeGuru com base em décadas de experiência em análise de código e na criação de perfil de aplicativos. Por exemplo, o CodeGuru Reviewer é treinado usando mineração de regras e modelos de machine learning supervisionados que usam uma combinação de regressão logística e redes neurais. Durante o treinamento para detectar o desvio das melhores práticas, ele explora as bases de código da Amazon para solicitações de recebimento que incluem chamadas de API da AWS. Ele analisa as alterações de código e as faz referência cruzada com os dados da documentação, que também extrai em paralelo. Isso cria novos modelos de melhores práticas que o Revisor usa ao revisar seu código para fornecer recomendações. O CodeGuru Profiler também é treinado por engenheiros de desempenho da Amazon e usado para criar perfil de dezenas de milhares de serviços usados internamente na Amazon. Você pode decidir se aceita cada recomendação que o CodeGuru oferece - quanto mais feedback você der, melhores serão as recomendações.
Encontre as suas linhas de código mais caras
O CodeGuru Profiler está sempre buscando otimizações de desempenho de aplicativos, identificando suas linhas de código mais "caras" e recomendando maneiras de corrigi-las para reduzir a utilização da CPU, cortar custos de computação e melhorar o desempenho dos aplicativos. O CodeGuru Profiler fornece recomendações específicas para que você possa agir imediatamente em questões como recreação excessiva de objetos caros, desserialização cara, uso de bibliotecas ineficientes e registro excessivo. O CodeGuru Profiler é executado continuamente em produção, consumindo a capacidade mínima da CPU, de modo que não afeta significativamente o desempenho do aplicativo. Você pode começar a criar um perfil do seu aplicativo instalando um pequeno agente usando o código que o CodeGuru fornece e configura-lo no console do CodeGuru.
Quando ele vê oportunidades para otimizar o desempenho do aplicativo, o Amazon CodeGuru Profiler explica por que recomenda uma alteração, qual é a causa do problema, como resolvê-lo e onde no código esse problema afeta o seu aplicativo.
O Amazon CodeGuru Reviewer verifica suas solicitações de recebimento e fornece recomendações em relação ao seu código-fonte no Github ou no AWS CodeCommit, juntamente com uma descrição do que está causando o problema e como corrigi-lo.
Detecte o problema de código hoje – não espere até receber uma paginação
O CodeGuru Reviewer procura pelas coisas que tiram o seu sono à noite e recomenda como corrigi-las. Ele detecta o desvio das práticas recomendadas para usar APIs e SDKs da AWS, sinalizando problemas comuns que podem levar a problemas de produção, como detecção de paginação ausente ou manipulação de erros com operações em lote. Ele detecta problemas de simultaneidade, como violações de atomicidade e o uso de classes que não são seguras para as linhas, difíceis de encontrar, mesmo para programadores experientes. Ele detecta quando os recursos são fechados incorretamente, criando problemas de latência e interrupções. Ele também identifica a validação correta das entradas, nas quais entradas não autorizadas podem levar a problemas como ataques de injeção ou negação de serviço. Você pode associar repositórios de código existentes no GitHub ou no AWS CodeCommit ao CodeGuru para começar a análise de código.
Barato o suficiente para usar em todas as análises de código e aplicativos
O CodeGuru é barato o suficiente para usar em todas as análises de código e aplicativos executados. Ele possui definição de preço mensal simples, de acordo com o uso, baseada no número de linhas de código analisadas e em amostragem de horas por perfil de aplicativo. Por exemplo, se você tiver uma solicitação recebimento típica com 500 linhas de código, custaria apenas 3,75 USD para executar o CodeGuru Reviewer nela. O teste é gratuito pelos primeiros 90 dias. Depois disso, o CodeGuru custa 0,005 USD por hora de amostragem por perfil de aplicativo e 0,75 USD por 100 linhas de código por mês. Consulte a definição de preço»
Dezenas de milhões USD
O que os desenvolvedores dizem sobre o Amazon CodeGuru
Chris Butterfield, engenheiro de desenvolvimento de software que trabalha em um serviço de agendamento para vendedores na Amazon.in:
“Depois de executar o CodeGuru Profiler e ver as suas recomendações, percebi que precisávamos atualizar o nosso serviço para corrigir um bug relacionado ao bloqueio da CPU. A correção recomendada funcionou perfeitamente e removeu o aviso de contenção de encadeamento que estava usando 55,97% do tempo da CPU. Depois da correção, concluí o teste de carga e descobri que agora um único host pode servir 700 TPS, o que representa cerca de 7,5x mais tráfego do que um único host poderia suportar anteriormente. Conseguimos reduzir o número de instâncias em cerca de 75% depois do teste de carga, apesar de ainda lidarmos com o mesmo tráfego."
Rajesh Konatham, engenheiro sênior de desenvolvimento de software que trabalha no serviço de gerenciamento de catálogos da Amazon.com:
“Havíamos acabado de desativar algumas configurações relacionadas ao software para melhorar o tempo de inicialização do servidor e reduzir a aglomeração de perfil. Usamos o CodeGuru Profiler para entender o impacto dessa alteração e percebemos que nosso sistema de fluxo de trabalho estava clonando documentos toda vez que executava ramificações, mesmo quando não era necessário. Por causa disso, gastávamos 15% dos valores de clonagem da capacidade da CPU desnecessariamente. Depois de seguir a recomendação do CodeGuru Profiler para remover esses valores clonados, vimos enormes reduções na utilização da CPU - uma redução de 40% na frota síncrona e 67% na frota assíncrona. Muito mais do que a redução de 15% na utilização da CPU que esperávamos! A redução adicional ocorreu devido à atividade reduzida de coleta de lixo, pois os clones não estavam mais ocupando memória heap.”
Neeraj Kumar, engenheiro sênior de desenvolvimento de software que trabalha na Amazon CloudWatch:
“Executamos o CodeGuru Profiler e descobrimos que a maior parte da capacidade de nossa CPU estava sendo usada para assinar a solicitação do Amazon S3 usando o SHA-2. Estávamos usando a implementação fornecida pelo JDK para o SHA-2, mas o CodeGuru Profiler recomendou o uso do Amazon Corretto Crypto Provider. Seguimos a recomendação, o que nos permitiu implementar alguns desses algoritmos de criptografia mais rapidamente. O Corretto Crypto Provider corresponde ao comportamento do JDK, portanto, a integração foi simples. Após a implantação, observamos uma redução de aproximadamente 30% da CPU em várias regiões da AWS."
Mike Thompson, engenheiro sênior de desenvolvimento de software que trabalha nas ferramentas de construtor da AWS:
“O CodeGuru Reviewer nos permitiu pegar uma condição antiga de disputa escondida em um trecho crítico de código. Um analista humano não teria encontrado, pois estava fora das áreas do código que eu havia mudado. O CodeGuru Reviewer forneceu contexto suficiente sobre o bug, uma explicação clara sobre por que estava ruim e um exemplo de como corrigi-lo. Fazer a alteração obrigatória foi muito fácil e levou apenas alguns minutos. Foi ótimo ter algo para melhorar nossa qualidade de código sem exigir configuração ou incomodar.”
Danish Bashar, um engenheiro de desenvolvimento de software que trabalha no AWS DynamoDB:
"Eu estava baixando um arquivo do Amazon S3 e não sabia que era um fluxo que criava um vazamento de recursos. O teste de unidade não teria detectado esse problema porque funcionava direito. Como eu não havia escrito explicitamente o tipo de objeto, não o notei e tenho certeza de que qualquer pessoa que analisasse o meu código também não teria notado. O CodeGuru Reviewer levou alguns minutos para analisar a semântica do código e detectou o vazamento de recursos relativamente rápido. O CodeGuru Reviewer recomendou o uso de uma tentativa com recursos para fechar o recurso e eu a implementei imediatamente. +1.”
Geetika Vasudeo, um engenheiro de desenvolvimento de software que trabalha no AWS DynamoDB:
"Estávamos usando uma tabela do Amazon DynamoDB de uma maneira que normalmente não usamos e percebemos isso durante a analise de código. O CodeGuru Reviewer identificou que a operação estava retornando resultados paginados em vez de todos os resultados. Estávamos fazendo verificações e apenas buscando resultados na primeira página, o que não era um problema na hora, mas como a tabela cresceu com o tempo, acabamos vendo apenas a primeira página e perdendo o restante dos resultados. Se não tivesse sido tratado corretamente, isso poderia ter se tornado um erro grave no nosso código. Ótima detecção e ótima recomendação.”
Obtenha acesso instantâneo ao nível gratuito da AWS.
Comece a criar com o Amazon CodeGuru no Console de Gerenciamento da AWS.