Como Implementar Module Flag em um Sistema Modular em Golang
*Module Flag *é uma técnica de controle usada para ativar ou desativar módulos de um sistema. Com essa técnica, não é necessário desactivar/activar pelo código-fonte. Esse controle pode ser feito através da base de dados, configurações em arquivos, variáveis de ambiente e outros métodos. Vantagens Segurança Entrega Gradual Controle de Acesso Flexibilidade na Manutenção Redução de Riscos, no caso de módulos problemáticos Algumas Ferramentas / Bibliotecas para Feature Flag LaunchDarkly: https://launchdarkly.com Unleash: https://www.getunleash.io GoFeatureFlag: https://github.com/robfig/go-feature-flag Flagsmith: https://www.flagsmith.com FeatureHub: https://featurehub.io ConfigCat: https://configcat.com Togglz: https://www.togglz.org Passos para Criar pela Base de Dados Criar as tabelas de módulos e flags Criar um middleware para interceptar as operações dentro desse módulo Ler todas as flags dos módulos Activar ou desactivar os módulos de acordo com a necessidade Registar e retornar a mensagem de erro do módulo Se necessário, evoluir para restrição de usuários por módulo Código Fonte: https://github.com/ortizdavid/golang-modular-software
*Module Flag *é uma técnica de controle usada para ativar ou desativar módulos de um sistema. Com essa técnica, não é necessário desactivar/activar pelo código-fonte.
Esse controle pode ser feito através da base de dados, configurações em arquivos, variáveis de ambiente e outros métodos.
Vantagens
- Segurança
- Entrega Gradual
- Controle de Acesso
- Flexibilidade na Manutenção
- Redução de Riscos, no caso de módulos problemáticos
Algumas Ferramentas / Bibliotecas para Feature Flag
- LaunchDarkly: https://launchdarkly.com
- Unleash: https://www.getunleash.io
- GoFeatureFlag: https://github.com/robfig/go-feature-flag
- Flagsmith: https://www.flagsmith.com
- FeatureHub: https://featurehub.io
- ConfigCat: https://configcat.com
- Togglz: https://www.togglz.org
Passos para Criar pela Base de Dados
- Criar as tabelas de módulos e flags
- Criar um middleware para interceptar as operações dentro desse módulo
- Ler todas as flags dos módulos
- Activar ou desactivar os módulos de acordo com a necessidade
- Registar e retornar a mensagem de erro do módulo
- Se necessário, evoluir para restrição de usuários por módulo