Falando sobre Feature Flags

Bruno Cruz
Petlabs
3 min readAug 5, 2021

--

Flags everywhere!!!

O desenvolvimento de software em muitos momentos pode não ser tão divertido, principalmente quando estamos em um contexto dinâmico em que existem diversas mudanças de negócio, prazos curtos, alterações de grande importância e impacto e o estresse que tudo isso junto pode causar.

Com isso em mente, ter garantias de que sua aplicação possa voltar ao estado anterior rapidamente (e que funcione), caso um problema ocorra após a implementação de uma nova funcionalidade ou alteração de grande impacto é extremamente importante e pode nos livrar de inúmeros fios brancos.

Uma das possibilidades de ter tais garantias é com a técnica Feature Flags.

O que é?

Feature Flag, também conhecida como Feature Toggle, é uma técnica de desenvolvimento de software que nos permite alterar o comportamento de uma aplicação, em tempo de execução, sem a necessidade de alterar seu código fonte, e é um meio de tornar hábil a prática de integração contínua.

Utilizar feature flags nos permite alternar o fluxo de execução do código dinâmica, simples e remotamente, sem a necessidade de um novo deploy. É possível fazer essa alternância de diversos modos, como por exemplo através de uma variável de ambiente:

Principais casos de uso

A utilização da feature flag pode ter um grande impacto dentro de um projeto e/ou produto — ainda mais se uma pessoa que possui o papel de Product Owner ou Product Manager estiver integrada ao processo — já que essa técnica viabiliza alterações rápidas e fáceis no comportamento da aplicação, principalmente nos cenários descritos a seguir:

Release

Esse tipo de flag nos dá uma flexibilidade e controle sobre as entregas que fazemos em produção, de forma que possamos agir rapidamente quando algum imprevisto ocorre. Podemos utilizar a feature flag nos seguintes cenários:

  • Novas Entregas
    Ao colocar em produção uma entrega importante às vezes pode ser necessário adiá-la por problemas de performance, por exemplo. Poderíamos apenas desabilitá-la de um jeito que o usuário final do sistema nem saiba que ela exista.
  • Entregas parciais
    Conseguimos fazer entregas parciais sem disponibilizá-las até que a funcionalidade ou melhoria esteja realmente completa e pronta para ser utilizada, sem a necessidade de uma feature branch por exemplo.
  • Alterações críticas
    Somos capazes de fazer alterações críticas na aplicação e observar o seu comportamento. Caso haja algum problema, conseguimos desabilitar a flag rapidamente para que o sistema volte a funcionar como antes, sem ter a necessidade de fazer um rollback. Então, é possível analisar com calma os problemas que aconteceram sem ter um impacto no usuário final ou travar outras entregas.

Testes

Este tipo de flag nos permite fazer vários tipos de testes em tempo de execução, por exemplo testes A/B ou disponibilizar uma funcionalidade/alteração gradualmente para uma parcela de usuários como no padrão Canary Release.

Acessos e Permissões

Também é possível usar Feature Toggles para controlar o acesso de determinadas partes ou funcionalidades da aplicação para um grupo de usuários. Isso pode implicar também em quem tem o controle sobre as próprias flags.

Concluindo…

Feature Flag é uma poderosa técnica de desenvolvimento de software que, se utilizada em conjunto com uma pessoa de produto, pode trazer grandes entregas de valor de forma ágil e eficaz. Existem formas de simplificar seu uso e de fazer com que as flags sejam configuradas sem precisarmos mexer no código, e uma delas é o uso de bibliotecas para este fim.

Uma das bibliotecas que usamos nas aplicações Elixir dentro da Petlove é a FunWithFlags que, além de conseguir simplificar a implementação desses toggles, oferece uma interface UI para que um PO ou PM, por exemplo, consiga editar as flags sem mexer no código em produção.

Nós entramos em detalhes de como utilizar a biblioteca no artigo “(Diversão com) Feature Flags em Elixir”.

Agradecimentos

Gostaria de agradecer ao Gustavo Chapim, Henrique Dalvi, Jhonatan Martins, Michelle Galindo e Guest Singleton pelas sugestões e comentários que ajudaram a melhorar o conteúdo deste texto.

Petlove&Co

Quer ajudar a criar produtos de qualidade com a gente?
Veja a página de carreiras da Matilha!

--

--

Bruno Cruz
Petlabs
Writer for

Gosto de gatos e cachorros, ler, ouvir podcasts, jogar video game, sou especialista em desenhar palitito e torcedor do Borussia Dortmund 💛 ❤