機能を有効または無効にする機能フラグ feature-flags
機能フラグを使用すると、コードを再デプロイすることなく、実行時にアプリケーション機能をオンまたはオフにできます。 また、コードのデプロイメントを機能の可用性から切り離します。新しいコードは、フラグの背後にある本番環境にデプロイでき、準備ができたときにのみオンにすることができます。
これにより、リスクを大幅に軽減できます。 開発者は、俊敏性と信頼性を維持して構築でき、製品チームは、各機能リリースのタイミングとオーディエンスを自由に制御できます。
開発時の依存関係の管理 manage-dependencies
機能フラグは、迅速な開発サイクルでテストを行う際の依存関係の管理に役立ちます。 開発者は、結合の競合やリファクタリングの解決にかかる時間が短縮され、機能の提供により多くの時間を費やせるようになります。
機能の可用性はコードの外部で制御されるため、複雑な分岐を必要とせずに、複数の機能を並行して開発できます。 個々のフィーチャーは、進行中の他のフィーチャーに影響を与えることなく、独立してロールフォワードまたはロールバックできます。
ダークな展開 dark-deployments
有効と無効の決定はコードベースの外部にあるため、機能をエンドユーザーに表示しないまま実稼動環境にコードをデプロイできます。 これは ダークデプロイメント と呼ばれます。
ダークなデプロイメントでは、コードを安全に本番環境にプッシュし、実際の条件に照らしてライブ環境でテストし、デプロイメントスケジュールで強制されている場合ではなく、選択した場合に本番環境に移行できます。
段階的な展開 gradual-rollout
リリースの準備ができたら、機能フラグを使用して 段階的なロールアウト を実行できます。機能を1%のユーザーに開き、フィードバックとパフォーマンスを測定してから、段階的に増やします。
このローリングアプローチにより、提供するエクスペリエンスをよりタイトに制御し、実際のユーザーとのフィードバックループを高速化することができます。これにより、フルリリース前にチームが迅速に対応できるようになります。
キルスイッチ kill-switch
リリースが計画通りに進まない場合(好ましくないフィードバック、バグ、またはパフォーマンスの問題)は、機能フラグを キルスイッチ として使用して、すぐに機能をオフにできます。 コードの変更や再デプロイメントは必要ありません。
機能フラグのライフサイクル lifecycle
エクスペリエンスのロールアウトの機能フラグは、次の一般的なライフサイクルに従います。