![Edge AI: como fazer a mágica acontecer com Kubernetes](https://optimuscloud.com.br/wp-content/uploads/2024/01/1706072320_Edge-AI-como-fazer-a-magica-acontecer-com-Kubernetes-150x150.jpg)
Edge AI: como fazer a mágica acontecer com Kubernetes
24 de janeiro de 2024![Featued image for: The Moby Project Post-Kubernetes: 3 New Releases in 2023](https://optimuscloud.com.br/wp-content/uploads/2024/01/O-Projeto-Moby-Pos-Kubernetes-3-novos-lancamentos-em-2023-150x150.png)
O Projeto Moby Pós-Kubernetes: 3 novos lançamentos em 2023
24 de janeiro de 2024Em sua busca para ajudar os desenvolvedores a eliminar falhas de código de tempo de execução no início do processo, o AppMap, com sede em Boston, disponibilizou sua ferramenta de análise de código de tempo de execução de código aberto como uma ação GitHub chamada Runtime Code Review.
Embora a empresa anteriormente se concentrasse em erradicar falhas de design, falhas de segurança e problemas de desempenho como uma extensão para VS Code e JetBrains, esta primeira versão de CI visa atender mais de perto os desenvolvedores onde eles trabalham: na solicitação pull.
“O AppMap em CI (Runtime Code Review) está revisando automaticamente as mudanças incrementais nos PRs para mudanças comportamentais e está incorporando todas as outras mudanças incrementais que estão ocorrendo em outras filiais ao mesmo tempo. É fundamentalmente um conjunto de dados diferente daquele encontrado apenas no editor de código, que é um ramo do trabalho de uma pessoa”, disse Elizabeth Lawler, CEO da AppMap.
Embora baseado na ferramenta anterior de mesmo nome, “fizemos um monte de coisas novas e interessantes que nunca estavam disponíveis antes, porque podemos examinar solicitações pull sequenciais para obter novos tipos de insights sobre mudanças comportamentais ao longo do tempo e desvios”, disse ela.
Analisando o comportamento do código de tempo de execução em uma solicitação pull
![Pete Cheslock](https://optimuscloud.com.br/wp-content/uploads/2024/01/AppMap-lanca-revisao-de-codigo-em-tempo-de-execucao-como.jpg)
Pete Cheslock
![Elizabeth Lawler](https://optimuscloud.com.br/wp-content/uploads/2024/01/1706073028_701_AppMap-lanca-revisao-de-codigo-em-tempo-de-execucao-como.jpg)
Elizabeth Lawler
“A maneira como as pessoas estão resolvendo isso agora seria usando ferramentas de observabilidade de produção”, disse Pete Cheslock, chefe de crescimento e comunidade do AppMap.
“E então você vê pessoas com contas de milhões de dólares do Datadog, porque estão apenas tentando pegá-las sempre que está ao vivo. Eles estão voando às cegas em relação ao desenvolvimento local e, por isso, pressionam a produção, mas todos sabem que é tarde demais.”
O Runtime Code Review avalia cada alteração no código para ajudar os desenvolvedores a compreender o impacto no comportamento do código em tempo de execução.
Começando com um fluxo de trabalho básico do GitHub configurado em uma ramificação como um ambiente de teste, ele registra rastreamentos de execução de código e compara o comportamento do código em tempo de execução antes e depois de uma alteração de código. Ao contrário da análise estática de código e da revisão de código baseada em IA, a revisão é dinâmica.
As alterações podem ser testadas em uma solicitação pull antes de mesclar quaisquer alterações de código na ramificação da linha principal. Os rastreamentos analisados podem então erradicar as causas de problemas que aparecem apenas em tempo de execução, como:
- Testes falhados com links diretos para a linha de código que causou o erro, bem como diferenças de origem e sequência comportamental.
- Mudanças de API como rotas novas, excluídas ou modificadas ou atributos de resposta revisados.
- Falhas de segurança como algoritmos de criptografia obsoletos, gerenciamento inadequado de sessões ou acesso não autorizado.
- Problemas de desempenho como consultas SQL N+1, chamadas de função lentas e solicitações HTTP lentas.
Esses problemas podem então ser exibidos como mapas visuais interativos que explicam o comportamento que está causando o problema.
Deixa um comentário no GitHub, incluindo links para o código problemático. Nenhum dos dados é enviado a terceiros; ele é armazenado como artefatos no sistema de compilação do GitHub.
As alterações são representadas visualmente como uma “diferença de código”, uma comparação do código antes e depois de uma alteração que destaca a diferença.
No IDE, você pode ver um diagrama de sequência para o ramo em que está trabalhando, mas ele não fornece uma comparação de antes e depois e calcula as diferenças. Ele reflete o código em que você está trabalhando no estado atual — e apenas o seu próprio trabalho.
Ao criar a ferramenta de CI, a empresa teve que descobrir como representar as mudanças que afetariam o comportamento do aplicativo e entre filiais.
“Não é apenas o aparecimento de novos contêineres ou códigos, embora seja um tipo de mudança”, disse Lawler. Inclui caminhos de função que aparecem ou desaparecem, novas rotas de API e remoção de rotas de API e alterações em consultas. Então, como você reflete isso para um usuário que precisa revisar o código e como você se concentra nas mudanças importantes e as revela?
“Para representar isso para um revisor de código, tivemos que inventar uma nova visualização para ancorar o entendimento – um diagrama de comportamento “diff”. Mostramos isso em diagramas de sequência, mapas de dependências de tempo de execução e outras visualizações. Eles agora estão anexados a cada solicitação pull para mostrar uma diferença de comportamento antes e depois da alteração do código.”
Outro exemplo de problema é observar o desvio incremental de desempenho.
“Muitas vezes a degradação do desempenho é a morte por mil cortes – normalmente não há um problema importante, embora às vezes possa haver. A análise de desempenho do Appmap em CI é mais sensível a desvios em lançamentos sequenciais”, disse ela.
Baseado na extensão do editor de código
A principal ferramenta de análise de código de tempo de execução de código aberto AppMap, escrita em JavaScript, funciona com aplicativos da web e estruturas de API, como Rails, Django, Flask, Express e Spring. Possui recursos especializados para mapeamento de roteamento, modelos de visualização, solicitações de clientes HTTP, cache, autenticação e SQL. É compatível com Ruby, Java, Python e Node.js.
Envolve o uso de agentes leves e específicos de linguagem instalados no código para registrar como funções, serviços da web, armazenamentos de dados, segurança, E/S e serviços dependentes funcionam juntos quando o código é executado. Os agentes registram como o código é executado no ambiente de desenvolvimento sem exigir instrumentação customizada como OpenTelemetry ou outros tipos de plataformas. Os dados de rastreamento são então salvos como arquivos JSON que são convertidos em diagramas interativos nos quais os usuários podem navegar e pesquisar. Ele também produz gráficos em degradê para ajudar os desenvolvedores a entender o desempenho do código.
Também inclui uma integração que permite aos desenvolvedores criar automaticamente especificações OpenAPI para um aplicativo. O AppMap também incluiu recursos no editor de código para trabalhar com assistentes de codificação de IA, incluindo a capacidade de trabalhar diretamente com ChatGPT 3.5 e 4.0.
Lawler disse que quando começou a construir a empresa, chamou duas pessoas, sendo uma delas Adam Jacob, cofundador e ex-CTO do Chef, que está trabalhando em seu próprio projeto, System Initiative, para compreender as relações interconectadas em sistemas complexos. O outro foi Grady Booch, que desenvolveu a Linguagem de Modelagem Unificada (UML) como uma forma visual de descrever sistemas complexos.
“Eu disse: ‘Você sabia que seria ótimo se a UML fosse um conceito sob demanda que pudesse explicar o que você está fazendo de errado e ser um parceiro pensante?'”, disse Lawler.
“Se eu olhar para o que Adam (Jacobs) está fazendo com a System Initiative, é tudo uma questão de contexto, comunicação, compreensão da complexidade, compreensão de relacionamentos interconectados em sistemas complexos. É o que está quebrado, é por isso que as coisas quebram. … Acho que todo mundo reconhece que esse é o problema. Não é a velocidade do código. É a velocidade de compreensão de sistemas complexos. Isso é realmente o que está quebrando.”
A postagem AppMap lança revisão de código em tempo de execução como uma ação GitHub apareceu pela primeira vez em The New Stack.