ag 付きで実装しておくことで、その機能の反映可否 をコードを変更することなく 行 えるようにできる •「 fl ag 付きで実装する = fl ag を含む if 分岐で実装を囲んでおくことによっていつでもその実装を有効化無効化できるよ うに実装をしておく」 •役割を終えたら feature fl ag を削除する、といいうのを徹底してやらないとコードが複雑化 してしまう •feature fl ag の実装は属 人 化しがちなので、早めに実装した 人 が削除しないと簡単に負債化してしまう The Go gopher was designed by Renée French. GO Feature Flag
ON ͷ࣌ʹ࣮ߦ͍ͨ͠ॲཧ // ex.) ө͍ͨ͠मਖ਼ // ex.) AB ςετͷ A Λ༗ޮԽ͢Δ // ... } else { // flag OFF or flag Λઃఆ͍ͯ͠ͳ͍࣌ʹ // ࣮ߦ͍ͨ͠ॲཧ // ex.) मਖ਼લͷطଘͷ࣮ // ex.) AB ςετͷ B Λ༗ޮԽ͢Δ // ... } 実装イメージ • HOGE_FLAG とういう fl ag が ON だっ た場合と OFF だった場合の処理を if 文 で書く • AB テストや特定の実装を有効化する場 合などに使える The Go gopher was designed by Renée French. GO Feature Flag
されたら main に merge される •main に変更が含まれる •dev には 自 動リリースされる •この時点で release tag を打つとどうなるか •その release に main の変更が含まれる •stg にその version をデプロイする •stg には release tag を打ったタイミングのいくつかの修正が含まれる •stg ではいくつかの修正が含まれている •A:テスト済 •B:テスト未 •prod に先に A の修正をリリースしたい •先ほど打った release には A, B が含まれている •prod の version を上げる(デプロイする)とA, B の修正が両 方 prod に上がってしまう •これが嫌な場合は B のテストが終わるまで A のリリースができない😇(その release tag に含まれているすべての修正がリリース可能な状態で あることが確認できないとリリースできない) The Go gopher was designed by Renée French.
適切に理解して使 用 する必要がある • (feature fl ag と feature toggle という2つの呼び名が存在するが 同じもの) feature fl ag の種類 The Go gopher was designed by Renée French. Feature Toggles (aka Feature Flags)