Geral

O Amazon CodeGuru é uma ferramenta de desenvolvedor que fornece recomendações inteligentes para melhorar a qualidade do seu código e identificar as linhas de código mais caras de uma aplicação.

O Amazon CodeGuru já está disponível. Você pode começar agora mesmo no console do Amazon CodeGuru.

Para começar a usar o Amazon CodeGuru Reviewer, faça login no console do Amazon CodeGuru Reviewer. Nele, é possível associar um repositório de códigos existente no GitHub, GitHub Enterprise, Bitbucket ou AWS CodeCommit. Após uma configuração única, o Amazon CodeGuru Reviewer começa a analisar o código e a fornecer recomendações de aprimoramento de código diretamente na solicitação pull ou no repositório de códigos.

Você também pode começar a determinar os perfis de suas aplicações em poucos minutos. Para começar a usar o Amazon CodeGuru Profiler, efetue login no console do Amazon CodeGuru Profiler, onde você pode configurar um grupo de criação de perfil para seu aplicativo. Inicie seu aplicativo com o agente de criação de perfil na linha de comandos ou siga as etapas para usar um dos métodos personalizados descritos. Você pode permitir que o Amazon CodeGuru Profiler seja executado continuamente, para detectar de forma proativa os problemas de desempenho em seus aplicativos ativos.

Para ver uma lista das regiões da AWS com suporte, visite a tabela de regiões da AWS para toda a infraestrutura global da AWS. Para obter mais informações, consulte Regions and endpoints na Referência geral da AWS.

Amazon CodeGuru Security

O CodeGuru Security é uma ferramenta de verificação de código baseada em análise de programas e ML que encontra vulnerabilidades de segurança no código da aplicação.

Atualmente, o CodeGuru Security é compatível com a verificação de código Java, Python e JavaScript.
 

O CodeGuru Security detecta os dez principais problemas Open Worldwide Application Security Project (OWASP), os 25 principais problemas Common Weakness Enumeration (CWE), a injeção de log, os segredos e o uso seguro de APIs e SDKs da AWS. Consulte Amazon CodeGuru Detector Library para obter mais detalhes sobre as vulnerabilidades encontradas pelo CodeGuru Security.
 

Visite o console do CodeGuru para integrar o CodeGuru Security em seu ciclo de vida de desenvolvedor. Você pode se integrar a ferramentas de integração e entrega contínuas (CI/CD), verificação de repositórios e ambientes de desenvolvimento integrados (IDEs).
 

O CodeGuru Security precisa de acesso somente leitura ao seu código com o objetivo de gerar recomendações. A confiança, a privacidade e a segurança do seu conteúdo são nossa maior prioridade. Implementamos controles apropriados, incluindo criptografia em trânsito, para impedir o acesso não autorizado ou a divulgação de seu conteúdo e garantir que o uso esteja em conformidade com nossos compromissos com você. Também oferecemos suporte às chaves do KMS do gerenciador de clientes (CMCMK) para criptografia. Para obter mais informações, consulte as Perguntas frequentes sobre privacidade de dados.

Não, o CodeGuru Security não armazena seu código-fonte.
 

O CodeGuru Security é treinado usando mineração de regras e modelos supervisionados de ML que usam uma combinação de regressão logística e redes neurais. Por exemplo, durante o treinamento de vazamentos de dados sigilosos, ele faz uma análise completa do código para todos os caminhos de código que usam o recurso ou dados sigilosos, cria um conjunto de recursos que os representa e os utiliza como entradas para modelos de regressão logística e redes neurais convolucionais (CNNs).

O CodeGuru Security está integrado à verificação de código do Amazon Inspector para Lambda. Integrações adicionais a repositórios e ferramentas de CI/CD estarão disponíveis em breve.
 

Amazon CodeGuru Profiler

O Amazon CodeGuru Profiler ajuda os desenvolvedores e operadores de TI a entender facilmente o comportamento do tempo de execução de suas aplicações, melhorar a performance e reduzir os custos de infraestrutura. O Amazon CodeGuru Profiler analisa o perfil de tempo de execução da aplicação e fornece recomendações e visualizações inteligentes que orientam os desenvolvedores sobre como aprimorar a performance das partes mais relevantes do código.

Um grupo de criação de perfil é um agrupamento lógico criado por você, que representa o limite de um aplicativo. Por exemplo, em uma arquitetura de microsserviços, um grupo de criação de perfil agregaria os perfis dos microsserviços que você designou a ele e produziria um perfil para todos eles.

O registro do tempo de execução em log funciona para um conjunto limitado de cenários porque o registro em log é capaz de monitorar apenas a latência (não a utilização da CPU), além de ter implementação demorada porque os desenvolvedores precisam registrar em log todas as funções em uma aplicação (sem afetar a performance da aplicação), deixando os desenvolvedores sem as ferramentas necessárias para monitorar e solucionar problemas de aplicações em produção. É nesse momento que a criação de perfil atua: o Amazon CodeGuru Profiler foi projetado para coletar dados sobre tudo o que aconteceu no comportamento da aplicação, independentemente dos cenários. O CodeGuru Profiler usa uma base de conhecimento de ineficiências de performance comumente encontradas para descobrir automaticamente padrões de código em sua aplicação ativa que afetam o desempenho. Os desenvolvedores podem seguir as recomendações fornecidas para corrigir os problemas.

Application Performance Monitors (APM – Monitor de performance de aplicação) tradicionais fornecem dados úteis sobre monitoramento, rastreamento e performance de aplicações. O Amazon CodeGuru Profiler complementa essas capacidades de APM ao fornecer visualizações dos dados de tempo de execução da aplicação, bem como recomendações práticas para os problemas de performance descobertos. Ele também usa machine learning para detectar e alertar sobre anomalias no perfil da aplicação, indicando as linhas anômalas de código. O Amazon CodeGuru Profiler permite que você visualize facilmente as partes do código que apresentam a maior oportunidade de otimização da performance, juntamente com as possíveis economias, e receba orientações sobre como resolvê-las sem a necessidade de ter um profundo conhecimento em engenharia de performance. O Amazon CodeGuru Profiler cria perfis em instâncias do EC2, contêineres e plataformas de computação sem servidor, inclusive o AWS Lambda, bem como em modelos on-premise. Além disso, alguns criadores de perfil autônomos são projetados para execução apenas em ambientes de teste, enquanto o Amazon CodeGuru Profiler foi projetado para funcionar continuamente em produção, sob cargas de tráfego de produção e sem impacto sobre a aplicação. Assim, ele ajuda a solucionar problemas operacionais na produção, inclusive durante a execução em hosts bare metal.

O Amazon CodeGuru Profiler trabalha com aplicações hospedadas no Amazon EC2, aplicações conteinerizadas executadas no Amazon ECS e no Amazon EKS, e aplicações sem servidor executadas no AWS Fargate e no AWS Lambda. Além disso, você pode executar o Amazon CodeGuru Profiler on-premises

O agente do Amazon CodeGuru Profiler usa os recursos (CPU, memória) alocados para as funções do AWS Lambda. Ele é ajustado para ter um impacto mínimo no desempenho do aplicativo enquanto é executado como um encadeamento em processo. Se seu aplicativo consumir a maioria dos recursos na função AWS Lambda, avalie o aumento dos recursos para permitir que o agente funcione corretamente.

Atualmente, o CodeGuru Security oferece suporte à digitalização de Java, Python, JavaScript, TypeScript, C#, CloudFormation, Terraform, Go e Ruby.

O Amazon CodeGuru Profiler consiste em três partes: um agente, o serviço de criação de perfil e recomendações inteligentes. O agente é iniciado com sua aplicação na linha de comando e é executado como um thread no processo como parte da sua aplicação. Ele obtém os dados de cada uma de suas instâncias de serviço que estão executando o agente e os envia a cada 5 minutos para o serviço de criação de perfil, que os agrega. Em seguida, o Amazon CodeGuru Profiler publica os dados do perfil em gráficos interativos de chama que permitem visualizar a performance da sua aplicação. O Amazon CodeGuru Profiler também verifica continuamente os dados dos perfis criados e os compara em relação às melhores práticas de engenharia de desempenho e da Amazon, além de alertar você proativamente com recomendações inteligentes ao descobrir problemas de performance. Ele também usa machine learning para analisar continuamente os dados do tempo de execução da aplicação e emite um alerta quando detecta anomalias no perfil da aplicação, indicando as linhas de código anômalas.

O CodeGuru Profiler cria o perfil de CPU (tempo de CPU ativa e tempo total) e memória (resumo de heap) para Java e outras linguagens JVM e CPU (tempo total) para aplicações em Python.

Sim, após habilitar a criação de perfil de memória e começar o processo de criação de perfil, o CodeGuru Profiler coletará informações de CPU e memória para sua aplicação. Você só precisa de um grupo de criação de perfil para obter dados de CPU e memória para uma determinada aplicação.

O CodeGuru Profiler oferece informações de resumo de heap. O resumo de heap oferece uma visualização consolidada da utilização de memória por tipo de objeto (por ex., String, int, char[]) e tipos personalizados, durante um período específico (normalmente cinco minutos). O CodeGuru Profiler rastreia os tamanhos totais de objetos e suas respectivas quantidades. Essas métricas são apresentadas em um gráfico de linha do tempo, permitindo detectar facilmente tendências e picos de utilização de memória por tipo de objeto.

O resumo de heap é útil em dois cenários. Em primeiro lugar, é possível perceber possíveis vazamentos de memória. Uma curva de utilização de memória em crescimento constante para um ou mais tipos de objeto pode indicar um vazamento, que possivelmente resultará em erros de memória insuficiente e panes de aplicação. O segundo cenário é quando você deseja otimizar a área de memória ocupada por sua aplicação. Nesse caso, o detalhamento da utilização de memória por tipo de objeto ajudará você a saber onde se concentrar. Por exemplo, ao saber que uma quantidade inesperadamente alta de memória está associada a um tipo específico de objeto, é possível concentrar suas iniciativas de análise e otimização nas partes de sua aplicação responsáveis por alocar e apontar objetos do respectivo tipo.