Visão geral das flags de recursos do App Lifecycle Manager

Com as flags de recursos do App Lifecycle Manager, você controla a disponibilidade e o comportamento de recursos nos seus aplicativos sem precisar de novas implantações de código ou mudanças na infraestrutura.

É possível usar flags de duas maneiras principais:

  1. Integrado:combine o gerenciamento de flags com as implantações de aplicativos gerenciadas pelo App Lifecycle Manager.
  2. Independente:use o sistema de flags robusto de forma independente, mesmo que a infraestrutura do aplicativo seja gerenciada em outro lugar, modelando os componentes do sistema como unidades do App Lifecycle Manager.

As flags de recursos se integram aos conceitos principais do App Lifecycle Manager, como unidades e implantações. Isso permite gerenciar as configurações de flags junto com a infraestrutura do aplicativo (abordagem integrada).

Leia a visão geral do App Lifecycle Manager se você não estiver familiarizado com as unidades ou os lançamentos do App Lifecycle Manager.

Por que usar flags de recursos do App Lifecycle Manager?

Ao implementar flags de recursos com o App Lifecycle Manager, você tem vários benefícios para o ciclo de vida de desenvolvimento e operações de SaaS:

  • Desvincule os lançamentos de recursos das implantações de código:envie novos códigos para produção com os recursos desativados por padrão. Ative recursos para usuários específicos ou implemente-os gradualmente quando estiverem prontos, reduzindo o risco associado a grandes implantações.
  • Aumente a segurança, a velocidade e a confiabilidade:
    • Teste recursos em produção com um público limitado (versões canário).
    • Faça lançamentos graduais usando os recursos do App Lifecycle Manager, minimizando o impacto de possíveis problemas.
  • Ativar a lista de permissões e a personalização do locatário:ative ou desative recursos para unidades que podem representar locatários, serviços ou ambientes.
  • Simplificar rollbacks:quando você desativa uma flag de recurso, geralmente é muito mais rápido e menos disruptivo do que implantar uma versão anterior do aplicativo. Com esse fluxo de trabalho, é possível desativar recursos problemáticos sem reverter binários.
  • Gerenciamento unificado de configurações de flags:gerencie definições de flag de recurso e use-as para configurar lançamentos. Esse fluxo de trabalho oferece confiabilidade operacional, permitindo que você mude a funcionalidade do aplicativo criando lançamentos de flag de recurso.

Como as flags de recursos do App Lifecycle Manager funcionam

Usar flags de recursos no App Lifecycle Manager envolve dois aspectos principais: o plano de gerenciamento (definição e lançamento de flags) e o plano de dados (acesso a valores de flag no aplicativo).

Uso integrado com o App Lifecycle Manager

Se você usa o App Lifecycle Manager para gerenciar as implantações de aplicativos (por exemplo, ao implantar infraestrutura usando blueprints do Terraform):

  1. Definir flags:crie recursos flag de recurso no App Lifecycle Manager, especificando um Flag key exclusivo (enable-new-dashboard, por exemplo) e associando-o a um tipo de unidade. Há suporte para flags booleanas.
  2. Mudanças na flag de provisionamento:as mudanças nas flags (criação ou atualizações) não entram em vigor até que você inicie um lançamento do App Lifecycle Manager. Isso permite usar recursos como lotes, supervisão e verificações de segurança para implantações de flags. O lançamento atualiza a configuração da flag associada às unidades segmentadas.
  3. Flags de acesso no aplicativo:o código do aplicativo, executado na unidade provisionada (por exemplo, em um contêiner no Cloud Run ou no Google Kubernetes Engine), usa um SDK OpenFeature configurado com o provedor flagd. Esse provedor se conecta ao endpoint de serviço saasconfig.googleapis.com. Usando o App Lifecycle Manager, injete o identificador de unidade necessário no ambiente do aplicativo, permitindo que o SDK busque os valores de flag corretos para essa unidade específica.

Essa integração profunda permite gerenciar ciclos de vida de recursos e de infraestrutura. Para um exemplo prático, consulte o Guia de início rápido sobre como implantar flags de recursos.

Plano de gerenciamento

Você interage com o plano de gerenciamento para definir e controlar suas flags. É possível usar o Google Cloud console, a CLI gcloud ou a API App Lifecycle Manager para:

  • Criar ou atualizar flags: para definir flags, especifique o Flag key, associe-o a um tipo de unidade e defina o tipo e o valor padrão.
  • Criar lançamentos: você inicia um lançamento para distribuir mudanças de flags (criações ou atualizações) para as unidades segmentadas pertencentes ao tipo de unidade da flag. Os lançamentos garantem que as mudanças sejam aplicadas com segurança e confiabilidade de acordo com as políticas configuradas.

Plano de dados

O código do aplicativo interage com o plano de dados para consumir valores de flag:

  • SDK OpenFeature:integre o SDK OpenFeature independente de fornecedor ao seu aplicativo.
  • Provedor flagd:configure o SDK OpenFeature para usar o provedor flagd.
  • Configuração:aponte o provedor flagd para o endpoint do serviço de flag de recurso do App Lifecycle Manager: saasconfig.googleapis.com:443.
  • Segmentação:forneça o provider_id para identificar a configuração da flag. Esse valor normalmente corresponde ao nome completo do recurso da unidade do App Lifecycle Manager (projects/PROJECT_ID/locations/LOCATION/featureFlagsConfigs/UNIT_ID, por exemplo).
  • Autenticação:o provedor usa o Application Default Credentials (ADC) para autenticar solicitações com segurança no endpoint do serviço Google Cloud . A conta de serviço usada precisa do papel do Identity and Access Management roles/saasconfig.viewer.
  • Avaliação de flags:use métodos padrão do OpenFeature (client.get_boolean_value(...)) no seu código para verificar os valores das flags. O provedor processa a busca da configuração mais recente implantada do serviço.

O App Lifecycle Manager oferece implementações e exemplos de referência para integração com o plano de dados:

Tipos de valores de flags de recurso

As flags de recursos do App Lifecycle Manager oferecem suporte a mais avaliações booleanas de ativação/desativação do que o padrão. É possível definir flags com valores STRING, INTEGER ou DOUBLE para controlar variáveis operacionais complexas, como limites de tempo de execução, parâmetros de tema ou limites de configuração.

Ao contrário das flags booleanas, é necessário definir explicitamente as flags não booleanas durante a criação para determinar o universo de possíveis tipos de retorno.

Flags de string

As flags de string transmitem identificadores de configuração diretamente aos clientes conectados.

gcloud beta app-lifecycle-manager flags create "feature-mode" \
  --key="feature-mode" \
  --flag-value-type=STRING \
  --location="global" \
  --unit-kind="UNIT_KIND_ID" \
  --variants='[{"id": "standard", "stringValue": "STANDARD"}, {"id": "advanced", "stringValue": "ADVANCED"}]' \
  --evaluation-spec='{"defaultTarget": "standard"}'

Flags de números inteiros

Flags de números inteiros governam limites numéricos exatos e limites de payload.

gcloud beta app-lifecycle-manager flags create "max-retry-count" \
  --key="max-retry-count" \
  --flag-value-type=INTEGER \
  --location="global" \
  --unit-kind="UNIT_KIND_ID" \
  --variants='[{"id": "low", "integerValue": 3}, {"id": "high", "integerValue": 10}]' \
  --evaluation-spec='{"defaultTarget": "low"}'

Duas sinalizações

As flags duplas oferecem valores de alta precisão usados para limites de probabilidade ou parâmetros de ponto flutuante.

gcloud beta app-lifecycle-manager flags create "sampling-rate" \
  --key="sampling-rate" \
  --flag-value-type=DOUBLE \
  --location="global" \
  --unit-kind="demo-test-unitkind" \
  --variants='[{"id": "minimal", "doubleValue": 0.01}, {"id": "full", "doubleValue": 1.0}]' \
  --evaluation-spec='{"defaultTarget": "minimal"}'

Provisionar flags de recurso usando lançamentos

O App Lifecycle Manager garante mudanças ou atualizações seguras em grande escala usando lançamentos para provisionar atualizações de flag de recurso.

Sem os lançamentos graduais, uma pequena mudança na configuração de flags (ativar um recurso para 1% dos usuários, por exemplo) se propaga instantaneamente em todas as instâncias do aplicativo. Se esse recurso introduzir uma regressão, problemas poderão ocorrer simultaneamente em toda a infraestrutura. Essa propagação global aumenta significativamente o risco de um impacto generalizado no serviço.

Os lançamentos do App Lifecycle Manager reduzem esse risco ao permitir a distribuição gradual e controlada de mudanças de flags, limitando o escopo potencial de problemas imprevistos.

Conjuntos de flags de recurso

Os conjuntos de flags de recursos agrupam várias flags de recursos e permitem gerenciá-las como um único recurso lógico. Isso é útil para lançar recursos que exigem a coordenação de várias flags.

Saiba mais sobre conjuntos de flags.

Manifestos

Os manifestos permitem definir e gerenciar flags de recursos usando arquivos JSON. Você pode enviar essas definições para a API App Lifecycle Manager ou extrair configurações atuais para gerar acessadores com segurança de tipo para seu aplicativo.

Saiba mais sobre manifestos.

Segmentação complexa

É possível usar a Common Expression Language (CEL) para criar regras de segmentação sofisticadas com base em atributos de usuário ou de solicitação e controlar com precisão quais usuários veem quais recursos.

Saiba mais sobre a segmentação complexa.

Arquitetura multilocatária

É possível usar implantações multilocatárias com o App Lifecycle Manager se você segmentar flags para unidades ou grupos de unidades específicos (usando rótulos ou locatários). Também é possível implementar lançamentos graduais em toda a frota de locatários.

Saiba mais sobre a arquitetura multitenant.

Alocar flags de recursos

Defina alocações (como experimental ou de referência) e use a divisão de tráfego para realizar testes ou lançamentos aleatórios.

Saiba mais sobre as alocações de flag de recurso recursos.

A seguir