Shipping an application that I didn't have access to was giving me heartburn. So I decided to create a lightweight feature flag tool.

The Problem

The team that I work on recently shipped a Vue 3, C#, and SQL application to a network that we do not have access to as engineers. We have a system admin that does the deployments, DBAs that handle the scripts, and stakeholders that test and monitor the application. But the engineers, the QA, the PM, and the BA have limited or no access to easily see what is and is not successful. I mean, could you imagine sending your application off into the nether, not easily being able to see the devtools when an error is thrown?!

We have two environments on the network: stage and prod. Well, our last deployment got promoted to both environments at the same time with no stakeholders to look at it. And then there was a bug (I will find out later that the bug was unrelated to the recent release). After a week of internal panic, I decided that I need more control than I have on the network. And thus comes feature flags.

I'll admit, I haven't had any experience with using feature flags up until this point. I relatively knew what they were, and sometimes we'd have background ways of keeping features off, like setting a bit to 0 in the database. But a real feature flags system? No experience. But we needed it because we needed to decouple our releases from the deployments so that deployments could happen whenever it was convenient for our system admin and our DBAs to handle them, and also to give the stakeholders fine-tuned control over exactly what they were releasing and when they were releasing it.