{"id":19373750,"url":"https://github.com/waelson/go-feature-flag","last_synced_at":"2025-04-23T15:45:00.967Z","repository":{"id":260843361,"uuid":"882498157","full_name":"Waelson/go-feature-flag","owner":"Waelson","description":"Exemplo prático da utilização da abordagem de Feature Flag em aplicações de larga escala","archived":false,"fork":false,"pushed_at":"2024-11-03T18:37:06.000Z","size":2642,"stargazers_count":31,"open_issues_count":0,"forks_count":8,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-03-30T01:11:11.646Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":"","language":"Go","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/Waelson.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2024-11-02T23:47:23.000Z","updated_at":"2025-02-09T15:31:11.000Z","dependencies_parsed_at":"2024-11-03T01:19:13.394Z","dependency_job_id":"f082d1c5-d60c-4833-8141-4cb07581c401","html_url":"https://github.com/Waelson/go-feature-flag","commit_stats":null,"previous_names":["waelson/go-feature-flag"],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Waelson%2Fgo-feature-flag","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Waelson%2Fgo-feature-flag/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Waelson%2Fgo-feature-flag/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Waelson%2Fgo-feature-flag/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/Waelson","download_url":"https://codeload.github.com/Waelson/go-feature-flag/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":250463197,"owners_count":21434742,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":[],"created_at":"2024-11-10T08:31:29.031Z","updated_at":"2025-04-23T15:45:00.939Z","avatar_url":"https://github.com/Waelson.png","language":"Go","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Feature Flag\nEssa aplicação é um exemplo prático do uso do conceito de Feature Flag para aplicações em larga escala.\n\n### Solução\nAplicações distribuídas e de larga escala podem ter centenas ou até milhares de instâncias em execução simultânea. O controle da ativação e desativação de feature flags precisa ser realizado de forma rápida e segura para permitir a ativação de novas funcionalidades para testes, mas também possibilitar a desativação imediata em caso de problemas.\n\nA solução proposta é simples e eficiente. Ela consiste em um banco de dados central que mantém o status de cada feature flag, o qual é consultado a cada minuto por cada instância da aplicação. Além disso, a aplicação envia métricas para o Prometheus, permitindo que os desenvolvedores acompanhem o status de cada feature flag em todas as instâncias. Isso viabiliza um monitoramento preciso e em tempo real das funcionalidades em produção.\n### Arquitetura\n![Architecture](documentation/images/architecture.png)\n\n### Executando\nA aplicação está configurada para ser executada com Docker Compose. Para iniciá-la, entre no diretório raiz da aplicação e execute o seguinte comando:\n\n`\ndocker-compose up --build\n`\n\nApós a inicialização dos serviços pelo Docker Compose, acesse o Grafana através da URL http://localhost:3000 em seu navegador. Utilize `admin` como usuário e senha para fazer o login. \n\nDepois de entrar no Grafana, importe o dashboard usando o arquivo `dashboard.json`, que está localizado na raiz do repositório. Ao acessar o dashboard, você visualizará um dashboard similar ao exibido na imagem abaixo.\n\n![Architecture](documentation/images/dashboard_04.png)\n\n### Simulação\nPara avaliar a eficiência da solução, experimente `ativar` e `desativar` a feature flag utilizando os controles disponíveis diretamente no dashboard. Em seguida, verifique o comportamento da funcionalidade `Process Order` através do link correspondente, também acessível no dashboard.\n\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fwaelson%2Fgo-feature-flag","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fwaelson%2Fgo-feature-flag","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fwaelson%2Fgo-feature-flag/lists"}