Feature Flag の管理を楽にする設計
概要
Feature Flag は機能の有効/無効を切り替える仕組みですが、適切に管理しないとコードは複雑化し、メンテナンスも難しくなります。ここでは、Feature Flag を効果的に管理するための設計方針を考えます。
環境名だけだとメンテナンスコストが高い
次のコードのように環境名だけで制御すると、有効な機能を知るために条件分岐を 1 つずつ追う必要があります。
| def f(environment):
if environment == "production":
...
elif environment == "staging":
...
elif environment == "development":
...
elif environment == "test":
...
else:
raise ValueError("Unknown environment")
|
環境名から各機能の有効・無効を判断する代わりに、機能名ごとに設定を持たせます。ここでは TOML で記述しますが、map や dict など、使っている言語のデータ構造でも表現できます。
| [prod]
feature_a = true
feature_b = false
[staging]
feature_a = false
feature_b = true
[dev]
feature_a = false
feature_b = false
[test]
feature_a = true
feature_b = true
|
このように機能名で制御すれば、有効な機能を一目で把握できます。