Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Add Feature Flag Migration guide to docs #4792

Merged
merged 38 commits into from
Sep 22, 2023
Merged
Show file tree
Hide file tree
Changes from 23 commits
Commits
Show all changes
38 commits
Select commit Hold shift + click to select a range
81314f6
Create feature-flag-migration-best-practices.md
ardeche07 Sep 20, 2023
361f77a
Create feature-flag-migration-scope.md
ardeche07 Sep 20, 2023
3c8e44f
Create business-case-feature-flag-migration.md
ardeche07 Sep 20, 2023
f191ff4
Create planning-feature-flag-migration.md
ardeche07 Sep 20, 2023
f96a242
Create how-to-execute-feature-flag-migration.md
ardeche07 Sep 20, 2023
499949d
Create onbording-users-to-feature-flag-service.md
ardeche07 Sep 20, 2023
1071696
Update feature-flag-migration-scope.md
ardeche07 Sep 20, 2023
cb236ed
Update feature-flag-migration-scope.md
ardeche07 Sep 20, 2023
4815a46
Update business-case-feature-flag-migration.md
ardeche07 Sep 20, 2023
97ea72d
Update planning-feature-flag-migration.md
ardeche07 Sep 20, 2023
8905801
Update how-to-execute-feature-flag-migration.md
ardeche07 Sep 20, 2023
11429d2
Update sidebars.js
ardeche07 Sep 20, 2023
3192a21
Update sidebars.js
ardeche07 Sep 20, 2023
38ee15a
Update website/docs/topics/feature-flag-migration/business-case-featu…
ardeche07 Sep 20, 2023
4a4eb92
Update website/docs/topics/feature-flag-migration/feature-flag-migrat…
ardeche07 Sep 20, 2023
b44b832
Update feature-flag-migration-scope.md
ardeche07 Sep 20, 2023
03dbc38
Update website/docs/topics/feature-flag-migration/feature-flag-migrat…
ardeche07 Sep 20, 2023
b099b4d
Update website/docs/topics/feature-flag-migration/feature-flag-migrat…
ardeche07 Sep 20, 2023
058c48b
Update website/docs/topics/feature-flag-migration/planning-feature-fl…
ardeche07 Sep 20, 2023
907fe70
Update website/docs/topics/feature-flag-migration/planning-feature-fl…
ardeche07 Sep 20, 2023
e7e636e
Update website/docs/topics/feature-flag-migration/planning-feature-fl…
ardeche07 Sep 20, 2023
42f7dcd
Update website/docs/topics/feature-flag-migration/planning-feature-fl…
ardeche07 Sep 20, 2023
33b0a4d
Update sidebars.js
ardeche07 Sep 20, 2023
655e5d3
Update website/sidebars.js
ardeche07 Sep 20, 2023
9f979f3
Update website/sidebars.js
ardeche07 Sep 20, 2023
6791a4d
Update sidebars.js
ardeche07 Sep 20, 2023
54ab011
Fix sidebars
gastonfournier Sep 20, 2023
63a3628
Fixes with Michael
gastonfournier Sep 20, 2023
e0dd224
Merge remote-tracking branch 'origin/main' into patch-3
gastonfournier Sep 20, 2023
bee13e7
Some fixes
gastonfournier Sep 20, 2023
7a85faa
Update website/docs/topics/feature-flag-migration/feature-flag-migrat…
ardeche07 Sep 21, 2023
5cff390
Update website/docs/topics/feature-flag-migration/business-case-featu…
ardeche07 Sep 21, 2023
bfd838d
Update website/docs/topics/feature-flag-migration/feature-flag-migrat…
ardeche07 Sep 21, 2023
ad7fd7d
Update website/docs/topics/feature-flag-migration/feature-flag-migrat…
ardeche07 Sep 21, 2023
ebb8f96
Update website/docs/topics/feature-flag-migration/how-to-execute-feat…
ardeche07 Sep 21, 2023
08e1f5c
Update website/docs/topics/feature-flag-migration/planning-feature-fl…
ardeche07 Sep 21, 2023
1444df5
Update website/sidebars.js
markunl Sep 22, 2023
2dc80a2
Merge branch 'main' into patch-3
thomasheartman Sep 22, 2023
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
@@ -0,0 +1,16 @@
---
title: Make the business case for feature flag migration
---

Once you have scoped your migration, you need to make a business case. Even the most well-planned migrations are work. Work means time, money, and energy dedicated to a project. If you don’t have the proper buy-in, you risk not being under-resourced or worse, being unable to complete the migration at all.
ardeche07 marked this conversation as resolved.
Show resolved Hide resolved

When building a business case, you want to be clear on what pain the feature flag migration is solving and the happy end state once the migration is complete.

To structure your thinking, ask yourself:

* What practices related to feature deployments, debugging and rollbacks are overburdening teams today and driving down productivity?
* What specific deficiencies are there in the current platform
* What business outcomes are you looking to drive?
* After the migration, what does “better” look like?

Use our [Feature Flag Migration template](https://docs.google.com/spreadsheets/d/1MKc95v7Tc-9tznWMDVSy2vvmVJTvOFLRVZpx1QrL-_U/edit#gid=996250264) to fill in details about your business case.
Original file line number Diff line number Diff line change
@@ -0,0 +1,17 @@
---
title: Best Practices for Migrating from a Homegrown Feature Management Solution
---

Many large organizations have an existing feature management solution that they have outgrown and plan to migrate to a feature flag service.

This guide outlines best practices for feature flag migrations. Approaching the migration from your current feature flag solution to Unleash the right way will save you time, money, and a lot of headaches.
ardeche07 marked this conversation as resolved.
Show resolved Hide resolved

Based on our work with organizations having millions of flags and thousands of users, there are five phases of a feature flag migration:

1. Define scope
2. Make business case
3. Planning
4. Execution
5. Onboarding users

This guide provides a summary of each topic as well as a detailed Feature Flag Migration template that you can use to plan your migration.
Original file line number Diff line number Diff line change
@@ -0,0 +1,29 @@
---
title: Defining the scope of the feature flag migration
---

Scoping a feature flag migration properly is the single biggest thing you can do to ensure the success of your project.
gastonfournier marked this conversation as resolved.
Show resolved Hide resolved
ardeche07 marked this conversation as resolved.
Show resolved Hide resolved

Based on experiences working with dozens of large enterprises migrating homegrown systems to Unleash, we recommend two best practices when scoping your feature flag migration.

## 1- Separate the migration of old flags from the existing system from new flags created in Unleash.

The older the system, the more existing flags there are. It might take weeks or months to hunt down the developer responsible for an old flag in an obscure part of the code base. In the meantime, hundreds of developers are trying to create new flags today. By separating these concerns, you can get to the “happy end state” for your development team faster, and burn down your flag migrations over time.

So you should end up with two separate tracks as part of your project scope.

1. Build the new platform around the “better” target state - ideal use cases and ways of working that enable greater levels of developer efficiency

In parallel, the second track:

2. Clean up stale feature flags in the current platform. You should decide strategically on what should be migrated and what should be cleaned up. Many old flags can simply be deleted rather than migrated.

## 2- Do not make end-to-end app modernization a dependency of your feature flag migration

Organizations who adopt feature flags see improvements in all key operational metrics for DevOps: Lead time to changes, mean-time-to-recovery, deployment frequency, and change failure rate. So it is natural as part of a feature flag migration to also improve other parts of the software development lifecycle. From the perspective of feature flag migration, this is a mistake.

Making feature flag migration dependent on breaking down mission-critical monolithic applications into microservices, for example, will slow down your feature flag migration.

Rather, enable feature flags for all codebases, independent of your state of modernization. Even monolithic applications can benefit from feature flags in some instances. And when this monolith is broken down, the accrued benefits will be even greater. And you will ship your new feature management system a lot faster.
ardeche07 marked this conversation as resolved.
Show resolved Hide resolved

Use our [Feature Flag Migration template](https://docs.google.com/spreadsheets/d/1MKc95v7Tc-9tznWMDVSy2vvmVJTvOFLRVZpx1QrL-_U/edit#gid=996250264) to fill in details about your project scope.
markunl marked this conversation as resolved.
Show resolved Hide resolved
Original file line number Diff line number Diff line change
@@ -0,0 +1,29 @@
### Migration Execution
gastonfournier marked this conversation as resolved.
Show resolved Hide resolved

Now that we have completed the planning, below are some of our Best Practices for carrying out the migration based on our experience.

First, it can help to break the migration down into an order of activities, for example:

* **Minimum Viable Product (MVP) launch**
* Platform implemented, passed security/change management requirements, and available for developer use
* Rollout to the highest priority groups of users
* Matching use cases of the legacy platform
* Legacy system fallback available
* **Medium-term**
* Rollout to additional groups, adoption of further, less critical use cases
ardeche07 marked this conversation as resolved.
Show resolved Hide resolved
* Sunset of legacy system
* **Longer term**
* Adoption of new use cases

For each activity, plan for the Level of Effort (LoE), or the number of hours/days the task will take the assigned resource or group to fulfill.

Next up is risk handling. **Are there any perceived risks to the timelines that could be addressed upfront?**

* Have the teams involved with the migration committed to set hours for working the migration tasks upfront, have had migration project success criteria and their tasks communicated to them, and Q&A fulfilled?
* How long are various sign-offs by any relevant groups expected to take?
* E.g. Change Advisory Board, Security Controls, hardening checks, etc
* Plan to exceed each team’s documentation requirements to ensure fewer Requests for Information

Every step of the way, it can help to conduct reviews and look-backs at each rollout stage as well as what lies ahead.

Use our [Feature Flag Migration template](https://docs.google.com/spreadsheets/d/1MKc95v7Tc-9tznWMDVSy2vvmVJTvOFLRVZpx1QrL-_U/edit#gid=996250264) to fill in details about your project plan execution.
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
### Onboarding
gastonfournier marked this conversation as resolved.
Show resolved Hide resolved

Finally, after the migration has been completed and everyone has celebrated, you need to onboard team members onto the platform.

Unleash Customer Success is here to help, whether your developers are seasoned feature flag management experts or new to the concepts - we will deliver tailored, white-glove training to accommodate use cases and developer skill levels.

In addition, for those who prefer a self-paced approach, a wealth of content is available on our [YouTube channel](https://www.youtube.com/channel/UCJjGVOc5QBbEje-r7nZEa4A), [website](https://www.getunleash.io/), and [documentation](https://docs.getunleash.io/) portal to get your teams going quickly.
Original file line number Diff line number Diff line change
@@ -0,0 +1,84 @@
### Planning Feature Flag Migration
gastonfournier marked this conversation as resolved.
Show resolved Hide resolved

When planning your feature flag migration, it is essential to focus on four key areas:

* Use cases
* Core feature flag setup
* Key stakeholders
* System architecture

## Use Cases

It is essential to know how feature flags will be used so that you can set up the proper data model, user permissions, and system architecture.
ardeche07 marked this conversation as resolved.
Show resolved Hide resolved

Below are some of the most common use cases for feature flags. Start by selecting those that are in scope for your initial rollout. It is common to start with some, but not all, of these and roll out the remaining in the future.

Use cases for feature flags:

* Operational or Permission flags (also known as “Kill Switches”
* Gradual rollouts
* Canary releases
* A/B testing / Experimentation

Core Feature Flag setup

This planning phase is all about understanding the anatomy of the existing feature flag setup so it can be moved to Unleash.

Key questions include:

* Many many flags are there?
* How many are active?
* Do the inactive flags need to be migrated, or can they be removed entirely, simplifying migration?

Once you have an understanding of what needs to be migrated, you should plan for how flags will be organized in the future. Picking the right organizing principle is critical for access controls. Unleash supports Application, Project, Environment, and Role-based access, so pick the option that makes the most logical sense for your organization.

Our experience tells us that organizing flags by the development teams that work on them is the best approach. For example:

* By application or microservice
* E.g. Shopping Cart, Website, Mobile app
* By Projects
* E.g. Logistics, Finance
* By organization hierarchy
* E.g. Frontend, backend, platform teams

## Key stakeholders

When planning your migration, it is important to understand who will be managing the feature flag system and who will be using the feature flag system on a day-to-day basis. Additionally, you need to know who will be responsible for key migration tasks.

From our experience, looping all key stakeholders into the project early on means that all eventualities can be planned for in advance, reducing the risk of project implementation delays due to unforeseen sign-off requirements. Decision makers can help assign and gather resources needed for the migration, as well as advise on the correct business processes that need to be followed at the various project stages.

System Architecture

You will also need to plan how you set up Unleash itself as part of your migration planning process. Unleash is extremely flexible with lots of hosting and security configuration options to align with the unique requirements of large enterprises.


## How is our current feature flag architecture set up?

This part is key to understanding how Unleash needs to be implemented. This plays a part in resource planning for both personnel and infrastructure cost allocation. For instance

* What languages and frameworks are our front end and backend using?
* Where are our applications hosted?
* Where are end users of the application based geographically?

## Security and organizational policy requirements

You will also want to pay attention to Security & Organisational Policy requirements.

For example, do you need to keep sensitive context inside your firewall perimeter?

Often the answer to this question defines whether you will run Unleash in a hosted, or self-hosted fashion.

Many customers prefer a hosted solution if their security policy will allow it because it reduces overhead on SRE teams and infrastructure. Unleash offers a single-tenant hosted solution, so even security-conscious customers can sometimes opt for a hosted solution.

If that is not an option, Unleash instances need to be managed by customer SRE / DevOps teams. If this is the direction you are going, you should plan for it in this phase of the project.

Other areas of system architecture to investigate during the planning phase are:

* Data protection
* Do we have to comply with HIPPA, SOC-2, ISO 27001, GDPR, etc?
* How do we authenticate and manage user access & RBAC/roles?
* Do we have any Change Management policies we need to adhere to?
* Do we consume feature flag data, such as events, in any other systems downstream?
* For example, Jira Cloud for issue management, Datadog for real-time telemetry, Slack or Microsoft Teams for notifications or Google Analytics for user interactions.

Use our [Feature Flag Migration template](https://docs.google.com/spreadsheets/d/1MKc95v7Tc-9tznWMDVSy2vvmVJTvOFLRVZpx1QrL-_U/edit#gid=996250264) to fill in details about your project planning.
14 changes: 13 additions & 1 deletion website/sidebars.js
Original file line number Diff line number Diff line change
Expand Up @@ -36,7 +36,7 @@ module.exports = {
type: 'generated-index',
title: 'Topic guides',
description:
'Discussions, explanations, and explorations regarding topics related to Unleash.',
'Discussions, explanations, and explorations regarding topics related to feature flags and Unleash.',
slug: '/topics',
},
items: [
Expand All @@ -45,6 +45,18 @@ module.exports = {
'topics/managing-constraints',
'topics/proxy-hosting',
'topics/data-collection',
{
type: 'category',
label: 'Feature Flags Migrations',
markunl marked this conversation as resolved.
Show resolved Hide resolved
link: { type: 'doc', id: 'topics/feature-flag-migration-best-practices'
items: [
'topics/feature-flag-migration-scope',
'topics/business-case-feature-flag-migration',
'topics/planning-feature-flag-migration',
'topics/how-to-execute-feature-flag-migration',
'topics/onbording-users-to-feature-flag-service',
],
},
ardeche07 marked this conversation as resolved.
Show resolved Hide resolved
],
},
ardeche07 marked this conversation as resolved.
Show resolved Hide resolved
{
Expand Down
Loading