Ga naar inhoud

Go-quickstart

Binnen een paar minuten evalueert je Go-service feature flags in-process — geen netwerkstap per controle, geen latentie in je verzoekpad, één poll die elk verzoek bedient dat je proces afhandelt.

Nul runtime-dependencies: het require-blok van de SDK is leeg, en blijft dat.

De SDK is pre-release en zijn repository is nog niet publiek. Heeft je team toegang gekregen, dan is het modulepad hieronder waar hij leeft.

Terminal window
go get github.com/FortressFlag/FortressFlag_SDK_go

Deze SDK gebruikt een serversleutel (ffs_…), en die is het tegenovergestelde van de clientsleutels die de mobiele en web-SDK’s meesturen: hij kan je volledige ruleset downloaden, targetingregels inbegrepen. Behandel hem precies als een databasewachtwoord — een omgevingsvariabele of een secret manager, nooit code, nooit een repository, nooit een log. De twee sleutelklassen, naast elkaar.

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 {
// De ene plek waar de SDK kan fouten: een misvormde configuratie,
// voordat er iets serveert.
panic(err)
}
defer client.Close()
startCtx, cancel := context.WithTimeout(context.Background(), 15*time.Second)
client.Start(startCtx) // blokkeert tot de eerste ruleset binnenkomt (of de context eindigt)
cancel()
// ... je service draait; flagcontroles zijn nu functieaanroepen in het geheugen.
}

Start geeft nooit een fatale fout terug — kan de eerste fetch niet op tijd landen, dan blijft de client het op de achtergrond proberen en krijgen je aanroepers intussen hun standaarden.

enabled := client.Bool("new-checkout", fortressflag.Context{
Key: "user-42", // je stabiele contextsleutel: een gebruikers-id, een sessie-id — jouw keuze
Tags: map[string]string{"cohort": "beta"},
}, false) // de fallback als de flag onbekend is of er nooit iets is opgehaald

client.String en client.Number werken op dezelfde manier. De context-Key is waar percentage-rollouts op bucketten — geef consequent dezelfde identifier mee en elke gebruiker krijgt een stabiel cohort. Het zijn jouw gegevens: de SDK valideert, bewaart of logt ze nooit.

Dat is het — je service evalueert flags lokaal. Een dashboardwijziging bereikt elk proces binnen ongeveer een minuut.

Bool, String en Number geven altijd antwoord en panicken nooit — een flagprobleem mag nooit je service neerhalen. Een herstart proces serveert je fallbacks van de aanroepplek tot zijn eerste fetch landt (of zet CachePath in de configuratie om de laatste ruleset naar een bestand naar keuze te bewaren, en herstarts hervatten er onmiddellijk uit). Zelfs een ingetrokken sleutel breekt niets: de SDK blijft evalueren met de laatst gedownloade ruleset tot je hem een nieuwe sleutel geeft.