Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Feature Toggles e suas categorias

Feature Toggles e suas categorias

Um breve resumo do artigo Feature Toggles (aka Feature Flags) de Pete Hodgson publicado no site do Martin Fowler (https://martinfowler.com/articles/feature-toggles.html)

Daniel Libanori

July 20, 2022
Tweet

More Decks by Daniel Libanori

Other Decks in Programming

Transcript

  1. Liba • Daniel Libanori • Founder • Slack: @liba •

    Programou boa parte da Clicksign... • mas hoje nem abre mais o VIm • "To aqui pra ajudar"
  2. – Tom Zé “Eu tô te explicando pra te confundir,

    Eu tô te confundindo pra te esclarecer”
  3. O que é "Feature Toggling" é um conjunto de padrões

    que podem ajudar um time a entregar novas funcionalidades para os usuários rapidamente mas de modo seguro
  4. Cenário Você quer evitar a criação de branches para um

    trabalho ao máximo, baseado em "dolorosas" experiências passadas com merge de branches de longa duração (...) Uma vez que o time esktá con fi ante que a nova funcionalidade não terá efeitos negativos eles modi fi cam a "Toggle Con fi guration" para liga-la para a base inteira de usuários
  5. Canary Releasing O time decide usar sua infraestrutura de Feature

    Flag para realizar uma Canary Release, ligando a nova funcionalidade somente para uma pequena porcentagem do total de usuários
  6. Canary Releasing Um "corte de canary users" é criado através

    de uma amostra aleatória de 1% da base de usuários
  7. A/B Testing Dirimir dúvidas e eliminar vieses subjetivos através da

    entrega de uma funcionalidade para um percentual relativamente grande da base de usuários
  8. Canary vs A/B • 1% de usuários • Mitigar riscos

    técnicos de deploy • Curto • Traz informações para o time de operação e desenvolvimento • ~50% de usuários • Mitigar riscos de produto • Longo • Traz informações para o time de produto
  9. Longevidade e Dinamismo • Longevidade • Dias • Semanas •

    Meses • Anos • Dinamismo • Muda a cada deploy • Muda quando recon fi gurada • Muda por requisição
  10. Release Toggles Elas permitem que o progresso de funcionalidades sejam

    mergeadas no branch de integração (ex. main ou trunk) enquanto ainda permitem o branch ser deploiável em produção a qualquer momento
  11. Experiment Toggles Utilizadas para realizar testes multi-variados ou A/B. Cada

    usuário é encaixado num corte e em tempo de execução será mostrado consistentemente para um dado usuário codepath conforme seu corte
  12. Experiment Toggles devem durar tempo su fi ciente para gerar

    dados estatisticamente signi fi cantes
  13. OPS Toggles Utilizadas para controlar aspectos operacionais do comportamento do

    sistema. Podemos introduzir uma OPS Toggles quando entregamos uma nova funcionalidade que não é clara as implicações de performance de tal forma que a equipe responsável pela operação pode desabilitar a funcionalidade rapidamente em produção
  14. OPS Toggles devem durar tempo su fi ciente para conquistar

    a confiaça de que não teremos problemas na operação
  15. Observação Podem existir OPS Toggles estrategicamente permanentes que podem ser

    habilitadas e desabilitadas conforme a carga do sistema. Por exemplo: um sistema não-vital que sob certas condições pode ser desabilitado para que as funcionalidades vitais da aplicação continuem operando. Caso de uso: um sistema de recomendação de notícias num portal.
  16. Permissioning Toggles Utilizadas para mudar uma funcionalidade ou a experiência

    que certos usuários recebem. Por exemplo: funcionalidades premium que são ligadas apenas para alguns cliente pagantes. Ou um conjunto de funcionalidades alpha para usuários internos (QA) e um outro conjunto de funcionalidades beta para usuários internos e usuários beta (QA + beta)
  17. Canary vs Permissioning • Usuário aleatórios • Per fi l

    veriado • Curto • Usuário que optaram participar do programa de beta • Per fi l arrojado • Permanente
  18. Semana que vem... • Recorte por longevidade e dinamismo; •

    Técnicas de implementação: desacoplamento lógico, inversão de decisão, evitando condicionais; • Roteamento e con fi guração dinâmicos; • Os diversos sistemas de feature toggle; • Complexidades introduzidas;