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

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 estas 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 é gestão de várias versões da aplicação em produção.

A empresa (Eletronic 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 estas implementações, permitindo os times modificarem o comportamento do sistema sem alteração de código. A proposta é ter uma alternativa para a manutenção de várias 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.

martin-fowler

Figura xxFeature Toggles