A evolução da Snyk CLI por meio de uma abordagem extensível
Steve Winton
7 de fevereiro de 2023
0 minutos de leituraTodos os dias, milhares de desenvolvedores usam a Snyk CLI em seu fluxo de desenvolvimento para identificar e corrigir problemas de segurança no código o quanto antes. E se esses desenvolvedores e outros profissionais de segurança pudessem aproveitar o poder dessa abordagem que prioriza quem desenvolve e também usar análises, filtros e fluxos de trabalho de segurança totalmente novos por meio de uma abordagem extensível? Imagine poder filtrar, ignorar e priorizar resultados de forma programática, de acordo com a lógica de negócios personalizada, ou incorporar análises de segurança próprias ao comando extensível snyk test e fazer com que os resultados dessas análises apareçam ao longo de todo o ciclo de vida do desenvolvimento de software.
É para isso que estamos evoluindo a Snyk CLI. Hoje, anunciamos o primeiro passo rumo a essa visão, com mudanças importantes.
Uma ótima experiência de CLI com um modelo distribuído
Desde seu primeiro commit de código aberto, em 2015, a Snyk CLI cresceu e foi adotada de forma extraordinária. Cada vez mais desenvolvedores contam com ela para proteger suas aplicações. Com um conjunto crescente de recursos que dá suporte a diversos fluxos de trabalho de segurança que priorizam quem desenvolve, ela abrange todos os aspectos de uma aplicação moderna, do código à nuvem.
Para concretizar nossa visão de extensibilidade e continuar ampliando a Snyk CLI, entregando valor aos usuários sem abrir mão de uma experiência de linha de comando clara e consistente, estamos substituindo a aplicação centralizada e “monolítica” da CLI por um modelo distribuído. Esse novo modelo adota a extensibilidade como padrão, com governança baseada em interfaces estáveis.
Estamos mudando a forma como projetamos, desenvolvemos e lançamos a Snyk CLI para que os comandos principais snyk funcionem como ponto de entrada comum para várias extensões, incluindo a própria CLI legada.
É bastante coisa para imaginar! Veja este diagrama que ajuda a ilustrar a abordagem:

Essa abordagem traz várias vantagens: mantemos a compatibilidade com versões anteriores e, ao mesmo tempo, podemos inovar e introduzir novos recursos em namespaces dedicados. Além disso, podemos dividir e decompor a aplicação monolítica legada da CLI com segurança e de forma gradual, separando-a em seus componentes (extensíveis).
Quem acompanha de perto as novidades recentes da CLI talvez já tenha percebido que estamos colocando esse modelo em prática com a introdução do comando snyk sbom, que está em beta e foi desenvolvido com nosso framework de extensibilidade.
Acompanhe as próximas novidades
Com o tempo, veremos mais extensões “de primeira classe” sendo lançadas e reunidas em uma experiência coesa no namespace principal da CLI snyk. Nosso objetivo é criar um ecossistema aberto de extensões úteis que permitam personalizar e inovar com a Snyk CLI. Por exemplo: uma ferramenta de segurança de terceiros que amplie as análises realizadas por snyk test, levando ainda mais recursos de segurança às ferramentas e aos fluxos de trabalho que os desenvolvedores usam e em que confiam todos os dias.
Por enquanto, embora por baixo dos panos as coisas estejam um pouco diferentes — com o ponto de entrada e as extensões disponibilizados como executáveis binários independentes —, do ponto de vista externo, nada muda na forma de usar a CLI. Continuaremos disponibilizando lançamentos pelo GitHub e pelo npm, e hospedando cada versão em nossa CDN, static.snyk.io. No futuro, se fizermos mudanças incompatíveis na Snyk CLI, vamos anunciá-las e identificá-las explicitamente (por exemplo, seguindo o versionamento semântico).
Enquanto isso, esperamos que você continue aproveitando a Snyk CLI para proteger seus fluxos de desenvolvimento. Saiba mais sobre a Snyk CLI em nossa documentação. Se tiver dúvidas ou precisar de ajuda, entre em contato.
Comece a participar de desafios de Capture the Flag
Aprenda a resolver desafios de Capture the Flag assistindo sob demanda ao nosso workshop virtual introdutório.



