Skip to content

Commit

Permalink
Update docs and screenshots for lifecycle (#9120)
Browse files Browse the repository at this point in the history
Updates feature lifecycle docs with new names and an updated screenshot.
  • Loading branch information
melindafekete authored Jan 21, 2025
1 parent 874aeac commit f268e1f
Show file tree
Hide file tree
Showing 3 changed files with 20 additions and 20 deletions.
24 changes: 12 additions & 12 deletions website/docs/reference/feature-toggles.mdx
Original file line number Diff line number Diff line change
Expand Up @@ -87,40 +87,40 @@ With Admin access, you can configure these values. In the Admin UI, go to **Conf

:::

Based on usage metrics and interactions with Unleash, feature flags can go through five distinct lifecycle stages: initial, pre-live, live, completed, and archived. These stages mirror the typical software development process and allow you to identify bottlenecks at any stage of the lifecycle.
Based on usage metrics and interactions with Unleash, feature flags can go through five distinct lifecycle stages: _Define_, _Develop_, _Production_, _Cleanup_, and _Archived_. These stages mirror the typical software development process and allow you to identify bottlenecks at any stage of the lifecycle.
These insights can help you improve the efficiency of your software development process.

![Feature lifecycle](/img/feature-lifecycle.png)

### Lifecycle stages

#### Initial
#### Define

The feature flag is created, but Unleash hasn't detected any metrics in any environments. Once Unleash receives metrics from a [non-production environment](/reference/environments#environment-types), the flag moves to the [pre-live](#pre-live) stage.
The feature flag is created, but Unleash hasn't detected any metrics in any environments. Once Unleash receives metrics from a [non-production environment](/reference/environments#environment-types), the flag moves to the [Develop](#develop) stage.

A feature stuck in an initial stage can indicate integration issues in pre-production setups.
A feature stuck in a _Define_ stage can indicate integration issues in pre-production setups.

#### Pre-live
#### Develop

The feature flag has received metrics in a non-production environment or a [production environment](/reference/environments#environment-types) that is disabled. Too much time in the pre-live stage can suggest challenges in achieving production readiness.
The feature flag has received metrics in a non-production environment or a [production environment](/reference/environments#environment-types) that is disabled. Too much time in the _Develop_ stage can suggest challenges in achieving production readiness.

#### Live
#### Production

The first users have been exposed to the feature in a [production environment](/reference/environments#environment-types). Once you have enough production usage data, you can mark the feature as completed. Marking the feature flag as complete does not affect any configuration; you decide whether to keep the feature, keep just one variant of it, or archive it entirely.

This stage serves as a reminder to start cleaning up the feature toggle and removing it from the code. A feature flag stuck in the live stage can indicate difficulties in data gathering or decision-making.
This stage serves as a reminder to start cleaning up the feature toggle and removing it from the code. A feature flag stuck in the _Production_ stage can indicate difficulties in data gathering or decision-making.

#### Completed
#### Cleanup

The feature has been completed but Unleash still receives usage metrics in [production](/reference/environments#environment-types). This is an indication that you should clean up the feature flag from your code before archiving it.
If you've accidentally marked the feature as completed, you can revert it to the [live](#live) stage.
If you've accidentally marked the feature as completed, you can revert it to the [Production](#production) stage.

Too much time in the completed stage can indicate delays in decommissioning the feature and cleaning up resources.

#### Archived

Unleash hasn't detected any production usage metrics for at least two days. It's likely that it is safe to archive this flag.
If an archived feature is revived, it starts a new lifecycle with a new [initial](#initial) stage.
If an archived feature is revived, it starts a new lifecycle with a new [Define](#define) stage.

## Feature flag dependencies

Expand All @@ -142,7 +142,7 @@ A child feature flag is evaluated only when both the child and its parent featur

To add a dependency, you need the `update-feature-dependency` project permission. In the Admin UI, go to the feature flag you want to add a parent to and select **Add parent feature**.

![Feature lifecycle](/img/add-parent-flag.png)
![Feature parent flag](/img/add-parent-flag.png)

Archiving a child feature flag also removes its dependencies on parent feature flags. A parent feature cannot be archived if it has any child dependencies; in such cases, remove the dependencies, or archive both parent and child together.

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -212,19 +212,19 @@ Paying down technical debt–in its simplest form, removing old flags–requires

All feature flags progress through a set of predefined lifecycle stages even if these stages are not explicitly defined in your feature flag system:

- Initial: The feature flag is defined, but no code implementation has begun.
- Pre-Live: Some code is implemented, but the feature is not enabled for any users in production. Internal testing and validation are ongoing.
- Live: The code is deployed to production and gradually rolled out to a controlled set of users for validation with real users.
- Completed: A team has decided to keep or cancel the feature. The feature flag still exists, but it is now time to clean up the code protected by it to ensure no more technical debt is acquired.
- Define: The feature flag is defined, but no code implementation has begun.
- Develop: Some code is implemented, but the feature is not enabled for any users in production. Internal testing and validation are ongoing.
- Production: The code is deployed to production and gradually rolled out to a controlled set of users for validation with real users.
- Cleanup: A team has decided to keep or cancel the feature. The feature flag still exists, but it is now time to clean up the code protected by it to ensure no more technical debt is acquired.
- Archived: The feature flag has reached its end-of-life and has been disabled. The code associated with the feature flag is cleaned up to avoid technical debt.

By monitoring feature progression through the lifecycle stages, organizations gain valuable insights from which they can benefit to improve their development process and pay down technical debt. Some key benefits of tracking feature flag lifecycle include:

- Identifying Bottlenecks: Teams can analyze the average time spent in each stage and pinpoint bottlenecks. Some examples include:
1. Stuck in Initial: This may indicate issues like unclear requirements or integration difficulties in pre-production environments.
2. Stuck in Pre-live: Suggest challenges in achieving production readiness, like incomplete testing or code bugs.
3. Stuck in Live: This could imply difficulties gathering data or making decisions about the feature's future (e.g., lack of clear success metrics).
4. Stuck in Completed: Signals delays in decommissioning the feature flag and cleaning up resources, potentially creating technical debt.
1. Stuck in Define: This may indicate issues like unclear requirements or integration difficulties in pre-production environments.
2. Stuck in Develop: Suggest challenges in achieving production readiness, like incomplete testing or code bugs.
3. Stuck in Production: This could imply difficulties gathering data or making decisions about the feature's future (e.g., lack of clear success metrics).
4. Stuck in Cleanup: Signals delays in decommissioning the feature flag and cleaning up resources, potentially creating technical debt.
- Easily Remove Stale Feature Flags: Feature flags left active after their purpose is served tend to create technical debt. This code is unused, increasing the risk of accidental exposure in production and making the codebase more complex to maintain. By retiring flags promptly, developers understand which code sections can be safely cleaned up, reducing technical debt.
- Data-Driven Insights: By collecting and aggregating metrics across features and teams over time, organizations gain valuable insights into team performance trends. Suddenly, it is easy to measure time-to-production or the number of times we need to disable a feature in production. Over time, this level of insights allows organizations to identify gradual changes in team efficiency or identify areas needing improvement that might otherwise go unnoticed.

Expand Down
Binary file modified website/static/img/feature-lifecycle.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.

0 comments on commit f268e1f

Please sign in to comment.