

Como vimos na semana passada com o que aconteceu como resultado de uma atualização ruim da CrowdStrike, está mais claro do que nunca que as empresas que lançam software program precisam de uma maneira de reverter as atualizações se as coisas derem errado.
No episódio mais recente do nosso podcast, O que é isso, Dev?conversamos com Konrad Niemiec, fundador e CEO da ferramenta de sinalização de recursos, Lekkopara falar sobre a importância de adicionar sinalizadores de recursos ao seu código, mas também o que pode dar errado se os sinalizadores não forem mantidos adequadamente.
Aqui está uma versão editada e resumida dessa conversa:
David Rubinstein, editor-chefe do SD Occasions: Por anos, falamos sobre sinalização de recursos no contexto de experimentação de código, onde você pode liberar para um pequeno grupo de pessoas. E se elas gostarem, você pode espalhar para mais pessoas, ou pode reverter sem realmente causar nenhum dano se não funcionar da maneira que você pensou que funcionaria. Qual é a sua opinião sobre toda a situação da sinalização de recursos?
Konrad Niemiec, fundador e CEO da Lekko: A sinalização de recursos agora é considerada a maneira principal de liberar recursos de software program. Então, é definitivamente uma prática que queremos que as pessoas continuem fazendo e continuem evangelizando.
Quando eu estava na Uber, usávamos uma ferramenta de configuração dinâmica chamada Flipper, e eu deixei a Uber para uma startup menor chamada Sisu, onde usávamos uma das principais ferramentas de sinalização de recursos do mercado. E quando eu a usava, embora ela nos permitisse sinalizar recursos e resolvesse vários problemas para nós, encontramos diferentes problemas que resultaram em risco e complexidade sendo adicionados ao nosso sistema.
Então acabamos tendo um monte de sinalizadores obsoletos espalhados em nossa base de código, e coisas que precisávamos manter por perto porque o negócio precisava delas. E então acabamos em uma situação em que o código se tornou muito difícil de manter, e period muito difícil manter as coisas limpas. E acabamos causando problemas a torto e a direito.
DR: O que você quer dizer com uma bandeira velha?
KN: Uma implementação de um sinalizador de recurso geralmente se parece com uma declaração if no código. Ela dirá que se o sinalizador de recurso estiver habilitado, farei uma coisa, caso contrário, farei a versão antiga do código. É assim que parece quando você está realmente adicionando-o como engenheiro. E o que um sinalizador obsoleto significa é que o sinalizador estará totalmente ativado. Então você o terá implementado completamente, mas está deixando aquele caminho de código ‘else’ lá. Então você basicamente tem algum código que praticamente nunca será executado, mas ainda está em seus binários. E ele quase se transforma neste zumbi. Gostamos de chamá-los de sinalizadores zumbis, onde eles meio que aparecem quando você menos espera. Você acha que eles estão mortos, mas eles voltam à vida.
E isso acontece frequentemente em startups que estão tentando se mover rápido. Você quer lançar recursos o mais rápido possível para não ter tempo de ter uma atualização de limpeza de sinalizadores e passar por e categorizar para ver se deve remover todas essas coisas do código. E elas acabam se acumulando e potencialmente causando problemas por causa desses caminhos de código obsoletos.
DR: Que tipo de problemas?
KN: Então, um exemplo fácil é que você tem algum tipo de código não testado com base em uma combinação de sinalizadores de recursos. Digamos que você tenha dois sinalizadores de recursos que estão em uma parte semelhante da base de código, então agora há quatro caminhos diferentes. E se um deles não foi executado por um tempo, as probabilities são de que haja um bug. Então, uma coisa que aconteceu na Sisu foi que um dos nossos maiores clientes encontrou um problema quando desativamos por engano o sinalizador errado. Achamos que estávamos meio que revertendo um novo recurso para eles, mas pulamos para um caminho de código obsoleto e acabamos causando um grande problema para esse cliente.
DR: Isso é algo que a inteligência synthetic poderia usar como forma de analisar o código e sugerir a remoção desses sinalizadores zumbis?
KN: Com as ferramentas atuais, é um processo muito guide. Espera-se que você apenas passe e limpe as coisas sozinho. E é exatamente isso que estamos vendo. Acreditamos que a IA generativa tem um grande papel a desempenhar aqui. Agora estamos começando com abordagens heurísticas simples, bem como algumas abordagens de IA generativa para descobrir, ei, quais são alguns caminhos de código realmente complicados aqui? Podemos sinalizar isso e potencialmente reduzir significativamente esses caminhos de código obsoletos? Podemos definir configurações permitidas?
Algo que vemos como uma grande diferença entre a configuração dinâmica e o sinalizador de recursos em si é que você pode combinar diferentes sinalizadores ou diferentes partes de comportamento dinâmico no código juntos como uma configuração definida. E dessa forma, você pode reduzir o número de opções possíveis por aí, e diferentes caminhos de código com os quais você tem que se preocupar. E achamos que a IA tem um lugar enorme na melhoria da segurança e na redução do risco de usar esse tipo de ferramenta.
DR: Quão amplamente adotado é o uso de sinalizadores de recursos neste momento?
KN: Acreditamos que, especialmente entre empresas de tecnologia de médio a grande porte, é provavelmente a maioria das empresas que atualmente usam a sinalização de recursos em alguma capacidade. Você encontra uma parcela significativa de empresas construindo a sua própria. Muitas vezes, os engenheiros tomam as rédeas e constroem um sistema. Mas, muitas vezes, quando você atinge algum nível de complexidade, você rapidamente percebe que há muito envolvido em tornar o sistema escalável e também funcionar em uma variedade de casos de uso diferentes. E há muitos problemas que acabam surgindo como resultado disso. Então, achamos que é uma boa parcela das empresas, mas elas podem não estar todas usando ferramentas de sinalização de recursos de terceiros. Algumas empresas até passam por todo o ciclo de vida, começam com uma ferramenta de sinalização de recursos, a retiram e, então, gastam um esforço significativo construindo ferramentas semelhantes às que o Google, Uber e Fb têm, essas ferramentas de configuração dinâmica.
Você pode gostar…
Perguntas e respostas sobre o novo Consórcio de Segurança Crítica à Ferrugem da Rust Basis