Pular para o conteúdo

Quickstart de Go

Em poucos minutos o seu serviço em Go vai avaliar feature flags in-process — sem salto de rede por verificação, sem latência no caminho das suas requisições, um polling atendendo toda requisição que o seu processo trata.

Zero dependências em runtime: o bloco require do SDK é vazio, e continua assim.

O SDK mora em um repositório público no GitHub — instale-o direto de lá, fixado na release:

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

Este SDK usa uma chave de servidor (ffs_…), e ela é o oposto das chaves de cliente que os SDKs de mobile e web carregam: ela consegue baixar o seu ruleset completo, regras de segmentação incluídas. Trate-a exatamente como uma senha de banco de dados — uma variável de ambiente ou um gerenciador de segredos, nunca código, nunca um repositório, nunca um log. As duas classes de chave, lado a lado.

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 {
// O único lugar em que o SDK pode dar erro: uma configuração malformada,
// antes de qualquer coisa ser servida.
panic(err)
}
defer client.Close()
startCtx, cancel := context.WithTimeout(context.Background(), 15*time.Second)
client.Start(startCtx) // bloqueia até o primeiro ruleset chegar (ou o contexto terminar)
cancel()
// ... o seu serviço roda; verificações de flag agora são chamadas de função em memória.
}

Start nunca retorna um erro fatal — se a primeira busca não conseguir chegar a tempo, o cliente continua tentando em segundo plano e quem chama recebe os padrões enquanto isso.

enabled := client.Bool("new-checkout", fortressflag.Context{
Key: "user-42", // a sua chave de contexto estável: um id de usuário, um id de sessão — você escolhe
Tags: map[string]string{"cohort": "beta"},
}, false) // o fallback se a flag for desconhecida ou nada tiver sido buscado ainda

client.String e client.Number funcionam do mesmo jeito. A Key de contexto é o que os rollouts percentuais usam para distribuir — passe o mesmo identificador de forma consistente e cada usuário recebe uma coorte estável. É dado seu: o SDK nunca valida, armazena nem registra isso em log.

É isso — o seu serviço está avaliando flags localmente. Uma mudança no painel chega a todo processo em cerca de um minuto.

Bool, String e Number sempre respondem e nunca dão panic — um problema com flags nunca pode derrubar o seu serviço. Um processo reiniciado serve os fallbacks do ponto de chamada até a primeira busca chegar (ou defina CachePath na configuração para persistir o último ruleset em um arquivo à sua escolha, e os reinícios retomam dele instantaneamente). Nem uma chave revogada quebra nada: o SDK continua avaliando com o último ruleset que baixou até você entregar uma chave nova.