Skip to content

Chapter 1 · Get started

What is FluxGate

FluxGate separates deploying code from releasing a feature, and a few services make that work.

2:05 video

Before you start

Nothing to install. This page is a concept overview. You need no running instance to read it. To see the sidebar tour for yourself, finish Install and first boot first.

Deploy versus release

Deploying code and releasing a feature are two different events.

  • A deploy puts new code on your servers.
  • A release turns a feature on for users.

When both are the same event, every release is a deploy and every rollback is a redeploy. FluxGate separates them. You ship the code behind a feature flag, switched off. Later you release the feature from the admin UI: to a few users first, then to more, with approvals along the way. If something goes wrong, you switch the flag off. No new deploy is needed.

The services

A FluxGate installation has four parts that matter to you:

  • Admin UI. You work here. You model features, pipelines and approvals, and you read dashboards.
  • Backend. It stores everything in PostgreSQL and serves the REST API that the UI uses. It also serves a WebSocket for live updates and a gRPC stream for edge servers.
  • Edge server. It keeps a cached copy of the feature set that the backend streams to it. It answers evaluations from that cache, so your apps get fast answers close to where they run.
  • Your app. It asks the edge server for a flag value through an SDK or plain HTTP. Your app never calls the backend to evaluate a flag.
FluxGate components and how they connectPeople open the Admin UI, a browser app served by the UI server. It calls the backend over REST and WebSocket straight from the browser. The backend stores data in PostgreSQL and streams the feature set to edge servers over gRPC. Your apps evaluate flags on the edge server over OFREP; the edge sends evaluation events back to the backend in batches. Apps can also post metric events to the backend. CI jobs call the backend with a scoped token. Jira Cloud, an OIDC provider and TypeSafe Jev connect to the backend when you turn them on.YOUR SIDEFLUXGATEOPTIONALAdmin browserpeopleYour appsSDK or HTTPCI jobsscoped tokenAdmin UI:3000Edge server:8081 OFREPin-memory cacheBackend:8080 REST + WebSocket:50051 gRPCPostgreSQLflags, users, analyticsJira Cloudstatus changesOIDC providersingle sign-onTypeSafe JevAI judgmentsopens the appREST + WebSocketOFREPREST + tokengRPC streamevaluationeventsSQL
The Admin UI runs in the browser and calls the backend directly, so the backend address must be reachable from your browser. Your apps evaluate flags only on the edge server. The backend is the source of truth: it stores everything in PostgreSQL and streams the feature set to every edge server over gRPC. Evaluation events flow back to the backend in batches for the dashboards. Apps can also post metric events straight to the backend for experiments. Dashed boxes are optional integrations.

Evaluations flow from your app to the edge server. Telemetry about those evaluations flows back to the backend, and the dashboards show it.

Default ports in the demo stack

ServicePortProtocolPublished to your machine
Admin UI3000HTTPyes
Backend REST and Swagger UI8080HTTPyes
Backend gRPC50051gRPCno, edge reaches it over the Docker network
Edge server8081HTTPyes, after you start it
PostgreSQL5433PostgreSQLyes, mapped to 5432 in the container

The UI calls the backend directly from your browser. That is why port 8080 must be reachable from the browser as well as from the other containers.

A tour of the sidebar

Sign in to the UI and the sidebar shows five groups. The Settings group appears only for users with team management access, so sign in as admin System admin to see all five.

GroupWhat it holds
ObserveDashboards for evaluations, metrics and audit activity
BuildFeatures, pipelines, contexts and environments: where you model a release
ConnectThe clients that evaluate flags, and integrations
GovernApprovals, approval policies and freeze windows: the controls that keep a release safe
SettingsTeams, users, roles and the rest of the admin setup

The story in this guide

The guide follows Juniper Market, an online grocery. The Checkout team wants to ship a one-tap flow called express-checkout. Plus users in Canada get it first. Then a gradual split opens it to everyone else, and a second person approves each step. Every chapter builds one part of that release.

Next

Run FluxGate on your own machine in Install and first boot.