Executando verificação de segurança...
4

[DÚVIDA] vocês costumam utilizar variáveis de ambiente para habilitar funcionalidades?

Nos projetos que vcs desenvolvem é comum utilizar arquivos .env, xml ou json etc. pra habilitar/desabilitar funcionalidades específicas pra determinados clientes ou isso é uma prática incomum no desenvolvimento de sistemas?

Por exemplo, se pensarmos num projeto que é multi-tenant, pode surgir a necessidade de clientes específicos pedirem funcionalidades específicas para as instâncias deles. Assim, qual seria a melhor forma de tratar esses requisitos no código?

Carregando publicação patrocinada...
6

Sim, usar variáveis arquivos de configuração para habilitar/desabilitar funcionalidades é extremamente comum — e em alguns casos, obrigatório. Na aviação, por exemplo, seguimos o padrão DO-178C, que define Parameter Data Items (PDIs) para gerenciar configurações específicas por variante.

Você pode usar .env, JSON, ou até flags no banco de dados para controlar features por cliente ou instância. O desafio é manter isso organizado, porque configuração mal gerenciada vira um pesadelo de manutenção.

A dica é tratar mudanças de configuração como eventos críticos: versionar, auditar e testar como se o sistema dependesse disso (porque depende).

2

No multi-tenant que estamos construindo aqui, temos uma área de gestão do tenant, e através dela habilitamos ou removemos funcionalidades. Ou seja, está definido no banco de dados para a entidade do tenant.

Você pode encontrar algumas formas de fazer o mesmo pesquisando por feature flag.

1

Eu não usaria variáveis de ambiente, pois geralmente vc tem um downtime para que elas surtam efeito.

Em um multi-tenant, talvez utilizar o banco de dados e persistir no cadastro da empresa/usuário seja uma boa abordagem. Eu particularmente faço assim.

Se você usa exclusivamente um Stripe/PagarMe/etc como gerenciador do usuário, algo comum em micro SaaS, eles permitem que você adicione dados individuais do assinante em um campo geralmente chamado de "meta", que são metadados. Não acho interessante para escalar, pois fica descentralizado. Você pode se perder. E ao recriar a assinatura perderia essa flag. Mas é uma opção que fica vinculada diretamente ao usuário/empresa e pode ser útil dependendo de seu caso de uso.

Caso seu app seja grande, talvez ter uma plataforma externa/terceirizada que gerencie isso também seja uma opção. Mas eu não tenho experiência com nenhuma para te recomendar.

1

Sim, usamos muito variavéis como feature flag, sempre que subimos uma demanda para produção, ela sobe com a flag desligada e habilitamos em determinado momento, utilizamos ferramentas e serviços externos que nos permite habilitar ou desabilitar qualquer flag (variavel) sem precisar de deploy, isso reduz a chance de ocorrer rollback durante o deploy de uma nova demanda para produção.

1
1

é bastante comum usar variáveisde ambientecomo feature flags, o único ponto negativo é que alterar as variaveis de ambiente deoende de deploys, restart nas instancias ou algo do tipo, uma alternativa seria utilizar soluções externas de feature flag como unleash, posting e outras, assim você consegue habilitar desabilitar funcionalidades em tempo real, fazer teste a/b e até mesmo fazer a liberação de uma funcionalidade para apenas uma parcela dos seus usuários.