| You can use a git-based workflow for feature flags, that's likely how most teams will start using flags in their code with environment variables and infrastructure state. However, most deployment pipelines in the wild are very slow and owned by engineering, limiting the value of doing git-based state for your Feature Flags. I've seen that disconnecting the deployment of code from releasing of features can be transformative in various ways that fit better with an API-based model for Feature Flags: - Many flags / remote config changes in production environments are made by non-developer members of a team. - Coordinating releases across multiple platforms that have different deployment cycles. For example, deploying a new feature to Mobile + Web + APIs simultaneously. - Enabling / disabling flags in real-time across your stack to respond to incidents. - Support / Sales teams using Flags to gate features for customers. - Remote config to populate data for UIs, to act as a CDN for content. - Rolling out infrastructure changes, being able to roll back changes instantly without another deployment. (And for context: our Feature Flag decisioning is done locally for our local bucketing server SDKs) |
I think the key difference is if you consider feature flags to be configuration and believe in configuration as code as a best practice.
I think this is the right approach in the long term. People having the ability to modify configuration in production in real time is an outage waiting to happen without having an obvious way to rollback to previously known working state.