Skip to content

Instantly share code, notes, and snippets.

@tarqd
Last active March 24, 2023 14:06
Show Gist options
  • Select an option

  • Save tarqd/00648bd12a5162763ee42deb27806422 to your computer and use it in GitHub Desktop.

Select an option

Save tarqd/00648bd12a5162763ee42deb27806422 to your computer and use it in GitHub Desktop.

Revisions

  1. tarqd revised this gist Mar 24, 2023. 1 changed file with 0 additions and 1 deletion.
    1 change: 0 additions & 1 deletion when-feature-flags.md
    Original file line number Diff line number Diff line change
    @@ -37,7 +37,6 @@ Consider the complexity cost of introducing a flag vs the benefits. If your flag
    - `Release: Chatbox Frontend`
    - `Release: Chatbox Backend`
    - ### Bad:
    - `Release: Chatbox Frontend React Component`
    - `Release: Chatbox Frontend Sprint Fix CSS Bug 112`


  2. tarqd revised this gist Mar 1, 2022. 1 changed file with 1 addition and 1 deletion.
    2 changes: 1 addition & 1 deletion when-feature-flags.md
    Original file line number Diff line number Diff line change
    @@ -28,7 +28,7 @@
    - Feature flags should not replace any configuration that would completely block the application from starting (database hostname, api urls, etc)
    - **As a database or file store**
    - Try to keep variations small
    - Avoid large/complex JSON payloads if you can. Consider if you can break the dynamic parts out into individual flagsπ
    - Avoid large/complex JSON payloads if you can. Consider if you can break the dynamic parts out into individual flags
    - Do not bloat the initialization payload by treating feature flags as a source of truth.
    - **For every commit/sprint/change**.
    Consider the complexity cost of introducing a flag vs the benefits. If your flags look like your commit log or jira backlog, something has gone wrong
  3. tarqd created this gist Mar 1, 2022.
    43 changes: 43 additions & 0 deletions when-feature-flags.md
    Original file line number Diff line number Diff line change
    @@ -0,0 +1,43 @@
    # When should I not use feature flags?

    ## Feature flags work great for use-cases that require these properties:

    **Dynamic**

    - Feature flag changes are propagated to SDKs in under 200ms without restarting the application

    **Contextual**

    - Feature flag rules are evaluated against the user object, allowing you to define rules that easily adapt your business requirements as they change

    **Time-bound**

    - Feature flag rules and targets can be made to automatically expire or change using workflows

    **Delegated**

    - Approvals, Triggers, and the API allow you to easily delegate the authority to change application behavior to people and services with a complete audit trail


    ## You should not use feature flags:


    - **As a replacement for secrets management or to target on secrets/credentials**
    - **As a replacement for configuration management**
    - Feature flags are not a good fit for replacing configuration that is static or rarely changes at runtime. You may want to consider augmenting / overriding with feature flags instead.
    - Feature flags should not replace any configuration that would completely block the application from starting (database hostname, api urls, etc)
    - **As a database or file store**
    - Try to keep variations small
    - Avoid large/complex JSON payloads if you can. Consider if you can break the dynamic parts out into individual flagsπ
    - Do not bloat the initialization payload by treating feature flags as a source of truth.
    - **For every commit/sprint/change**.
    Consider the complexity cost of introducing a flag vs the benefits. If your flags look like your commit log or jira backlog, something has gone wrong
    - ### Good:
    - `Release: Chatbox`
    - `Release: Chatbox Frontend`
    - `Release: Chatbox Backend`
    - ### Bad:
    - `Release: Chatbox Frontend React Component`
    - `Release: Chatbox Frontend Sprint Fix CSS Bug 112`