Fala time! Bom ou não?
Tenho falado bastante, em minhas palestras, sobre uma técnica que utilizo como um dos mecanismos de entrega de valor – o Feature Toggle ou Feature Flag. Nesta série de artigos vou demonstrar o conceito e um pouco de como tenho trabalhado nas soluções digitais que desenvolvo.
O que é o Feature Toggle?
Feature Toggles (often also refered to as Feature Flags) are a powerful technique, allowing teams to modify system behavior without changing code.
Martin Fowler – https://martinfowler.com/articles/feature-toggles.html
Em uma tradução simples, o Feature Toggle é uma técnica que permite modificar o comportamento de uma aplicação sem a necessidade de recompilar. É como se fosse o interruptor de luz da nossa casa.
Não é um conceito totalmente novo. Quando utilizamos nosso aplicativo predileto temos um menu de configurações. Neste, habilitamos ou desabilitamos configurações e personalizamos nossa experiência. O Feature toggle é parecido!
Benefícios
O conceito é simples, mas os seus benefícios vão além de somente mudar um comportamento. Esta técnica permite, além disso, definir estratégias de Test A/B, entregar funcionalidades por região, diminuir o Lead Time (tempo de resposta) caso haja um erro na nova versão do software, evitando a necessidade de um Rollback em alguns casos, entre muitas outras aplicabilidades.
Como funciona?
A implementação desta técnica se dá, basicamente, em duas partes:
- Um ponto de decisão no código; e
- Serviço provedor de toggles.
Ponto de decisão
Todo código desenvolvido possui um ponto de decisão ou simplesmente um if. Então logo entendemos que:
Se o toggle X está habilitado então faça A senão faça B
Em cada necessidade que pode ter o seu comportamento modificado há um ponto de decisão que gera um débito técnico (nem tudo são flores). Mas é claro que além da técnica, existem várias maneiras de gerenciar esses “desconfortos” em nosso cenário de desenvolvimento.
Lembre-se: Em um cenário de entrega de valor constante, além do DevOps, um bom gerenciamento das atividades com base em agilidade e uma ótima comunicação são de extrema importância. Sendo assim, este débito técnico não será conhecido, apenas, pelo arquiteto e desenvolvedor. Também poderá envolver o time de negócios.
Serviço provedor de toggle
O serviço de provisão de toggles está hospedado através de um SAAS (Software as Service) ou em sua infraestrutura de nuvem ou local. Possui uma interface visual para o gerenciamento dos toggles e o PO (product owner) e o time de negócios terão acesso. Sendo assim, em um caso de um teste A/B, por exemplo, eles terão a liberdade de habilitar ou desabilitar alguma funcionalidade. Claro, a equipe de desenvolvimento representada, por exemplo, pelo Arquiteto de Software, também possuirá acesso ao recurso de provisão de toggles.
Espera! Para tudo. Então, se eu tenho um provedor de toggle, quer dizer que o meu “código” consome algum serviço para avaliar se deve executar ou não algum comando?
A resposta é SIM! 😀
Mas fique calmo. Existem várias técnicas que nos apoiam para diminuir essa “dor” que poderia degradar a performance de uma aplicação.
Considerações
A técnica de feature toggles é uma grande aliada na entrega de valor nas soluções digitais tendo aplicabilidade em vários cenários. Nos próximos posts vamos tratar do assunto de uma forma mais prática.
Até lá!