๐๏ธ Introducing Flag Sets: Organize Your Feature Flags Like Never Before
We're excited to announce that we have released one of the most requested feature for GO Feature Flag.
It will revolutionize how you organize and manage your feature flags: Flag Sets! ๐
As your applications grow and teams expand, managing feature flags can become increasingly complex. Different teams need their own flags, environments require separate configurations, and multi-tenant applications demand isolated flag management. That's exactly what Flag Sets are designed to solve.
๐ค What Are Flag Sets?โ
Flag Sets are a powerful organizational feature in GO Feature Flag that allows you to group related feature flags into separate, isolated collections. Each flag set operates independently with its own:
- Configuration: Retrievers, exporters, and notifiers
- API Keys: Secure access control with dedicated authentication
- Flag Management: Complete isolation from other flag sets
- Data Tracking: Separate evaluation data and analytics
Think of flag sets as "virtual feature flag environments" within your single GO Feature Flag relay proxy instance.
They provide the organizational benefits of multiple instances while maintaining the simplicity of a single deployment.
โจ What are the benefits of flag sets?โ
๐ข Team Isolationโ
In modern software development, different teams often need to manage their own feature flags independently. With flag sets, you can:
- Team A: Manage application A feature flags:
new-navigation
,dark-mode
,responsive-design
. - Team B: Manage application A feature flags:
new-payment-api
,caching-strategy
,rate-limiting
,dark-mode
. - ...
Each team gets their own isolated environment without interfering with others.
- You can have the same feature flag name with a different configuration.
- Team A cannot access to Team B feature flags.
- Each flag set can have a dedicated exporter.
- Each flag set can notify flag changes in a different place.
๐๏ธ Multi-Tenant Applicationsโ
For applications serving multiple customers or organizations, flag sets provide perfect isolation:
- Each customer gets their own flag set.
- No risk of flag name collisions between customers.
- Isolated configurations and data tracking.
- Secure access control per customer.
- Routing to the flag set is based on API Keys.
โ๏ธ How Flag Sets Workโ
Configuration Structureโ
Flag sets are configured in your relay proxy configuration file, instead of defining your configuration on top level of the file we have introduce a new field called flagset.
In each flag set you can configure his behavior like in this example:
listen: 1031
flagsets:
- name: team-a
apiKeys:
- 'team-a-api-key-1'
- 'team-a-api-key-2'
retrievers:
- kind: file
path: /flags/team-a-flags.yaml
exporters:
- kind: s3
bucket: team-a-evaluations
notifiers:
- kind: slack
webhookUrl: 'https://hooks.slack.com/services/team-a-webhook'
- name: team-b
apiKeys:
- 'team-b-api-key'
retrievers:
- kind: github
repository: my-org/team-b-flags
path: flags.yaml
exporters:
- kind: kafka
topic: team-b-evaluations
notifiers:
- kind: discord
webhookUrl: 'https://discord.com/api/webhooks/team-b-webhook'
- name: team-c
apiKeys:
- 'team-c-api-key'
retrievers:
- kind: s3
bucket: team-b-feature-flags
item: flags.yaml
exporters:
- kind: file
outputDir: /logs/team-c-evaluations
pollingInterval: 1000
As you can see, you are able to configure every flag sets differently.
API Key-Based Routingโ
The magic of flag sets lies in their API key-based routing system:
- Extract API Key: The relay proxy extracts the API key from the
Authorization
header. - Find Flag Set: It looks up which flag set is associated with that API key.
- Route Request: The evaluation request is routed to that specific flag set.
- Return Result: The evaluation result comes from that flag set's flags.
This means you can have identical flag names across different flag sets without any conflicts โจ.
OpenFeature Provider Integrationโ
Using flag sets in your applications is straightforward. You simply initialize your providers with the correct API key.
All the providers have a way to pass the API Key to use, based on this one the relay proxy will route the request to the correct flag set.
Key Benefits of using flag setsโ
๐ Complete Isolationโ
- No inheritance between flag sets
- Identical flag names can exist across different sets
- Independent configurations and data tracking
๐ Secure Access Controlโ
- API key-based authentication for each flag set
- Multiple API keys per flag set for flexibility
- No cross-contamination between teams or customers
๐ฏ Flexible Configurationโ
- Each flag set can have its own retrievers, exporters, and notifiers
- Independent polling intervals and file formats
- Custom notification channels per team
๐ Separate Analyticsโ
- Evaluation data is tracked separately per flag set
- Independent export configurations
- Team-specific monitoring and alerting
Migration Guideโ
If you're currently using a single GO Feature Flag configuration, migrating to flag sets is straightforward:
Option 1: Gradual Migrationโ
- Ensure that all your providers are using API Keys to connect to GO Feature Flag.
- Create a flag set and move your actual configuration inside it.
- Associate your API Keys to the flag set.
- Create extra flag sets and move flags over them.
- Change the API Key used in your provider to point to the right flag set.
Option 2: Full Migrationโ
- Create flag sets for each team or purpose.
- Move all flags to appropriate flag sets.
- Update all applications with new API keys.
- Remove the old single configuration.
Get Started Todayโ
Flag Sets are available now in GO Feature Flag! Whether you're managing multiple teams, serving multiple customers, or just want better organization, flag sets provide the flexibility and isolation you need.
Resourcesโ
- ๐ Flag Sets Documentation
- ๐ง Configuration Guide
- ๐ฌ Community Discussions
- ๐ Report Issues
We can't wait to see how you use Flag Sets to organize and scale your feature flag management! And please share your feedbacks ! ๐