メインコンテンツへスキップ

概要

Shannonはフィーチャーフラグを使用して、コードを変更することなくオプション機能、実験的機能、エンタープライズ拡張を制御します。これにより、以下のクリーンな分離が可能になります:
  • オープンソースのコア機能(すべての人が利用可能)
  • エンタープライズ/プライベート機能(フラグの背後に制限)
  • 実験的機能(テスト用に切り替え可能)

ゼロ再コンパイル

サービスを再構築せずに機能を有効/無効にする

環境ベース

開発/ステージング/本番用の異なるフラグ

クリーンな分離

OSSコアから隔離されたエンタープライズ機能

段階的ロールアウト

完全な展開前に新機能をテストする

設定

設定ファイル

フィーチャーフラグは、config/shannon.yamlfeaturesセクションで定義されています:

環境変数

フィーチャーフラグは環境変数で上書きできます:
命名規則: SHANNON_FEATURE_<FLAG_NAME_UPPERCASE>

優先順位

  1. 環境変数(最優先)
  2. 設定オーバーレイconfig/overlays/shannon.{env}.yaml
  3. ベース設定config/shannon.yaml
  4. コードデフォルト(最低優先)

使用パターン

Goコード内(オーケストレーター)

Pythonコード内(LLMサービス)

条件付きインポートパターン

フィーチャーフラグを使用して条件付きインポートを行い、クリーンな分離を実現します:

一般的なフィーチャーフラグ

ベストプラクティス

1. デフォルトは無効にする

新機能はベース設定でfalseにデフォルト設定するべきです:

2. 環境オーバーレイを使用する

異なるデプロイメント用に環境固有のオーバーレイを作成します:
次のように読み込みます:

3. Try/Exceptでガードする

エンタープライズ/オプション機能には常に優雅なフォールバックを使用します:

4. フィーチャー要件を文書化する

エンタープライズフィーチャーパターン

ShannonはOSSコアエンタープライズ拡張をフィーチャーフラグを使用して分離します:

ファイル構造

条件付きワークフロールーティング

機能フラグを用いたテスト

ユニットテスト

統合テスト

デプロイメント戦略

カナリアデプロイメント

ユーザーのサブセットに対して機能を有効化:

A/B テスト

機能フラグに基づいてトラフィックをルーティング:

モニタリングと可観測性

デバッグ用に機能フラグの使用をログに記録:
メトリクスを追加:

マイグレーションガイド

新しい機能フラグの追加

1

設定でフラグを定義

config/shannon.yamlに追加:
2

Go構造体を更新

go/orchestrator/internal/config/shannon.goにフィールドを追加:
3

コードで使用

機能を制御:
4

テストを追加

有効/無効の状態をテスト:
5

文書化

このページと環境変数の文書を更新。

関連文書

環境変数

設定オプションの完全なリスト

ベンダーアダプター

ベンダー固有の統合を構築

設定ガイド

Shannonの設定概要

Shannonの拡張

カスタム機能とワークフローを追加