O que é uma"bandeira de recurso"?

Highscalability mencionar as opções do recurso aqui:

Http://www.iheavy.com/2011/08/26/5-things-are-toxic-to-scalability/

O que são exactamente as bandeiras dos recursos?

Obrigado.
Author: dotnetdev, 2011-10-10

9 answers

Uma 'opção de recurso' (ou funcionalidade Toggle) é a capacidade de activar ou desactivar as funcionalidades (sub-secções) da sua aplicação facilmente:

  • talvez através de uma recolocação, ou
  • alguma página interna onde as páginas/funcionalidades podem ser comutadas ao vivo.

Eu acho que o exemplo que havia era que é útil ter o controle para reduzir um pouco o conjunto de recursos se você precisa, digamos, reduzir as consultas db se a carga é muito alta.

Existemmontes de outras razões você gostaria de usar este tho - um dos principais ser ativando entrega contínua: empurrar as coisas para a produção/ao vivo, ainda tendo o recurso desativado/comutado até que esteja concluído. Muitas vezes usamos o que chamamos de 'cookie dev' para mostrar recursos incompletos para apenas a equipe dev. Desta forma podemos testar o trabalho parcialmente concluído na produção (oh yeh! há melhor integração?) sobre vários lançamentos / desdobramentos antes de 'untoggle' (concluído) ele e torna-se visível para o publico.

Aqui está um pacote simples que o ajuda a fazer isto em ASP.NET MVC land: https://github.com/cottsak/DevCookie (revelação completa: Eu sou o autor)

Fowler também tem um artigo muito mais longo do que o acima ligado com muito mais detalhes.

Este post (no site de Fowler também) explica os vários tipos de estratégias de toggle . O DevCookie suporta a estratégia principal/trunk-based e é chamado de "Release Toggle " em artigo.

A resposta de Adil destaca que existem muitos termos e razões pelas quais você pode querer alguma desta infra-estrutura. Tenha em mente que você pode apenas precisar de algumas dessas coisas. Por exemplo, eu só posso querer permitir um fluxo de trabalho simples e ágil de implantação/entrega e assim uma infra-estrutura simples será suficiente. Se você então escolher você quer se mover para a completa#leanstartup experimentação com a / B, Teste de coorte e coisas como o roll-out controlado você deve considere uma ferramenta de análise (eg. Heap ) que facilita as metodologias de desenvolvimento orientadas pelos dados como uma solução distinta. Uma infra-estrutura de comutação que faz tudo o acima levará a inchaço e complexidade desnecessária.

 65
Author: Matt Kocaj, 2018-01-24 02:29:03

A opção de recurso é uma técnica para desligar alguma funcionalidade da sua aplicação, através da configuração, sem implantar um novo código.

As bandeiras de características desempenham um papel fundamental no esquema IC, onde as características estão constantemente a ser implantadas, mas não necessariamente "lançadas" na produção.

Mais informação aqui:

-- Editar:

Características Flags java implementation.

 22
Author: Maxim Veksler, 2016-02-15 21:12:55

As opções das funcionalidades, as opções das funcionalidades, as experiências e os rollouts controlados são sinónimos para uma ideia simples, mas poderosa: as aplicações de código separadas das versões das funcionalidades. Em linguagem clara, é a capacidade de empurrar o seu recurso compromete - se a produção, ao escolher quem entre os seus clientes - se alguém em tudo-começa a ver esse recurso.

Foram popularizados em parte pelo Guardião do Facebook. A LiX do LinkedIn é outro bom exemplo. Abraçando esta simples ideia a Fundação para muitas melhores práticas, incluindo:

Implantação/entrega contínua - o código múltiplo empurra para a produção em um dia.

Desenvolvimento Trunk / Mainline - Os ramos de recursos devem ser criados apenas para pedidos de puxão, não para o desenvolvimento de recursos de longa duração.

Acabaram-se os comboios para empurrar as coisas.

Teste de QA / Perf na produção - O teste de QA real e o teste de desempenho está na infra-estrutura de produção com tráfego de produção. Não perca tempo a construir laboratórios de desempenho e ambientes de preparação.

Experimentação - saber como uma nova funcionalidade move a agulha no seu KPIs.

Evitando Hotfixes ou Código de Reversões quando os Problemas Acontecem - ambos os hotfixes e código de reversões são estressantes, levar um longo tempo, e levar a mais problemas do que o necessário. Em vez disso, desligue o recurso ou Faça-o descer.

Outros mencionaram bibliotecas de código aberto. Bom exemplo de uma solução completa - como Gatekeeper e LiX-is Split . Trabalho para a Split.

 14
Author: Adil Aijaz, 2017-02-27 07:47:15

Um recurso bandeira (também conhecido como recurso de inversão ou recurso de alternância) é uma opção para habilitar ou desabilitar um potencialmente caros recurso, conforme necessário (como, por exemplo, quando um site está sendo martelado com tráfego inesperado). Isto vai dar-te algum tempo até aumentares, ou até o pico de carga desaparecer.

Aqui está um exemplo da documentação SWIG .

 8
Author: Michael Petrotta, 2011-10-09 23:56:22

Há muitas grandes respostas aqui, todas a conduzir na definição importante e básica popularizada noMartin Fowler post:

são bits de código que "[permitem] as equipas modificam o comportamento do sistema sem alterar o código."

Então, historicamente pensamos neles como representados pelo pseudo-código:
if(app_settings["beta-mode"] == "true")
  showAwesomeNewGui();
else
  sameOldSnoozeFeset();
É uma forma totalmente precisa de pensar nisso, e tanto o Matt como o Adil expandem-se bem com uma variedade de casos de uso táctico para o ... bandeira característica. Mas eu gostaria de oferecer uma definição revisada que reflete como a realidade evoluiu nos seis anos e a mudança desde que a dotnetdev fez a pergunta original. Trabalho para Rollout.io , uma plataforma da bandeira, por isso tive um lugar na primeira fila para esta evolução.

Simplificando, as opções de funcionalidades já não são apenas uma forma de ligar e desligar bits de funcionalidade na sua aplicação. Isso é como responder "o que é um item de factura "dizendo" é um descrição e quantidade de moeda."É verdade, mas não conduz no ponto mais amplo da factura em si.

As bandeiras dos recursos são as partes tácticas de uma solução estratégica global em software moderno. Eles são os meios pelos quais você diferencia a lógica de decisão importante em seu código até o tempo de execução quando você tem mais informações. E, talvez o mais importante, eles não ocorrem apenas em isolamento por mais tempo, com um único cheque para ver se o número da versão é maior que 2.7 ou não; as organizações que os usam são tipicamente incluí-los como parte de uma abordagem abrangente de produto em todo o sistema. Como outros já mencionaram, o Facebook e o LinkedIn foram pioneiros nisso, mas em 2018, muitas organizações estão fazendo isso. Eles estão adiando questões lógicas de decisão para o tempo de execução como parte da estratégia de desenvolvimento, estratégia de operações (ou estratégia DevOps, se você quiser), e estratégia de produto. Aqui estão exemplos de tais questões.
    Quem deveria ver o novo administrador? o ecrã que estamos a rodar, e quando? Que nível de adesão é necessário para desbloquear este ovo de Páscoa? Quando devemos cortar a nova base de dados? Devemos colocar uma imagem de uma chita ou uma águia no botão de saída para aumentar as conversões?
Para ter uma aplicação que desafie um número significativo de decisões até ao tempo de execução, não pode lançar bandeiras de recurso para a sua aplicação de forma ad-hoc ou enterrar-se-á na técnica divida. Você precisa, hoje em dia, ter uma estratégia abrangente de gestão de recurso bandeira, que inclui alguns componentes diferentes.
  • os pontos de comutação são usados para mudar o comportamento para novas funcionalidades.
  • vários pontos de comutação unem-se para formar um toggle router . Um router de comutação determina o estado de uma funcionalidade.
  • Toggle context fornece ao router a informação contextual necessária (por exemplo, informações específicas usuario).
  • comutar a configuração fornece a informação do router sobre o ambiente.
Então, no final, o que são bandeiras de recurso? Bem, eles são uma parte importante de uma estratégia mais ampla para ter uma aplicação adaptável às necessidades técnicas e do mercado.
 6
Author: Erez Rosovsky, 2018-03-09 17:26:09

As opções de funcionalidades (ou comutações de funcionalidades) permitem-lhe activar as funcionalidades remotamente numa aplicação sem necessitar de reconstruir/reiniciar a aplicação. Isso permite que você implemente o código para a produção, mas não liberar o recurso até que você esteja pronto. Você é capaz de direcionar usuários específicos, para que você possa ativar um novo recurso para seus usuários beta para testar.

Na nossa empresa já usámos Lavandarias e outras sugestões de FeatureFlags.io também tentámos. para usar a configuração remota da Firebase para tentar fazer com que isto funcione, no entanto, achamos que não era realmente adequado para este propósito.

Acabámos por desenvolver a nossa própria versão chamada comboio de bala, que abrimos. Combina ambas as opções/Opções de recurso e Configuração Remota.
 3
Author: TStu, 2018-06-14 13:51:20

O meu entendimento é que as opções do recurso ajudam a funcionalidade do portal ao decidir quais os utilizadores que recebem certas funcionalidades.

Por exemplo, digamos que só quer que os seus utilizadores beta vejam uma nova funcionalidade. Você iria "comutar" esse recurso para usuários beta e o resto de seus usuários não iria vê-lo.
LDUser user = new LDUser("[email protected]");

boolean showFeature = ldClient.toggle("your.feature.key", user, false);

if (showFeature) {
     // application code to show the feature 
 }
else {
     // the code to run if the feature is off
 }

Estou a testar as bandeiras do recurso de LaunchDarkly para alguns testes js A/B da frente-parecem estar a funcionar bem. Você também pode verificar este site para opções de funcionalidades e as bibliotecas da bandeira.

 1
Author: Hbitspark, 2016-04-12 06:01:40

As opções de funcionalidades basicamente dão-lhe a capacidade de ligar e desligar uma funcionalidade sem fazer quaisquer alterações no código ou lançar uma nova versão. É uma solução importante especialmente para desenvolvedores de aplicativos móveis, uma vez que eles não têm controle sobre os usuários para atualizar sua aplicação para uma nova versão.

Existem várias empresas que oferecem este serviço para aplicações móveis programador.
 0
Author: OFK, 2017-04-19 14:49:17
Na minha empresa usamos bandeiras de recurso para cada nova funcionalidade que introduzimos na nossa aplicação SaaS. Além dos benefícios para o desempenho, ele também nos permite implantar novos recursos gradualmente - introduzindo novos recursos para os usuários de energia em primeiro lugar, recebendo feedback deles e improvisando-o antes de que possamos lançá-lo para todos os usuários.

Também nos permite personalizar a oferta a utilizadores individuais-os utilizadores de energia querem todas as funcionalidades; os utilizadores simples podem querer apenas o material básico e podem ficar confusos por todas as poderosas características complexas. Ele também permite que nossa equipe de vendas para up-sell.

[[1]] e, claro, como outros já salientaram, se encontrarmos uma característica que está a causar uma degradação do desempenho, podemos simplesmente desligar essa característica (seja para todos os clientes ou para o único cliente que está a causar um problema).
 0
Author: Dharmendar Kumar 'DK', 2017-04-19 23:50:44