Go クイックスタート
数分で、あなたの Go サービスはフィーチャーフラグをプロセス内で評価するようになります。確認ごとのネットワーク往復も、リクエスト経路のレイテンシもなく、1 回のポーリングがプロセスの処理するすべてのリクエストをまかないます。
ランタイム依存はゼロ。SDK の require ブロックは空で、これからも空のままです。
1. インストール
Section titled “1. インストール”SDK は GitHub の公開リポジトリにあります。そこから直接、リリースに固定してインストールしてください。
go get github.com/FortressFlag/FortressFlag_SDK_go@v1.0.02. サーバーキー、正真正銘の秘密
Section titled “2. サーバーキー、正真正銘の秘密”この SDK はサーバーキー(ffs_…)を使います。モバイルや Web の SDK が出荷するクライアントキーとは正反対で、ターゲティングルールを含む完全な ruleset をダウンロードできます。データベースのパスワードとまったく同じように扱ってください。環境変数かシークレットマネージャーに置き、コード、リポジトリ、ログには決して入れません。2 つのキーのクラスを並べて。
3. クライアントを起動する
Section titled “3. クライアントを起動する”package main
import ( "context" "os" "time"
fortressflag "github.com/FortressFlag/FortressFlag_SDK_go")
func main() { client, err := fortressflag.New(fortressflag.Configuration{ Key: os.Getenv("FF_SERVER_KEY"), }) if err != nil { // SDK がエラーを返しうる唯一の場所:何かを配信する前の、 // 不正な設定。 panic(err) } defer client.Close()
startCtx, cancel := context.WithTimeout(context.Background(), 15*time.Second) client.Start(startCtx) // 最初の ruleset が届く(またはコンテキストが終わる)までブロックする cancel()
// ... サービスが動く。flag の確認はもうメモリ内の関数呼び出し。}Start が致命的なエラーを返すことはありません。最初の取得が時間内に届かなければ、クライアントはバックグラウンドで再試行を続け、その間、呼び出し元はデフォルトを受け取ります。
4. flag を評価する
Section titled “4. flag を評価する”enabled := client.Bool("new-checkout", fortressflag.Context{ Key: "user-42", // 安定したコンテキストキー:ユーザー ID、セッション ID など、あなたの選択 Tags: map[string]string{"cohort": "beta"},}, false) // flag が不明、または一度も取得していないときのフォールバックclient.String と client.Number も同じように動きます。コンテキストの Key はパーセンテージロールアウトがバケット分けの基準にするものです。同じ識別子を一貫して渡せば、各ユーザーは安定したコホートを得ます。それはあなたのデータです。SDK が検証、保存、ログすることは決してありません。
これで完了です。サービスはローカルで flag を評価しています。ダッシュボードの変更は約 1 分以内にすべてのプロセスに届きます。
評価は決して失敗しない
Section titled “評価は決して失敗しない”Bool、String、Number は常に答え、決して panic しません。flag の問題がサービスを止めることがあってはならないからです。再起動したプロセスは、最初の取得が届くまで呼び出し箇所のフォールバックを配信します(あるいは設定で CachePath を指定して、最後の ruleset を任意のファイルに永続化すれば、再起動はそこから即座に再開します)。失効したキーでさえ何も壊しません。SDK は、新しいキーを渡すまで、最後にダウンロードした ruleset で評価を続けます。
- flag がアプリに届くまで:サーバープレーンの解説
- キー:
ffs_キーの発行、ローテーション、失効 - ターゲティング:サービスがいま評価しているルール