Dev (Back & Front)ARTIGO

Testes canários (A/B) e integração de releases – Feature Toggles

Neste artigo, Leonardo Matsumota fala sobre a importância das práticas de CD (Continuous Deployment) e apresenta o padrão Feature Toggles.

Testes canários (A/B) e integração de releases – Feature Toggles
Imagem: Leonardo Matsumota

As práticas de implementação contínua – CD (Continuous Deployment) são fundamentais no mundo digital, principalmente em empresas inovadoras com foco em time to market e criação de produtos. A esteira de publicação destas empresas realiza então o deploy de releases automático em produção.

Os testes canários (ou testes A/B) habilitam essas funcionalidades para um grupo controlado de usuários, mantendo em produção duas comunidades (A/B) para minimizar, por exemplo, o risco de negócio em liberar novas releases para comunidades de usuários.

Talvez seja necessário um experimento em um número reduzido de usuários para decidir se aquela funcionalidade será mantida ou removida.

Há estratégias para escolher a liberação da nova versão, desde a liberação interna para funcionários da própria empresa, até usuários escolhidos com base em seu perfil ou informações demográficas.

A aceitação da funcionalidade vai direcionando o aumento de infraestrutura e dos usuários para este ambiente.

E assim, possibilitam os testes A/B por restringir as novas funcionalidades a um grupo reduzido de usuários. Um ponto de atenção para o uso dos testes canários é a gestão de várias versões da aplicação em produção.

A empresa (Electronic Arts Inc.) divulgou um caso de sucesso utilizando teste A/B na página de pré-vendas do jogo SimCity 5.

Após remover um banner promocional da página, aumentou em 43% as conversões de venda.

O padrão de desenho Feature Toggles é uma técnica que pode ser utilizada para essas implementações, permitindo que os times modifiquem o comportamento do sistema sem alteração de código.

A proposta é ter uma alternativa para a manutenção de vários branches de código fonte (features branches), e assim conseguir manipular a funcionalidade em tempo de execução.

Na figura abaixo, elaborada por Martin Fowler, inicia-se pela inclusão dos toggle points no código-fonte para manipular o comportamento da funcionalidade.

O toggle router determina o estado delas, considerando o toggle context. O toogle configuration controla o toggle router naquele ambiente.

Feature Toggles
Leonardo MatsumotaAutor

Leonardo possui mais de 17 anos de experiência em projetos de TI, Agile, desenvolvimento de sistemas web, Business Inteligence, Data Mining, Machine Learning e Dashboards. Especialista em Governância: Agile (Scrum), SAFe, PMBOK, Kanban e Lean Six Sigma. Mestre em Engenharia de Produção, MBA em Gestão Empresarial com ênfase em Gestão de Projetos e bacharelado em Ciência da Computação. Fluente em Inglês e espanhol avançado.

Ver perfil