Menu

Ferramentas

Adote?

  • Airflow continua sendo nossa ferramenta de gerenciamento de fluxo de trabalho de código aberto favorita para pipelines de processamento de dados como gráficos acíclicos direcionados (DAGs). Este é um espaço em crescimento, com ferramentas de código aberto, como Luigi e Argo, e ferramentas específicas de fornecedoras, como Azure Data Factory e AWS Data Pipeline. No entanto, o Airflow se diferencia com sua definição programática de fluxos de trabalho sobre arquivos de configuração de baixo código limitados, suporte para testes automatizados, instalação multiplataforma de código aberto, um conjunto rico de pontos de integração para o ecossistema de dados e grande suporte da comunidade. Em arquiteturas de dados descentralizadas, como malha de dados, no entanto, o Airflow atualmente falha como uma orquestração de fluxo de trabalho centralizado.

    Histórico
  • Bitrise, uma ferramenta de CD de domínio específico para aplicações móveis, continua sendo uma parte útil do fluxo de trabalho móvel, e os times realmente deveriam usá-la. Bitrise permite construir, testar e implantar aplicações móveis do laptop da pessoa desenvolvedora até a publicação na loja de aplicativos. É fácil de configurar e fornece um conjunto abrangente de etapas predefinidas para a maioria das necessidades de desenvolvimento móvel.

    Histórico
  • Entre as ferramentas disponíveis para manter as dependências atualizadas, Dependabot é uma escolha padrão sólida em nossa opinião. A integração do Dependabot com o GitHub é suave e as solicitações de pull são enviadas automaticamente para atualizar suas dependências para as versões mais recentes. Ele pode ser habilitado no nível da organização, portanto, é muito simples para os times receber essas solicitações pull. Se você não estiver usando o GitHub, ainda poderá usar as bibliotecas Dependabot em seu pipeline de compilação. Se você tiver interesse em uma ferramenta alternativa, considere também o Renovate, que oferece suporte a uma gama mais ampla de serviços, incluindo GitLab, Bitbucket e Azure DevOps.

    Histórico
  • Helm é um gerenciador de pacotes para Kubernetes. Ele vem com um repositório de aplicações Kubernetes selecionadas que são mantidas no repositório de gráficos oficial. Desde que falamos sobre o Helm pela última vez, o Helm 3 foi lançado e a mudança mais significativa é a remoção do Tiller, o componente do lado do servidor do Helm 2. A vantagem de um design sem o Tiller é que você só pode fazer alterações no cluster do Kubernetes do lado do cliente, ou seja, você só pode modificar o cluster de acordo com as permissões que possui como usuário do comando Helm. Usamos Helm em vários projetos de clientes e seu gerenciamento de dependências, modelos e mecanismo de hook simplificou muito o gerenciamento do ciclo de vida de aplicações no Kubernetes.

    Histórico
  • Pipelines de compilação que criam e implantam contêineres devem incluir escaneamento de segurança de contêiner. Nossos times gostam particularmente do Trivy, um scanner de vulnerabilidade para contêineres. Nós testamos Clair e Anchore Engine, entre outras boas ferramentas neste campo. Ao contrário do Clair, o Trivy não verifica apenas contêineres, mas também dependências na base de código. Além disso, como o Trivy é fornecido como um binário autônomo, é mais fácil configurar e executar o escaneamento localmente. Outros benefícios do Trivy incluem o fato de ser um software de código aberto e suportar contêineres sem distribuição.

    Histórico

Experimente?

  • Bokeh é uma das principais bibliotecas em Python para a criação de gráficos científicos e visualizações de dados renderizados no navegador via JavaScript. Essas ferramentas, em comparação com as ferramentas de desktop que criam imagens estáticas, facilitam a reutilização de código para trabalho exploratório em aplicações web. Bokeh é particularmente útil para isso. A biblioteca é madura e cheia de recursos. O que gostamos em Bokeh é que ela é ótima em manter sua preocupação como uma ferramenta de camada de apresentação, e não tentar assumir preocupações como agregação de dados (consulte ggplot) ou desenvolvimento de aplicações web (como Shiny ou Dash). Por isso, é uma ótima opção para usar quando a separação de interesses for importante para você. Bokeh fornece widgets de IU web e pode ser executada no modo de servidor, mas você pode usar ou descartar esses recursos como achar melhor. Bokeh é flexível e não faz muitas suposições sobre como você vai usá-la, nem tem muitas dependências (como pandas ou notebooks).

    Histórico
  • A implementação de pipelines de entrega contínua sustentáveis que podem compilar e implantar software de produção em vários ambientes requer uma ferramenta que trate pipelines de compilação e artefatos como cidadãos de primeira classe. Quando começamos a avaliar o Concourse, gostamos de seu modelo simples e flexível, o princípio de compilações baseadas em contêiner e o fato de que ele obriga você a definir pipelines como código. Desde então, a usabilidade melhorou e o modelo simples resistiu ao teste do tempo. Muitos de nossos times e clientes têm usado com sucesso o Concourse para a configuração de pipelines grandes por longos períodos de tempo. Com frequência, também nos beneficiamos da flexibilidade do Concourse para executar workers em qualquer lugar, por exemplo, quando os testes de integração de hardware exigem uma configuração local.

    Histórico
  • Esta edição do Radar apresenta várias novas ferramentas para a criação de aplicações web que ajudam usuários finais a visualizar e interagir com dados. Essas ferramentas vão além de bibliotecas de visualização simples, como D3. Em vez disso, elas reduzem o esforço necessário para construir aplicações analíticas independentes para manipular conjuntos de dados existentes. Dash, da Plotly, está ganhando popularidade entre cientistas de dados por criar aplicações analíticas amplamente funcionais em Python. O Dash aumenta as bibliotecas de dados do Python, de forma semelhante ao que Shiny faz a partir do R. Essas aplicações às vezes são chamadas de painéis, mas a gama de funcionalidades possíveis é realmente muito maior do que o termo implica. Dash é particularmente adequado para criar aplicações escaláveis e prontas para produção, ao contrário do Streamlit, outra ferramenta desta classe. Considere o uso do Dash quando precisar apresentar aos usuários de negócios análises mais sofisticadas do que uma solução com pouco ou nenhum código, como o Tableau, pode fornecer.

    Histórico
  • A manutenção de bases de código JavaScript em grande escala nunca é fácil, mas é especialmente desafiadora quando migramos alterações que podem gerar quebras. IDEs com recursos de refatoração podem ajudar em cenários simples. No entanto, quando sua base de código é uma biblioteca com ampla dependência, toda vez que você faz uma alteração importante, é preciso passar por uma série de bases de código de clientes para fazer as atualizações apropriadas — o que requer supervisão humana e precisa ser feito de forma manual. jscodeshift, um kit de ferramentas para refatorar JavaScript e TypeScript, ajuda a aliviar essa dor. Ele pode analisar seu código para construir árvores de sintaxe abstratas (AST) e fornecer uma API para manipular a árvore com várias transformações (por exemplo, adicionar, renomear e excluir propriedades de componentes existentes), em seguida exportando a árvore como código-fonte final. jscodeshift também vem com um utilitário de testes de unidade simples que pode aplicar desenvolvimento orientado a testes para escrever codemods de migração. Consideramos o jscodeshift bastante útil para a manutenção de sistemas de design.

    Histórico
  • Kustomize é uma ferramenta para gerenciar e personalizar arquivos de manifesto do Kubernetes. Ele permite selecionar e ajustar recursos básicos do Kubernetes antes de aplicá-los a ambientes diferentes, e agora conta com suporte nativo do kubectl. Gostamos da ferramenta porque ela ajuda a manter seu código DRY e, ao contrário do Helm, (que tenta fazer muitas coisas ao mesmo tempo — gerenciamento de pacotes, gerenciamento de versões, etc.), consideramos que o Kustomize segue a filosofia Unix: faça uma coisa bem feita e espere que a saída de cada programa seja entrada para outro.

    Histórico
  • MLflow é uma ferramenta de código aberto para rastreamento de experimentos de aprendizado de máquina e gerenciamento de ciclo de vida. O fluxo de trabalho para desenvolver e evoluir continuamente um modelo de aprendizado de máquina inclui uma série de experimentos (uma coleção de execuções), rastreamento de desempenho desses experimentos (uma coleção de métricas) e rastreamento e ajuste de modelos (projetos). O MLflow facilita esse fluxo de trabalho muito bem, suportando os padrões abertos existentes e se integrando bem com muitas outras ferramentas no ecossistema. O MLflow como um serviço gerenciado por Databricks na nuvem, disponível em AWS e Azure, está amadurecendo rapidamente e temos usado com sucesso em nossos projetos. Consideramos o MLflow uma ótima ferramenta para gerenciamento e rastreamento de modelos, com suporte para modelos de interação baseados em UI e API. Nossa única e crescente preocupação é que o MLflow tenta entregar muitas questões conflitantes como uma única plataforma, por exemplo, modelos de serviço e pontuação.

    Histórico
  • As abordagens de testes tradicionais se concentram em avaliar se nosso código de produção está fazendo o que deveria. No entanto, podemos cometer erros no código de teste, introduzindo afirmações incompletas ou inúteis que criam uma falsa sensação de confiança. É aqui que entra o teste de mutação: ele avalia a qualidade dos próprios testes, encontrando pontos cegos que são difíceis de perceber. Nossos times têm usado Pitest há algum tempo, e recomendamos seu uso em projetos Java para medir a integridade do conjunto de testes. Resumindo, o teste de mutação introduz mudanças no código de produção e executa os mesmos testes uma segunda vez; se os testes ainda estiverem verdes, significa que os testes não estão bons e precisam ser melhorados. Se você estiver usando linguagens de programação diferentes de Java, Stryker é uma boa escolha neste espaço.

    Histórico
  • Sentry é uma ferramenta de monitoramento de aplicações multiplataforma com foco em relatórios de erros. Ferramentas como Sentry se diferenciam das soluções de registro tradicionais, como ELK Stack, em seu foco na descoberta, investigação e correção de erros. Sentry já existe há algum tempo e oferece suporte a várias linguagens e frameworks. Usamos Sentry em muitos projetos e tem sido muito útil para rastrear erros, descobrindo se um commit realmente corrigiu um problema e nos alertando se um problema reaparecer devido a uma regressão.

    Histórico
  • Ainda que as ferramentas tenham evoluído muito no espaço da infraestrutura, escrever um shell script pode fazer sentido em alguns casos. Naturalmente, a sintaxe dos shell scripts é dominada por poucas pessoas e, como temos menos prática escrevendo shell scripts atualmente, passamos a gostar do ShellCheck, um linter para shell scripts. ShellCheck pode ser usado a partir da linha de comando, como parte de uma compilação ou, melhor ainda, como uma extensão em muitos IDEs populares. O wiki contém uma descrição detalhada de centenas de problemas que o ShellCheck pode detectar, e a maioria das ferramentas e IDEs fornecem uma maneira conveniente de acessar a respectiva página do wiki quando um problema é encontrado.

    Histórico
  • Stryker é um relativamente novo estreante no espaço de testes de mutação. Semelhante ao Pitest, o Stryker permite avaliar a qualidade dos seus testes. Temos o usado com muito sucesso em projetos de JavaScript, mas ele também oferece suporte a projetos de C# e Scala. O Stryker é muito amigável e altamente personalizável, e temos conseguido aumentar a cobertura de código e a confiança nas aplicações que entregamos para nossas clientes.

    Histórico
  • Usamos o Terraform extensivamente para criar e gerenciar infraestrutura em nuvem. Em nossa experiência com configurações maiores, nas quais o código é dividido em módulos que são incluídos de maneiras diferentes, os times acabam se deparando com uma parede de repetição inevitável causada por falta de flexibilidade. Lidamos com esse problema usando Terragrunt, um wrapper fino para Terraform que implementa as práticas defendidas por Yevgeniy Brikman em Terraform: Up and Running. Consideramos o Terragrunt útil por encorajar módulos versionados e reutilização para diferentes ambientes. Os ganchos de ciclo de vida são outro recurso útil que fornece flexibilidade adicional. Em termos de empacotamento, o Terragrunt tem as mesmas limitações do Terraform: não há uma maneira adequada de definir pacotes ou dependências entre pacotes. Como solução alternativa, você pode usar módulos e especificar uma versão associada a uma tag Git.

    Histórico
  • A segurança é uma preocupação geral e capturar riscos cedo é sempre melhor do que enfrentar problemas mais tarde. No espaço de infraestrutura como código, no qual Terraform é uma escolha óbvia para gerenciar ambientes em nuvem, agora também temos tfsec, uma ferramenta de análise estática que escaneia os modelos do Terraform para encontrar possíveis problemas de segurança. Nossos times têm usado tfsec com bastante sucesso. A ferramenta é fácil de configurar e usar, o que a torna uma ótima escolha para qualquer time de desenvolvimento determinado a mitigar riscos de segurança para evitar violações. Suas regras predefinidas para diferentes provedores de nuvem, incluindo AWS e Azure, complementam os benefícios que o tfsec traz para times que usam Terraform.

    Histórico
  • Yarn continua a ser o gerenciador de pacotes de escolha para muitos times. Recebemos com entusiasmo o lançamento do Yarn 2, um novo release importante, com uma longa lista de mudanças e melhorias. Além de ajustes de usabilidade e melhorias na área de espaços de trabalho, o Yarn 2 introduz o conceito de zero-installs, que permite às pessoas desenvolvedoras executar um projeto diretamente após cloná-lo. No entanto, o Yarn 2 inclui algumas mudanças importantes que tornam a atualização não-trivial. Ele também traz ambientes plug'n'play (PnP) como padrão, mas não oferece suporte ao React Native em ambientes PnP. Os times podem, é claro, desabilitar o PnP ou permanecer no Yarn 1. No entanto, eles devem estar cientes de que o Yarn 1 está agora em modo de manutenção.

    Histórico

Avalie?

  • Incluímos entrega contínua para aprendizado de máquina como uma técnica em edições anteriores do Radar e, neste edição, queremos destacar uma nova ferramenta promissora chamada Continuous Machine Learning (ou CML), das mesmas pessoas responsáveis pelo DVC. O CML visa trazer as melhores práticas de engenharia de CI e CD para times de IA e ML, e pode ajudar a organizar sua infraestrutura MLOps em cima de uma stack de engenharia de software tradicional, em vez de criar plataformas de IA separadas. Gostamos do fato de priorizarem o suporte para DVC e vemos isso como um bom sinal para essa nova ferramenta em crescimento.

    Histórico
  • Há muito tempo gostamos da ideia de usar geradores de site estáticos para evitar a complexidade e melhorar o desempenho, sempre que o caso de uso permitir. Embora Eleventy já exista há alguns anos, a ferramenta chamou nossa atenção recentemente, à medida que amadureceu e os favoritos anteriores, como Gatsby.js, apresentaram alguns problemas de escalabilidade. Eleventy permite aprendizado rápido e facilidade para a construção de sites. Também gostamos da facilidade para criar marcação semântica (e, portanto, mais acessível) com seus modelos e seu suporte simples e robusto para paginação.

    Histórico
  • Malhas de serviços e gateways de API fornecem uma maneira conveniente de rotear o tráfego para uma variedade de microsserviços que implementam a mesma interface de API. Flagger usa esse recurso para ajustar dinamicamente a parte do tráfego que é roteada para uma nova versão de um serviço. Esta é uma técnica comum para implantações canário ou implantações azul-verde. Flagger trabalha em conjunto com uma variedade de proxies populares (incluindo Envoy e Kong) para aumentar progressivamente as solicitações para um serviço e relatar métricas sobre a carga para fornecer feedback rápido sobre uma nova implantação. Gostamos da característica do Flagger de simplificar essa prática valiosa para que ela possa ser adotada de forma mais ampla. Embora Flagger seja patrocinado pela Weaveworks, é uma ferramenta independente, sem qualquer obrigação de ser usada em conjunto com outras ferramentas da Weaveworks.

    Histórico
  • Ao conectar-se a instâncias de servidor na AWS, é recomendável passar por um host bastião em vez de uma conexão direta. No entanto, provisionar um host bastião apenas para essa finalidade pode ser frustrante, e é por isso que o Gerenciador de Sessões do AWS Systems Manager fornece tunelamento para uma conexão mais confortável para seus servidores. gossm é uma ferramenta CLI de código aberto que torna o uso do Gerenciador de Sessões ainda mais conveniente. O gossm permite que você se beneficie da segurança fornecida pelo Gerenciador de Sessões e das políticas IAM do seu terminal usando ferramentas como ssh escp. Ele também tem alguns recursos ausentes na AWS CLI, incluindo descoberta de servidor e integração SSH.

    Histórico
  • Com o crescimento de CD4ML, os aspectos operacionais da engenharia e ciência de dados têm recebido mais atenção. A governança de dados automatizada é um aspecto desse desenvolvimento. Great Expectations é um framework que permite criar controles integrados que sinalizam anomalias ou problemas de qualidade em pipelines de dados. Assim como os testes de unidade são executados em um pipeline de compilação, o Great Expectations faz afirmações durante a execução de um pipeline de dados. Isso é útil não apenas para implementar uma espécie de Andon para pipelines de dados, mas também para garantir que algoritmos baseados em modelo permaneçam dentro da faixa operacional determinada por seus dados de treinamento. Controles automatizados como esses podem ajudar a distribuir e democratizar o acesso e a custódia dos dados. O Great Expectations também vem com uma ferramenta de criação de perfil para ajudar a entender as qualidades de um determinado conjunto de dados e definir os limites apropriados.

    Histórico
  • Vemos com muito entusiasmo o k6, uma ferramenta relativamente nova no ecossistema de testes de desempenho, com um forte foco na experiência de desenvolvimento. O executor de linha de comando do k6 executa scripts escritos em JavaScript e permite configurar o tempo de execução e o número de usuários virtuais. A CLI tem vários recursos avançados que permitem visualizar as estatísticas atuais antes que o teste termine de ser executado, aumentar o número de usuários virtuais além do que foi definido originalmente e até mesmo pausar e retomar um teste em execução. A saída da linha de comando fornece um conjunto de métricas personalizáveis com transformadores que permitem visualizar os resultados em Datadog e outras ferramentas de observabilidade. Adicionar checks aos seus scripts é uma maneira fácil de integrar o teste de desempenho em seu pipeline de CI/CD. Para testes de desempenho acelerados, confira a versão comercial, k6 Cloud, que fornece escalonamento de nuvem e visualizações adicionais.

    Histórico
  • Katran é um balanceador de carga de camada 4 de alto desempenho. Não é para todo mundo, mas se você precisar de redundância para balanceadores de carga de camada 7 (como HAProxy ou NGINX), ou precisar escalar balanceadores de carga para dois ou mais servidores, então recomendamos avaliar o Katran. Vemos o Katran como uma escolha mais flexível e eficiente em relação a técnicas como round-robin DNS sobre balanceadores de carga de camada 7, ou o modelo de Kernel IPVS que profissionais de engenharia de rede geralmente adotam para resolver desafios semelhantes.

    Histórico
  • Dado o aumento do uso de malha de serviços para implantar coleções de microsserviços em contêineres, podemos esperar o surgimento de ferramentas que automatizem e simplifiquem as tarefas administrativas associadas a este estilo de arquitetura. Kiali é uma dessas ferramentas. Kiali fornece uma interface de usuário gráfica para observar e controlar redes de serviços implantados com Istio. Achamos Kiali útil para visualizar a topologia de serviços em uma rede e entender o tráfego roteado entre eles. Por exemplo, quando usado em conjunto com Flagger, o Kiali pode exibir solicitações que foram roteadas para uma implantação de serviço canário. Gostamos particularmente da capacidade do Kiali de injetar artificialmente falhas de rede em uma malha de serviços para testar sua resiliência diante de interrupções na rede. Essa prática é freqüentemente ignorada devido à complexidade de configurar e executar testes de falha em uma malha complexa de microsserviços.

    Histórico
  • Escrever código seguro sempre foi importante, mas é apenas uma das muitas coisas que as pessoas desenvolvedoras devem priorizar. O LGTM fornece uma rede de segurança e um meio para se beneficiar de uma base de conhecimento de práticas de programação seguras. É uma ferramenta de análise de código estático com foco na segurança, apoiada por um catálogo (parcialmente de código aberto) de regras de programação seguras. As regras são implementadas como consultas em sua base de código na linguagem de consulta CodeQL. A ferramenta pode ser usada para integrar verificações de segurança de caixa branca em seus pipelines de CD para Java, Go, JavaScript, Python, C # e C/C++. LGTM e CodeQL são parte do Github Security Lab.

    Histórico
  • Litmus é uma ferramenta de engenharia do caos com uma baixa barreira de entrada. Ele permite injetar vários cenários de erro em seu cluster Kubernetes com o mínimo de esforço. Tem nos impressionado positivamente a variedade de recursos que o Litmus oferece para além da eliminação aleatória de pod, incluindo simulação de problemas de rede, CPU, memória e E/S. O Litmus também oferece suporte a experimentos personalizados para simular erros para Kafka e Cassandra, entre outros serviços comuns.

    Histórico
  • O conceito de privacidade diferencial apareceu pela primeira vez no Radar em 2016. Embora o problema de quebrar a privacidade por meio de consultas de inferência de modelo sistemáticas tenha sido reconhecido naquela época, era majoritariamente uma questão teórica, já que existiam poucas soluções práticas. A indústria carece de ferramentas para evitar que isso aconteça. Opacus é uma nova biblioteca Python que pode ser usada em conjunto com PyTorch para ajudar a impedir um tipo de ataque de privacidade diferencial. Embora seja um desenvolvimento promissor, encontrar o modelo e o conjunto de dados certos para sua aplicação tem sido um desafio. A biblioteca ainda é bastante nova, por isso estamos na expectativa para observar como será sua aceitação no futuro.

    Histórico
  • É importante para um time de desenvolvimento identificar se as dependências de sua aplicação têm vulnerabilidades conhecidas. O OSS Index pode ser usado para esse objetivo. O OSS Index é um catálogo gratuito de componentes e ferramentas de escaneamento de código aberto, projetados para ajudar os times de desenvolvimento a identificar vulnerabilidades, entender os riscos e manter seu software seguro. Nossos times já estão integrando esse index em pipelines por meio de diferentes linguagens, incluindo AuditJS e Gradle plugin. A velocidade é alta, as vulnerabilidades são identificadas com precisão e há pouca ocorrência de falsos positivos.

    Histórico
  • O espaço de testes de IU web continua ativo. Algumas das pessoas responsáveis pela criação do Puppeteer se juntaram à Microsoft e agora estão aplicando seus aprendizados no Playwright, que permite escrever testes para Chromium, Firefox, e também para WebKit, tudo por meio da mesma API. O Playwright ganhou atenção por seu suporte a todos os principais navegadores, algo que ele consegue fazer atualmente, incluindo versões patched do Firefox e Webkit. Resta saber o quão rapidamente outras ferramentas vão conseguir se equiparar, com suporte cada vez maior para o Chrome DevTools Protocol como uma API comum para automatizar navegadores.

    Histórico
  • pnpm é um gerenciador de pacotes para Node.js promissor, que estamos examinando de perto por sua velocidade e eficiência superiores em comparação com outros gerenciadores de pacotes. As dependências são salvas em um único lugar no disco e vinculadas aos respectivos diretórios node_modules. pnpm também oferece suporte à otimização incremental no nível do arquivo, fornece uma API base sólida para permitir extensão/personalização e oferece suporte ao modo de servidor de armazenamento, o que acelera ainda mais o download de dependências. Se sua organização tem um grande número de projetos com as mesmas dependências, você pode se interessar por examinar o pnpm mais de perto.

    Histórico
  • Sensei, do Secure Code Warrior, é um plugin Java IDE que facilita a criação e a distribuição de diretrizes de qualidade de código seguro. Na ThoughtWorks, muitas vezes defendemos "ferramentas acima de regras", ou seja, facilitar que a coisa certa seja feita em vez de aplicar regras e procedimentos de governança como checklists. E essa ferramenta se encaixa nessa filosofia. As pessoas desenvolvedoras podem criar receitas facilmente compartilhadas com outros membros do time. Elas podem ser simples ou complexas, e são implementadas como consultas direcionadas para Java AST. Os exemplos incluem avisos para injeção de SQL, fraqueza criptográfica e muitos outros. Outro recurso que gostamos: por ser executado em alterações de código no IDE, o Sensei fornece feedback mais rápido do que as ferramentas de análise estática mais tradicionais.

    Histórico
  • Zola é um gerador de site estático escrito em Rust. Como tal, ele vem como um único executável sem dependências, é muito rápido e suporta tudo o que é esperado, como Sass, conteúdo em markdown e recarregamento a quente. Tivemos sucesso na construção de sites estáticos com o Zola e apreciamos sua usabilidade intuitiva.

    Histórico

Evite?

    Não encontrou algo que você esperava achar?

    Cada edição do radar inclui blips que refletem nossas experiências nos seis meses anteriores. Talvez já tenhamos falado sobre o que você procura em um radar anterior. Às vezes, deixamos coisas de fora simplesmente porque há muitas a serem abordadas. Também pode estar faltando um tópico específico porque o radar reflete nossa experiência, não se baseando em uma análise abrangente do mercado.

    Novo,Modificado,Sem alteração