Feature Flags, também conhecidos como “feature toggles” ou “flippers“, são uma técnica de desenvolvimento de software que permite ativar ou desativar recursos específicos de um aplicativo, em tempo real, sem a necessidade de uma nova versão do software ou de uma atualização.
Essa técnica é útil para permitir a implantação contínua e o teste de recursos em ambientes de produção, controlar o acesso a recursos em diferentes níveis de usuários ou permitir o teste de recursos para grupos específicos de usuários.
Com os Feature Flags, as empresas podem lançar novos recursos gradualmente, permitindo que os usuários experimentem a nova funcionalidade, enquanto monitoram e ajustam a sua implementação com base no feedback dos usuários.
Quais tipos de feature flags existem?
Existem muitas variações de feature flags, mas eles podem ser categorizadas em 4 grupos principais.
- Boolean Flags: Esses tipos de flags são binários, ou seja, eles têm apenas dois estados possíveis: verdadeiro ou falso. Eles são usados para controlar recursos que estão ativos ou inativos. Por exemplo, você pode usar um boolean flag para ativar ou desativar uma nova funcionalidade em sua aplicação.
- Gradual Rollout Flags: Também conhecidos como “ramp-up flags” ou “canary releases“, esses tipos de flags permitem que você lance uma nova funcionalidade para um subconjunto de usuários em vez de todos ao mesmo tempo. Isso permite que você teste a nova funcionalidade em um ambiente controlado antes de lançá-la para todos os usuários.
- User-Based Flags: Esses tipos de flags permitem que você personalize a experiência do usuário com base em dados específicos do usuário, como sua localização geográfica, preferências de idioma ou histórico de compras. Eles são úteis para personalizar a experiência do usuário e fornecer recursos relevantes para usuários específicos.
- Experiment Flags: Esses tipos de flags permitem que você teste diferentes variações de uma funcionalidade em um ambiente controlado para determinar qual variação funciona melhor antes de lançá-la para todos os usuários. Eles são úteis para otimizar a experiência do usuário e melhorar o desempenho da funcionalidade.
Você pode combiná-las com outras flags para criar cenários mais complexos, como ativar um recurso para um grupo específico de usuários e ao mesmo tempo desativá-lo para outro grupo.
Quais estratégias de liberação de feature flags
Feature flags baseadas em porcentagem
Essas flags permitem que você ative ou desative um recurso para uma porcentagem específica de usuários. Você pode combiná-las com outras flags para controlar o comportamento do recurso em diferentes porcentagens, como ativar o recurso para 50% dos usuários e, em seguida, aumentar gradualmente essa porcentagem ao longo do tempo.
Feature flags baseadas em data
Essas flags permitem que você ative ou desative um recurso em uma data específica. Você pode combiná-las com outras flags para criar lançamentos programados, como ativar o recurso em uma data específica para um grupo de usuários e, em seguida, desativá-lo em outra data.
Feature Flags open source
A comunidade tem trabalhado ativamente em soluções de feature flags open source. Muitas delas você pode encontrar no site featureflags.io, onde tem vários SDKs em linguagens como PHP, JAVA, Javascript, Go, .NET, Python, Ruby e também para dispositivos móveis como IOS e Android. Isso pode ajudar você a poupar tempo e focar no seu produto.
Como posso usar as feature flags alinhadas à estratégia de produto?
As feature flags podem ser usadas para alinhar a estratégia do produto ao processo de desenvolvimento de software.
Com isso antes de definir a melhor abordagem, é necessário entender os critérios de sucesso do produto além dos 4 grandes riscos citados por Marty Cagan, ou seja, risco de valor, risco de usabilidade, risco de viabilidade técnica e risco de viabilidade de negócios.
Uso de Feature Flags para mitigar os Riscos de Valor e Usabilidade
As feature flags podem ser usadas para mitigar o risco de valor de uma nova funcionalidade, permitindo que você lance novos recursos para um grupo selecionado de usuários, antes de disponibilizá-los para todos. Isso ajuda a entender como os usuários reagem à nova funcionalidade, avaliar seu valor e tomar decisões informadas antes de implementar a nova funcionalidade amplamente.
Por exemplo, você pode lançar uma nova funcionalidade apenas para usuários beta selecionados que optaram por testar novas funcionalidades. Se os usuários acharem a funcionalidade útil, você pode decidir implementá-la amplamente. Por outro lado, se os usuários não acharem a funcionalidade útil, pode decidir abandonar ou retrabalhar a funcionalidade antes de lançá-la para o público em geral.
Desta forma você pode minimizar o risco de valor, garantindo que os usuários realmente valorizem a nova funcionalidade antes de serem disponibilizados para todos.
Uso de Feature Flags para mitigar os Riscos de Viabilidade Técnica
As feature flags também podem ser usadas para mitigar o risco de viabilidade técnica de uma nova funcionalidade ou refatoração de uma existente, permitindo que se faça testes controlados em ambientes de produção e determinar se a nova funcionalidade funciona conforme o esperado antes de ser implementada.
Como exemplo, você pode lançar uma nova funcionalidade utilizando da Canary Releases a nível de infra estrutura, garantindo que a maior parte dos seus usuários não sejam afetados por problemas de performance ou comportamento inesperado.
E com isso, poderá avançar ou retroceder nas fases de liberação desta nova funcionalidade quando avaliar as métricas e os critérios de sucesso técnicos definidos para esta funcionalidade.
Uso de Feature Flags para mitigar os Riscos de Viabilidade do negócio
Muitos produtos já sairam do mercado por não saber controlar ou avaliar bem os limites da inovação frente ao mercado, umas inovaram foram do tempo ou sem a devida preparação e outras não apostaram na inovação. Vou dar dois exemplos abaixo:
Blockbuster: A Blockbuster foi líder no mercado de locação de filmes em VHS e DVD, mas não conseguiu se adaptar ao mercado de streaming de filmes. Eles inovaram pouco e foram ultrapassados por empresas como Netflix. A Blockbuster acabou falindo em 2010.
Google Glass: O Google Glass foi um produto inovador que prometia revolucionar a forma como as pessoas interagiam com a tecnologia. No entanto, o produto não conseguiu ganhar aceitação do público devido a preocupações com privacidade e segurança. O Google acabou suspendendo a produção do Glass em 2015.
Claramente a solução dos problemas dos casos de fracassos acima não seria uma ferramenta de feature flag, mas sim o conceito por trás dela, que seria uma forma de validar de forma segura e em ambiente controlado a expectativa do negócio frente a necessidade dos usuários.
Feature Flags ou Feature Toggles são apenas ferramentas para uma boa estratégia de produto com critérios de sucesso e fracasso bem definidos.
Misael Soares
Em resumo, se você é um Product Manager ou Software Developer que trabalha em times de produto em empresas de tecnologia, sempre parta da estratégia para as ferramentas e abordagens de uso.
Portanto, ao adotar as feature flags como uma ferramenta estratégica, as empresas de tecnologia podem alcançar melhores resultados, atender às necessidades dos clientes e manter-se competitivas no mercado.
Pingback: Distribuição de Software - Staged Rollouts - Misael Soares