Zum Inhalt springen

Go-Quickstart

In ein paar Minuten wertet dein Go-Service Feature Flags in-process aus — kein Netzwerk-Hop pro Prüfung, keine Latenz in deinem Request-Pfad, eine Abfrage versorgt jeden Request, den dein Prozess bedient.

Null Laufzeitabhängigkeiten: Der require-Block des SDKs ist leer und bleibt es.

Das SDK liegt in einem öffentlichen Repository auf GitHub — installiere es direkt von dort, auf das Release gepinnt:

Terminal window
go get github.com/FortressFlag/FortressFlag_SDK_go@v1.0.0

Dieses SDK benutzt einen Server-Schlüssel (ffs_…), und der ist das Gegenteil der Client-Schlüssel, die die Mobil- und Web-SDKs ausliefern: Er kann dein vollständiges Ruleset herunterladen, Targeting-Regeln inklusive. Behandle ihn genau wie ein Datenbankpasswort — eine Umgebungsvariable oder ein Secret-Manager, nie Code, nie ein Repository, nie ein Log. Die zwei Schlüsselklassen, nebeneinander.

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 {
// Die eine Stelle, an der das SDK einen Fehler liefern kann: eine fehlerhafte
// Konfiguration, bevor irgendetwas ausliefert.
panic(err)
}
defer client.Close()
startCtx, cancel := context.WithTimeout(context.Background(), 15*time.Second)
client.Start(startCtx) // blockiert, bis das erste Ruleset ankommt (oder der Context endet)
cancel()
// ... dein Service läuft; Flag-Prüfungen sind jetzt In-Memory-Funktionsaufrufe.
}

Start liefert nie einen fatalen Fehler — wenn der erste Abruf nicht rechtzeitig landet, versucht der Client es im Hintergrund weiter, und deine Aufrufer bekommen inzwischen ihre Standards.

enabled := client.Bool("new-checkout", fortressflag.Context{
Key: "user-42", // dein stabiler Kontext-Key: eine User-ID, eine Session-ID — deine Wahl
Tags: map[string]string{"cohort": "beta"},
}, false) // der Fallback, wenn das Flag unbekannt ist oder nie etwas abgerufen wurde

client.String und client.Number funktionieren genauso. Der Kontext-Key ist das, worauf Prozent-Rollouts bucketen — übergib denselben Bezeichner konsistent, und jeder Nutzer bekommt eine stabile Kohorte. Es sind deine Daten: Das SDK validiert, speichert oder loggt sie nie.

Das war’s — dein Service wertet Flags lokal aus. Eine Dashboard-Änderung erreicht jeden Prozess innerhalb von etwa einer Minute.

Bool, String und Number antworten immer und panicken nie — ein Flag-Problem darf deinen Service niemals lahmlegen. Ein neu gestarteter Prozess liefert deine Fallbacks von der Aufrufstelle, bis sein erster Abruf landet (oder setz CachePath in der Konfiguration, um das letzte Ruleset in einer Datei deiner Wahl zu persistieren, und Neustarts setzen sofort daraus fort). Selbst ein widerrufener Schlüssel macht nichts kaputt: Das SDK wertet mit dem zuletzt heruntergeladenen Ruleset weiter aus, bis du ihm einen neuen Schlüssel gibst.